Skip to content
Snippets Groups Projects
Commit ffd5a34c authored by Martin Probst's avatar Martin Probst
Browse files

clang-format: [JS] no ASI on `import {x as\n y}`.

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
parent cd761902
No related branches found
No related tags found
No related merge requests found
...@@ -245,7 +245,7 @@ private: ...@@ -245,7 +245,7 @@ private:
SourceLocation SymbolsEnd = Reference.Symbols.back().Range.getEnd(); SourceLocation SymbolsEnd = Reference.Symbols.back().Range.getEnd();
Buffer += getSourceText(Reference.Range.getBegin(), SymbolsStart); Buffer += getSourceText(Reference.Range.getBegin(), SymbolsStart);
// ... then the references in order ... // ... 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()) if (I != Symbols.begin())
Buffer += ","; Buffer += ",";
Buffer += getSourceText(I->Range); Buffer += getSourceText(I->Range);
......
...@@ -668,11 +668,11 @@ static bool mustBeJSIdent(const AdditionalKeywords &Keywords, ...@@ -668,11 +668,11 @@ static bool mustBeJSIdent(const AdditionalKeywords &Keywords,
// FIXME: This returns true for C/C++ keywords like 'struct'. // FIXME: This returns true for C/C++ keywords like 'struct'.
return FormatTok->is(tok::identifier) && return FormatTok->is(tok::identifier) &&
(FormatTok->Tok.getIdentifierInfo() == nullptr || (FormatTok->Tok.getIdentifierInfo() == nullptr ||
!FormatTok->isOneOf(Keywords.kw_in, Keywords.kw_of, Keywords.kw_async, !FormatTok->isOneOf(Keywords.kw_in, Keywords.kw_of, Keywords.kw_as,
Keywords.kw_await, Keywords.kw_yield, Keywords.kw_async, Keywords.kw_await,
Keywords.kw_finally, Keywords.kw_function, Keywords.kw_yield, Keywords.kw_finally,
Keywords.kw_import, Keywords.kw_is, Keywords.kw_function, Keywords.kw_import,
Keywords.kw_let, Keywords.kw_var, Keywords.kw_is, Keywords.kw_let, Keywords.kw_var,
Keywords.kw_abstract, Keywords.kw_extends, Keywords.kw_abstract, Keywords.kw_extends,
Keywords.kw_implements, Keywords.kw_instanceof, Keywords.kw_implements, Keywords.kw_instanceof,
Keywords.kw_interface, Keywords.kw_throws)); Keywords.kw_interface, Keywords.kw_throws));
......
...@@ -1010,6 +1010,9 @@ TEST_F(FormatTestJS, Modules) { ...@@ -1010,6 +1010,9 @@ TEST_F(FormatTestJS, Modules) {
"} from 'some/module.js';"); "} from 'some/module.js';");
verifyFormat("import {X, Y,} from 'some/module.js';"); verifyFormat("import {X, Y,} from 'some/module.js';");
verifyFormat("import {X as myLocalX, Y as myLocalY} 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("import * as lib from 'some/module.js';");
verifyFormat("var x = {import: 1};\nx.import = 2;"); verifyFormat("var x = {import: 1};\nx.import = 2;");
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment