[clang-format] Correctly handle SpaceBeforeParens for builtins.
That's a partial fix for https://github.com/llvm/llvm-project/issues/55292. Before, known builtins behaved differently from other identifiers: ``` void f () { return F (__builtin_LINE() + __builtin_FOO ()); } ``` After: ``` void f () { return F (__builtin_LINE () + __builtin_FOO ()); } ``` Reviewed By: owenpan Differential Revision: https://reviews.llvm.org/D125085
This commit is contained in:
parent
91b24b0180
commit
85ec8a9ac1
|
@ -3436,9 +3436,9 @@ bool TokenAnnotator::spaceRequiredBetween(const AnnotatedLine &Line,
|
|||
return (Style.SpaceBeforeParens != FormatStyle::SBPO_Never) ||
|
||||
spaceRequiredBeforeParens(Right);
|
||||
}
|
||||
// Handle builtins like identifiers.
|
||||
if (Line.Type != LT_PreprocessorDirective &&
|
||||
(Left.is(tok::identifier) || Left.isFunctionLikeKeyword() ||
|
||||
Left.is(tok::r_paren) || Left.isSimpleTypeSpecifier()))
|
||||
(Left.Tok.getIdentifierInfo() || Left.is(tok::r_paren)))
|
||||
return spaceRequiredBeforeParens(Right);
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -15082,6 +15082,9 @@ TEST_F(FormatTest, ConfigurableSpaceBeforeParens) {
|
|||
// verifyFormat("X A::operator++ (T);", Space);
|
||||
verifyFormat("auto lambda = [] () { return 0; };", Space);
|
||||
verifyFormat("int x = int (y);", Space);
|
||||
verifyFormat("#define F(...) __VA_OPT__ (__VA_ARGS__)", Space);
|
||||
verifyFormat("__builtin_LINE ()", Space);
|
||||
verifyFormat("__builtin_UNKNOWN ()", Space);
|
||||
|
||||
FormatStyle SomeSpace = getLLVMStyle();
|
||||
SomeSpace.SpaceBeforeParens = FormatStyle::SBPO_NonEmptyParentheses;
|
||||
|
|
Loading…
Reference in a new issue