diff options
author | Daniel Jasper <djasper@google.com> | 2015-09-28 14:29:45 +0000 |
---|---|---|
committer | Daniel Jasper <djasper@google.com> | 2015-09-28 14:29:45 +0000 |
commit | ba52fcb7d519e6a9a8cefa578c28c867db12260e (patch) | |
tree | fb6b05ad81d9daab807a2f1119e054e83f782bf9 /clang/lib/Format | |
parent | 9f642f7d7aeefd4ce676c891ea462c0f32a5ed68 (diff) | |
download | bcm5719-llvm-ba52fcb7d519e6a9a8cefa578c28c867db12260e.tar.gz bcm5719-llvm-ba52fcb7d519e6a9a8cefa578c28c867db12260e.zip |
clang-format: [JS] Support pseudo-keywords
JavaScript allows keywords to appear in IdenfierName positions, e.g.
fields, or object literal members, but not as plain identifiers.
Patch by Martin Probst. Thank you!
llvm-svn: 248714
Diffstat (limited to 'clang/lib/Format')
-rw-r--r-- | clang/lib/Format/TokenAnnotator.cpp | 2 | ||||
-rw-r--r-- | clang/lib/Format/UnwrappedLineParser.cpp | 5 |
2 files changed, 6 insertions, 1 deletions
diff --git a/clang/lib/Format/TokenAnnotator.cpp b/clang/lib/Format/TokenAnnotator.cpp index 068f9727b89..a569f6c56b0 100644 --- a/clang/lib/Format/TokenAnnotator.cpp +++ b/clang/lib/Format/TokenAnnotator.cpp @@ -374,7 +374,7 @@ private: FormatToken *Previous = CurrentToken->getPreviousNonComment(); if ((CurrentToken->is(tok::colon) || Style.Language == FormatStyle::LK_Proto) && - Previous->is(tok::identifier)) + Previous->Tok.getIdentifierInfo()) Previous->Type = TT_SelectorName; if (CurrentToken->is(tok::colon) || Style.Language == FormatStyle::LK_JavaScript) diff --git a/clang/lib/Format/UnwrappedLineParser.cpp b/clang/lib/Format/UnwrappedLineParser.cpp index d8301e69612..08115036cdf 100644 --- a/clang/lib/Format/UnwrappedLineParser.cpp +++ b/clang/lib/Format/UnwrappedLineParser.cpp @@ -844,6 +844,11 @@ void UnwrappedLineParser::parseStructuralElement() { if (Style.Language == FormatStyle::LK_Java && FormatTok && FormatTok->is(tok::kw_class)) nextToken(); + if (Style.Language == FormatStyle::LK_JavaScript && FormatTok && + FormatTok->Tok.getIdentifierInfo()) + // JavaScript only has pseudo keywords, all keywords are allowed to + // appear in "IdentifierName" positions. See http://es5.github.io/#x7.6 + nextToken(); break; case tok::semi: nextToken(); |