mirror of
https://github.com/intel/llvm.git
synced 2026-01-22 07:01:03 +08:00
clang-format: [JS] whitespace after async in arrow functions.
Summary:
Async arrow functions should be marked with a whitespace after the async keyword, before the parameter list:
x = async () => foo();
Before:
x = async() => foo();
This makes it easier to tell apart an async arrow function from a call to a function called async.
Reviewers: bkramer
Subscribers: cfe-commits, klimek
Differential Revision: https://reviews.llvm.org/D30399
llvm-svn: 296330
This commit is contained in:
@@ -2220,6 +2220,14 @@ bool TokenAnnotator::spaceRequiredBefore(const AnnotatedLine &Line,
|
||||
} else if (Style.Language == FormatStyle::LK_JavaScript) {
|
||||
if (Left.is(TT_JsFatArrow))
|
||||
return true;
|
||||
if (Left.is(Keywords.kw_async) && Right.is(tok::l_paren) &&
|
||||
Right.MatchingParen) {
|
||||
const FormatToken *Next = Right.MatchingParen->getNextNonComment();
|
||||
// An async arrow function, for example: `x = async () => foo();`,
|
||||
// as opposed to calling a function called async: `x = async();`
|
||||
if (Next && Next->is(TT_JsFatArrow))
|
||||
return true;
|
||||
}
|
||||
if ((Left.is(TT_TemplateString) && Left.TokenText.endswith("${")) ||
|
||||
(Right.is(TT_TemplateString) && Right.TokenText.startswith("}")))
|
||||
return false;
|
||||
|
||||
@@ -463,6 +463,8 @@ TEST_F(FormatTestJS, AsyncFunctions) {
|
||||
verifyFormat("export async function f() {\n"
|
||||
" return fetch(x);\n"
|
||||
"}");
|
||||
verifyFormat("let x = async () => f();");
|
||||
verifyFormat("let x = async();");
|
||||
verifyFormat("class X {\n"
|
||||
" async asyncMethod() {\n"
|
||||
" return fetch(1);\n"
|
||||
|
||||
Reference in New Issue
Block a user