forked from OSchip/llvm-project
clang-format: [JS] ASI insertion after boolean literals.
Summary: Before when a semicolon was missing after a boolean literal: a = true return 1; clang-format would parse this as one line and format as: a = true return 1; It turns out that C++ does not consider `true` and `false` to be literals, we have to check for that explicitly. Reviewers: djasper Subscribers: klimek, cfe-commits Differential Revision: https://reviews.llvm.org/D24574 llvm-svn: 281856
This commit is contained in:
parent
3f307518f8
commit
b9316ff849
|
@ -681,7 +681,9 @@ static bool mustBeJSIdent(const AdditionalKeywords &Keywords,
|
|||
|
||||
static bool mustBeJSIdentOrValue(const AdditionalKeywords &Keywords,
|
||||
const FormatToken *FormatTok) {
|
||||
return FormatTok->Tok.isLiteral() || mustBeJSIdent(Keywords, FormatTok);
|
||||
return FormatTok->Tok.isLiteral() ||
|
||||
FormatTok->isOneOf(tok::kw_true, tok::kw_false) ||
|
||||
mustBeJSIdent(Keywords, FormatTok);
|
||||
}
|
||||
|
||||
// isJSDeclOrStmt returns true if |FormatTok| starts a declaration or statement
|
||||
|
|
|
@ -774,6 +774,18 @@ TEST_F(FormatTestJS, AutomaticSemicolonInsertionHeuristic) {
|
|||
"String");
|
||||
verifyFormat("function f(@Foo bar) {}", "function f(@Foo\n"
|
||||
" bar) {}");
|
||||
verifyFormat("a = true\n"
|
||||
"return 1",
|
||||
"a = true\n"
|
||||
" return 1");
|
||||
verifyFormat("a = 's'\n"
|
||||
"return 1",
|
||||
"a = 's'\n"
|
||||
" return 1");
|
||||
verifyFormat("a = null\n"
|
||||
"return 1",
|
||||
"a = null\n"
|
||||
" return 1");
|
||||
}
|
||||
|
||||
TEST_F(FormatTestJS, ClosureStyleCasts) {
|
||||
|
|
Loading…
Reference in New Issue