summaryrefslogtreecommitdiffstats
path: root/clang
diff options
context:
space:
mode:
authorDaniel Jasper <djasper@google.com>2015-05-11 09:03:10 +0000
committerDaniel Jasper <djasper@google.com>2015-05-11 09:03:10 +0000
commit668c7bb34fba27525682888eb71fc1cdabc0ab96 (patch)
tree31bfb51565779b9ba882db4fa963471601d23ee7 /clang
parent0a8416fdefb0d023b9b591b04de302d4dbb7c555 (diff)
downloadbcm5719-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.cpp12
-rw-r--r--clang/unittests/Format/FormatTestJS.cpp6
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';");
OpenPOWER on IntegriCloud