clang-format: [JS] fix non-null assertion operator recognition.
Summary: `getIdentifierInfo()` includes all keywords, whereas non-null assertion operators should only be recognized after non-keywords or pseudo keywords. Ideally this should list all tokens that clang-format recognizes as a keyword, but that are pseudo or no keywords in JS. For the time being, just recognize the specific bits users ran into (`namespace` in this case). Reviewers: djasper Subscribers: klimek Differential Revision: https://reviews.llvm.org/D33182 llvm-svn: 303038
This commit is contained in:
parent
89f9ad8636
commit
82b3d906bc
|
@ -1034,9 +1034,9 @@ private:
|
|||
if (Style.Language == FormatStyle::LK_JavaScript) {
|
||||
if (Current.is(tok::exclaim)) {
|
||||
if (Current.Previous &&
|
||||
(Current.Previous->Tok.getIdentifierInfo() ||
|
||||
Current.Previous->isOneOf(tok::identifier, tok::r_paren,
|
||||
tok::r_square, tok::r_brace) ||
|
||||
(Current.Previous->isOneOf(tok::identifier, tok::kw_namespace,
|
||||
tok::r_paren, tok::r_square,
|
||||
tok::r_brace) ||
|
||||
Current.Previous->Tok.isLiteral())) {
|
||||
Current.Type = TT_JsNonNullAssertion;
|
||||
return;
|
||||
|
|
|
@ -1800,6 +1800,7 @@ TEST_F(FormatTestJS, NonNullAssertionOperator) {
|
|||
" .foo()!;\n",
|
||||
getGoogleJSStyleWithColumns(20));
|
||||
verifyFormat("let x = namespace!;\n");
|
||||
verifyFormat("return !!x;\n");
|
||||
}
|
||||
|
||||
TEST_F(FormatTestJS, Conditional) {
|
||||
|
|
Loading…
Reference in New Issue