[PATCH] D28465: clang-format: [JS] ASI after imports
Martin Probst via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Mon Jan 9 01:07:34 PST 2017
This revision was automatically updated to reflect the committed changes.
Closed by commit rL291428: clang-format: [JS] ASI after imports (authored by mprobst).
Changed prior to commit:
https://reviews.llvm.org/D28465?vs=83593&id=83594#toc
Repository:
rL LLVM
https://reviews.llvm.org/D28465
Files:
cfe/trunk/lib/Format/UnwrappedLineParser.cpp
cfe/trunk/unittests/Format/FormatTestJS.cpp
Index: cfe/trunk/lib/Format/UnwrappedLineParser.cpp
===================================================================
--- cfe/trunk/lib/Format/UnwrappedLineParser.cpp
+++ cfe/trunk/lib/Format/UnwrappedLineParser.cpp
@@ -737,17 +737,18 @@
return;
}
if (Next->is(tok::exclaim) && PreviousMustBeValue)
- addUnwrappedLine();
+ return addUnwrappedLine();
bool NextMustBeValue = mustBeJSIdentOrValue(Keywords, Next);
bool NextEndsTemplateExpr =
Next->is(TT_TemplateString) && Next->TokenText.startswith("}");
if (NextMustBeValue && !NextEndsTemplateExpr && !PreviousStartsTemplateExpr &&
(PreviousMustBeValue ||
Previous->isOneOf(tok::r_square, tok::r_paren, tok::plusplus,
tok::minusminus)))
- addUnwrappedLine();
- if (PreviousMustBeValue && isJSDeclOrStmt(Keywords, Next))
- addUnwrappedLine();
+ return addUnwrappedLine();
+ if ((PreviousMustBeValue || Previous->is(tok::r_brace)) &&
+ isJSDeclOrStmt(Keywords, Next))
+ return addUnwrappedLine();
}
void UnwrappedLineParser::parseStructuralElement() {
@@ -1974,7 +1975,14 @@
!FormatTok->isStringLiteral())
return;
- while (!eof() && FormatTok->isNot(tok::semi)) {
+ while (!eof()) {
+ if (FormatTok->is(tok::semi))
+ return;
+ if (Line->Tokens.size() == 0) {
+ // Common issue: Automatic Semicolon Insertion wrapped the line, so the
+ // import statement should terminate.
+ return;
+ }
if (FormatTok->is(tok::l_brace)) {
FormatTok->BlockKind = BK_Block;
parseBracedList();
Index: cfe/trunk/unittests/Format/FormatTestJS.cpp
===================================================================
--- cfe/trunk/unittests/Format/FormatTestJS.cpp
+++ cfe/trunk/unittests/Format/FormatTestJS.cpp
@@ -858,6 +858,24 @@
"return 1",
"a = null\n"
" return 1");
+ verifyFormat(
+ "x = {a: 1}\n"
+ "class Y {}",
+ " x = {a : 1}\n"
+ " class Y { }");
+}
+
+TEST_F(FormatTestJS, ImportExportASI) {
+ verifyFormat(
+ "import {x} from 'y'\n"
+ "export function z() {}",
+ "import {x} from 'y'\n"
+ " export function z() {}");
+ verifyFormat(
+ "export {x}\n"
+ "class Y {}",
+ " export {x}\n"
+ " class Y {\n}");
}
TEST_F(FormatTestJS, ClosureStyleCasts) {
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D28465.83594.patch
Type: text/x-patch
Size: 2384 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20170109/0d06c025/attachment.bin>
More information about the cfe-commits
mailing list