forked from OSchip/llvm-project
[clang-format] Fix bug that misses some function-like macro usages
Fixes PR41483 Differential Revision: https://reviews.llvm.org/D61297 llvm-svn: 359687
This commit is contained in:
parent
6711b9699a
commit
945890a63c
|
@ -1335,10 +1335,15 @@ void UnwrappedLineParser::parseStructuralElement() {
|
|||
// See if the following token should start a new unwrapped line.
|
||||
StringRef Text = FormatTok->TokenText;
|
||||
nextToken();
|
||||
if (Line->Tokens.size() == 1 &&
|
||||
// JS doesn't have macros, and within classes colons indicate fields,
|
||||
// not labels.
|
||||
Style.Language != FormatStyle::LK_JavaScript) {
|
||||
|
||||
// JS doesn't have macros, and within classes colons indicate fields, not
|
||||
// labels.
|
||||
if (Style.Language == FormatStyle::LK_JavaScript)
|
||||
break;
|
||||
|
||||
TokenCount = Line->Tokens.size();
|
||||
if (TokenCount == 1 ||
|
||||
(TokenCount == 2 && Line->Tokens.front().Tok->is(tok::comment))) {
|
||||
if (FormatTok->Tok.is(tok::colon) && !Line->MustBeDeclaration) {
|
||||
Line->Tokens.begin()->Tok->MustBreakBefore = true;
|
||||
parseLabel();
|
||||
|
|
|
@ -2584,6 +2584,12 @@ TEST_F(FormatTest, MacrosWithoutTrailingSemicolon) {
|
|||
verifyFormat("VISIT_GL_CALL(GenBuffers, void, (GLsizei n, GLuint* buffers), "
|
||||
"(n, buffers))\n",
|
||||
getChromiumStyle(FormatStyle::LK_Cpp));
|
||||
|
||||
// See PR41483
|
||||
EXPECT_EQ("/**/ FOO(a)\n"
|
||||
"FOO(b)",
|
||||
format("/**/ FOO(a)\n"
|
||||
"FOO(b)"));
|
||||
}
|
||||
|
||||
TEST_F(FormatTest, MacroCallsWithoutTrailingSemicolon) {
|
||||
|
|
Loading…
Reference in New Issue