]> granicus.if.org Git - clang/commitdiff
clang-format: [JS] no ASI on `import {x as\n y}`.
authorMartin Probst <martin@probst.io>
Wed, 1 Jun 2016 15:22:47 +0000 (15:22 +0000)
committerMartin Probst <martin@probst.io>
Wed, 1 Jun 2016 15:22:47 +0000 (15:22 +0000)
Summary: ASI did not handle the ES6 `as` operator correctly.

Reviewers: djasper

Subscribers: klimek, cfe-commits

Differential Revision: http://reviews.llvm.org/D20817

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@271401 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Format/SortJavaScriptImports.cpp
lib/Format/UnwrappedLineParser.cpp
unittests/Format/FormatTestJS.cpp

index a0484c862e90563e4353acbb1e4591d657416251..28c3ae9f6a8bd200f263774ab27d11c72c12e008 100644 (file)
@@ -245,7 +245,7 @@ private:
     SourceLocation SymbolsEnd = Reference.Symbols.back().Range.getEnd();
     Buffer += getSourceText(Reference.Range.getBegin(), SymbolsStart);
     // ... then the references in order ...
-    for (auto *I = Symbols.begin(), *E = Symbols.end(); I != E; ++I) {
+    for (auto I = Symbols.begin(), E = Symbols.end(); I != E; ++I) {
       if (I != Symbols.begin())
         Buffer += ",";
       Buffer += getSourceText(I->Range);
index 194a40e63fa3083243fdbf82b4dbb2608247cd60..18df7576ca22ce808bef8c98ce3de5e2a84d5e41 100644 (file)
@@ -668,11 +668,11 @@ static bool mustBeJSIdent(const AdditionalKeywords &Keywords,
   // FIXME: This returns true for C/C++ keywords like 'struct'.
   return FormatTok->is(tok::identifier) &&
          (FormatTok->Tok.getIdentifierInfo() == nullptr ||
-          !FormatTok->isOneOf(Keywords.kw_in, Keywords.kw_of, Keywords.kw_async,
-                              Keywords.kw_await, Keywords.kw_yield,
-                              Keywords.kw_finally, Keywords.kw_function,
-                              Keywords.kw_import, Keywords.kw_is,
-                              Keywords.kw_let, Keywords.kw_var,
+          !FormatTok->isOneOf(Keywords.kw_in, Keywords.kw_of, Keywords.kw_as,
+                              Keywords.kw_async, Keywords.kw_await,
+                              Keywords.kw_yield, Keywords.kw_finally,
+                              Keywords.kw_function, Keywords.kw_import,
+                              Keywords.kw_is, Keywords.kw_let, Keywords.kw_var,
                               Keywords.kw_abstract, Keywords.kw_extends,
                               Keywords.kw_implements, Keywords.kw_instanceof,
                               Keywords.kw_interface, Keywords.kw_throws));
index be6f960254574fc05243760034376a1d7d3678d1..f646b82c2135b56f0a5276127b30f792903cbaf8 100644 (file)
@@ -1010,6 +1010,9 @@ TEST_F(FormatTestJS, Modules) {
                "} from 'some/module.js';");
   verifyFormat("import {X, Y,} from 'some/module.js';");
   verifyFormat("import {X as myLocalX, Y as myLocalY} from 'some/module.js';");
+  // Ensure Automatic Semicolon Insertion does not break on "as\n".
+  verifyFormat("import {X as myX} from 'm';", "import {X as\n"
+                                              " myX} from 'm';");
   verifyFormat("import * as lib from 'some/module.js';");
   verifyFormat("var x = {import: 1};\nx.import = 2;");