forked from OSchip/llvm-project
clang-format: [JS] ignore comments when wrapping returns.
Summary: When code contains a comment between `return` and the value: return /* lengthy comment here */ ( lengthyValueComesHere); Do not wrap before the comment, as that'd break the code through JS' automatic semicolon insertion. Reviewers: djasper Subscribers: klimek, cfe-commits Differential Revision: https://reviews.llvm.org/D24257 llvm-svn: 280730
This commit is contained in:
parent
5baa1c7641
commit
56ff7aaacb
|
@ -2381,7 +2381,12 @@ bool TokenAnnotator::canBreakBefore(const AnnotatedLine &Line,
|
|||
Keywords.kw_implements))
|
||||
return true;
|
||||
} else if (Style.Language == FormatStyle::LK_JavaScript) {
|
||||
if (Left.is(tok::kw_return))
|
||||
const FormatToken *NonComment = Right.getPreviousNonComment();
|
||||
if (Left.isOneOf(tok::kw_return, tok::kw_continue, tok::kw_break,
|
||||
tok::kw_throw) ||
|
||||
(NonComment &&
|
||||
NonComment->isOneOf(tok::kw_return, tok::kw_continue, tok::kw_break,
|
||||
tok::kw_throw)))
|
||||
return false; // Otherwise a semicolon is inserted.
|
||||
if (Left.is(TT_JsFatArrow) && Right.is(tok::l_brace))
|
||||
return false;
|
||||
|
|
|
@ -686,7 +686,9 @@ TEST_F(FormatTestJS, WrapRespectsAutomaticSemicolonInsertion) {
|
|||
// would change due to automatic semicolon insertion.
|
||||
// See http://www.ecma-international.org/ecma-262/5.1/#sec-7.9.1.
|
||||
verifyFormat("return aaaaa;", getGoogleJSStyleWithColumns(10));
|
||||
verifyFormat("return /* hello! */ aaaaa;", getGoogleJSStyleWithColumns(10));
|
||||
verifyFormat("continue aaaaa;", getGoogleJSStyleWithColumns(10));
|
||||
verifyFormat("continue /* hello! */ aaaaa;", getGoogleJSStyleWithColumns(10));
|
||||
verifyFormat("break aaaaa;", getGoogleJSStyleWithColumns(10));
|
||||
verifyFormat("throw aaaaa;", getGoogleJSStyleWithColumns(10));
|
||||
verifyFormat("aaaaaaaaa++;", getGoogleJSStyleWithColumns(10));
|
||||
|
|
Loading…
Reference in New Issue