r236978 - clang-format: [JS] Parse exported functions as free-standing.
Daniel Jasper
djasper at google.com
Mon May 11 02:03:10 PDT 2015
Author: djasper
Date: Mon May 11 04:03:10 2015
New Revision: 236978
URL: http://llvm.org/viewvc/llvm-project?rev=236978&view=rev
Log:
clang-format: [JS] Parse exported functions as free-standing.
Before:
export function foo() {} export function bar() {}
After:
export function foo() {
}
export function bar() {
}
Modified:
cfe/trunk/lib/Format/UnwrappedLineParser.cpp
cfe/trunk/unittests/Format/FormatTestJS.cpp
Modified: cfe/trunk/lib/Format/UnwrappedLineParser.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Format/UnwrappedLineParser.cpp?rev=236978&r1=236977&r2=236978&view=diff
==============================================================================
--- cfe/trunk/lib/Format/UnwrappedLineParser.cpp (original)
+++ cfe/trunk/lib/Format/UnwrappedLineParser.cpp Mon May 11 04:03:10 2015
@@ -1666,8 +1666,16 @@ void UnwrappedLineParser::parseJavaScrip
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)) {
Modified: cfe/trunk/unittests/Format/FormatTestJS.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/Format/FormatTestJS.cpp?rev=236978&r1=236977&r2=236978&view=diff
==============================================================================
--- cfe/trunk/unittests/Format/FormatTestJS.cpp (original)
+++ cfe/trunk/unittests/Format/FormatTestJS.cpp Mon May 11 04:03:10 2015
@@ -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';");
More information about the cfe-commits
mailing list