diff options
author | Martin Probst <martin@probst.io> | 2016-09-02 14:06:32 +0000 |
---|---|---|
committer | Martin Probst <martin@probst.io> | 2016-09-02 14:06:32 +0000 |
commit | 6918dcafe8ea256ae1ff0b51a95d4a5d076cd380 (patch) | |
tree | 1c1ea5c67fecf9e98e3ba8e91044740c3ccb372b /clang/lib/Format | |
parent | b480ffbcef2e0833b471d304861e20c2d6d9e963 (diff) | |
download | bcm5719-llvm-6918dcafe8ea256ae1ff0b51a95d4a5d076cd380.tar.gz bcm5719-llvm-6918dcafe8ea256ae1ff0b51a95d4a5d076cd380.zip |
clang-format: [JS] handle default bindings in imports.
Summary:
Default imports appear outside of named bindings in curly braces:
import A from 'a';
import A, {symbol} from 'a';
Reviewers: djasper
Subscribers: klimek, cfe-commits
Differential Revision: https://reviews.llvm.org/D23973
llvm-svn: 280486
Diffstat (limited to 'clang/lib/Format')
-rw-r--r-- | clang/lib/Format/SortJavaScriptImports.cpp | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/clang/lib/Format/SortJavaScriptImports.cpp b/clang/lib/Format/SortJavaScriptImports.cpp index 72da52bf16b..2a90e9ab760 100644 --- a/clang/lib/Format/SortJavaScriptImports.cpp +++ b/clang/lib/Format/SortJavaScriptImports.cpp @@ -346,7 +346,6 @@ private: if (!parseModuleBindings(Keywords, Reference)) return false; - nextToken(); if (Current->is(Keywords.kw_from)) { // imports have a 'from' clause, exports might not. @@ -389,19 +388,28 @@ private: if (Current->isNot(tok::identifier)) return false; Reference.Prefix = Current->TokenText; + nextToken(); return true; } bool parseNamedBindings(const AdditionalKeywords &Keywords, JsModuleReference &Reference) { + if (Current->is(tok::identifier)) { + nextToken(); + if (Current->is(Keywords.kw_from)) + return true; + if (Current->isNot(tok::comma)) + return false; + nextToken(); // eat comma. + } if (Current->isNot(tok::l_brace)) return false; // {sym as alias, sym2 as ...} from '...'; - nextToken(); - while (true) { + while (Current->isNot(tok::r_brace)) { + nextToken(); if (Current->is(tok::r_brace)) - return true; + break; if (Current->isNot(tok::identifier)) return false; @@ -422,12 +430,11 @@ private: Symbol.Range.setEnd(Current->Tok.getLocation()); Reference.Symbols.push_back(Symbol); - if (Current->is(tok::r_brace)) - return true; - if (Current->isNot(tok::comma)) + if (!Current->isOneOf(tok::r_brace, tok::comma)) return false; - nextToken(); } + nextToken(); // consume r_brace + return true; } }; |