The l_brace token in a macro definition should not be set to
TT_FunctionLBrace.
This patch could have fixed #42087.
Differential Revision: https://reviews.llvm.org/D118969
} else if (Style.BraceWrapping.AfterFunction) {
addUnwrappedLine();
}
- FormatTok->setType(TT_FunctionLBrace);
+ if (!Line->InPPDirective)
+ FormatTok->setType(TT_FunctionLBrace);
parseBlock();
addUnwrappedLine();
return;
EXPECT_TOKEN(Tokens[2], tok::l_brace, TT_RecordLBrace);
}
+TEST_F(TokenAnnotatorTest, UnderstandsLBracesInMacroDefinition) {
+ auto Tokens = annotate("#define BEGIN NS {");
+ EXPECT_EQ(Tokens.size(), 6u) << Tokens;
+ EXPECT_TOKEN(Tokens[4], tok::l_brace, TT_Unknown);
+}
+
} // namespace
} // namespace format
} // namespace clang