forked from OSchip/llvm-project
clang-format: [JS] Don't indent in goog.scope blocks.
Before: goog.scope(function() { var x = a.b; var y = c.d; }); // goog.scope After: goog.scope(function() { var x = a.b; var y = c.d; }); // goog.scope llvm-svn: 208088
This commit is contained in:
parent
0b397eaf93
commit
4a39c84c91
|
@ -415,16 +415,34 @@ void UnwrappedLineParser::parseBlock(bool MustBeDeclaration, bool AddLevel,
|
|||
Line->Level = InitialLevel;
|
||||
}
|
||||
|
||||
static bool IsGoogScope(const UnwrappedLine &Line) {
|
||||
if (Line.Tokens.size() < 4)
|
||||
return false;
|
||||
auto I = Line.Tokens.begin();
|
||||
if (I->Tok->TokenText != "goog")
|
||||
return false;
|
||||
++I;
|
||||
if (I->Tok->isNot(tok::period))
|
||||
return false;
|
||||
++I;
|
||||
if (I->Tok->TokenText != "scope")
|
||||
return false;
|
||||
++I;
|
||||
return I->Tok->is(tok::l_paren);
|
||||
}
|
||||
|
||||
void UnwrappedLineParser::parseChildBlock() {
|
||||
FormatTok->BlockKind = BK_Block;
|
||||
nextToken();
|
||||
{
|
||||
bool GoogScope =
|
||||
Style.Language == FormatStyle::LK_JavaScript && IsGoogScope(*Line);
|
||||
ScopedLineState LineState(*this);
|
||||
ScopedDeclarationState DeclarationState(*Line, DeclarationScopeStack,
|
||||
/*MustBeDeclaration=*/false);
|
||||
Line->Level += 1;
|
||||
Line->Level += GoogScope ? 0 : 1;
|
||||
parseLevel(/*HasOpeningBrace=*/true);
|
||||
Line->Level -= 1;
|
||||
Line->Level -= GoogScope ? 0 : 1;
|
||||
}
|
||||
nextToken();
|
||||
}
|
||||
|
|
|
@ -91,5 +91,12 @@ TEST_F(FormatTestJS, SingleQuoteStrings) {
|
|||
verifyFormat("this.function('', true);");
|
||||
}
|
||||
|
||||
TEST_F(FormatTestJS, GoogScopes) {
|
||||
verifyFormat("goog.scope(function() {\n"
|
||||
"var x = a.b;\n"
|
||||
"var y = c.d;\n"
|
||||
"}); // goog.scope");
|
||||
}
|
||||
|
||||
} // end namespace tooling
|
||||
} // end namespace clang
|
||||
|
|
Loading…
Reference in New Issue