diff options
| author | Daniel Jasper <djasper@google.com> | 2015-05-11 09:03:10 +0000 |
|---|---|---|
| committer | Daniel Jasper <djasper@google.com> | 2015-05-11 09:03:10 +0000 |
| commit | 668c7bb34fba27525682888eb71fc1cdabc0ab96 (patch) | |
| tree | 31bfb51565779b9ba882db4fa963471601d23ee7 /clang | |
| parent | 0a8416fdefb0d023b9b591b04de302d4dbb7c555 (diff) | |
| download | bcm5719-llvm-668c7bb34fba27525682888eb71fc1cdabc0ab96.tar.gz bcm5719-llvm-668c7bb34fba27525682888eb71fc1cdabc0ab96.zip | |
clang-format: [JS] Parse exported functions as free-standing.
Before:
export function foo() {} export function bar() {}
After:
export function foo() {
}
export function bar() {
}
llvm-svn: 236978
Diffstat (limited to 'clang')
| -rw-r--r-- | clang/lib/Format/UnwrappedLineParser.cpp | 12 | ||||
| -rw-r--r-- | clang/unittests/Format/FormatTestJS.cpp | 6 |
2 files changed, 16 insertions, 2 deletions
diff --git a/clang/lib/Format/UnwrappedLineParser.cpp b/clang/lib/Format/UnwrappedLineParser.cpp index a85d9c77316..437d688dc57 100644 --- a/clang/lib/Format/UnwrappedLineParser.cpp +++ b/clang/lib/Format/UnwrappedLineParser.cpp @@ -1666,8 +1666,16 @@ void UnwrappedLineParser::parseJavaScriptEs6ImportExport() { assert(FormatTok->isOneOf(Keywords.kw_import, tok::kw_export)); nextToken(); - if (FormatTok->isOneOf(tok::kw_const, tok::kw_class, Keywords.kw_function, - Keywords.kw_var)) + // Consume "function" and "default function", so that these get parsed as + // free-standing JS functions, i.e. do not require a trailing semicolon. + if (FormatTok->is(tok::kw_default)) + nextToken(); + if (FormatTok->is(Keywords.kw_function)) { + nextToken(); + return; + } + + if (FormatTok->isOneOf(tok::kw_const, tok::kw_class, Keywords.kw_var)) return; // Fall through to parsing the corresponding structure. if (FormatTok->is(tok::kw_default)) { diff --git a/clang/unittests/Format/FormatTestJS.cpp b/clang/unittests/Format/FormatTestJS.cpp index 7494bccea5e..41ffbedea74 100644 --- a/clang/unittests/Format/FormatTestJS.cpp +++ b/clang/unittests/Format/FormatTestJS.cpp @@ -600,6 +600,12 @@ TEST_F(FormatTestJS, Modules) { verifyFormat("export function fn() {\n" " return 'fn';\n" "}"); + verifyFormat("export function A() {\n" + "}\n" + "export default function B() {\n" + "}\n" + "export function C() {\n" + "}"); verifyFormat("export const x = 12;"); verifyFormat("export default class X {}"); verifyFormat("export {X, Y} from 'some/module.js';"); |

