forked from OSchip/llvm-project
clang-format: [JS] for await, and fix a crash with for loops.
Summary: The syntax is actually `for await (const x of y)` (d'oh). This also fixes a crash for `for` tokens not followed by additional tokens. Reviewers: djasper Subscribers: cfe-commits, klimek Differential Revision: https://reviews.llvm.org/D33329 llvm-svn: 303382
This commit is contained in:
parent
5e456b943a
commit
a050f41c3c
|
@ -579,8 +579,8 @@ private:
|
|||
if (Style.Language == FormatStyle::LK_JavaScript)
|
||||
if (Tok->Previous && Tok->Previous->is(tok::period))
|
||||
break;
|
||||
// JS' for async ( ...
|
||||
if (CurrentToken->is(Keywords.kw_async))
|
||||
// JS' for await ( ...
|
||||
if (CurrentToken && CurrentToken->is(Keywords.kw_await))
|
||||
next();
|
||||
Contexts.back().ColonIsForRangeExpr = true;
|
||||
next();
|
||||
|
@ -2252,8 +2252,8 @@ bool TokenAnnotator::spaceRequiredBefore(const AnnotatedLine &Line,
|
|||
} else if (Style.Language == FormatStyle::LK_JavaScript) {
|
||||
if (Left.is(TT_JsFatArrow))
|
||||
return true;
|
||||
// for async ( ...
|
||||
if (Right.is(tok::l_paren) && Left.is(Keywords.kw_async) &&
|
||||
// for await ( ...
|
||||
if (Right.is(tok::l_paren) && Left.is(Keywords.kw_await) &&
|
||||
Left.Previous && Left.Previous->is(tok::kw_for))
|
||||
return true;
|
||||
if (Left.is(Keywords.kw_async) && Right.is(tok::l_paren) &&
|
||||
|
|
|
@ -1636,9 +1636,9 @@ void UnwrappedLineParser::parseForOrWhileLoop() {
|
|||
assert(FormatTok->isOneOf(tok::kw_for, tok::kw_while, TT_ForEachMacro) &&
|
||||
"'for', 'while' or foreach macro expected");
|
||||
nextToken();
|
||||
// JS' for async ( ...
|
||||
// JS' for await ( ...
|
||||
if (Style.Language == FormatStyle::LK_JavaScript &&
|
||||
FormatTok->is(Keywords.kw_async))
|
||||
FormatTok->is(Keywords.kw_await))
|
||||
nextToken();
|
||||
if (FormatTok->Tok.is(tok::l_paren))
|
||||
parseParens();
|
||||
|
|
|
@ -548,15 +548,14 @@ TEST_F(FormatTestJS, AsyncFunctions) {
|
|||
" // Comment.\n"
|
||||
" return async.then();\n"
|
||||
"}\n");
|
||||
verifyFormat("for async (const x of y) {\n"
|
||||
verifyFormat("for await (const x of y) {\n"
|
||||
" console.log(x);\n"
|
||||
"}\n");
|
||||
verifyFormat("function asyncLoop() {\n"
|
||||
" for async (const x of y) {\n"
|
||||
" for await (const x of y) {\n"
|
||||
" console.log(x);\n"
|
||||
" }\n"
|
||||
"}\n");
|
||||
|
||||
}
|
||||
|
||||
TEST_F(FormatTestJS, FunctionParametersTrailingComma) {
|
||||
|
|
Loading…
Reference in New Issue