forked from OSchip/llvm-project
[clang-format] Handle typename macros inside cast expressions
Before: x = (STACK_OF(uint64_t)) & a; After: x = (STACK_OF(uint64_t))&a; Reviewed By: MyDeveloperDay Differential Revision: https://reviews.llvm.org/D86930
This commit is contained in:
parent
e7bd058c7e
commit
8aa3b8da5d
|
@ -102,6 +102,7 @@ namespace format {
|
|||
TYPE(TrailingReturnArrow) \
|
||||
TYPE(TrailingUnaryOperator) \
|
||||
TYPE(TypenameMacro) \
|
||||
TYPE(TypenameMacroParen) \
|
||||
TYPE(UnaryOperator) \
|
||||
TYPE(UntouchableMacroFunc) \
|
||||
TYPE(CSharpStringLiteral) \
|
||||
|
|
|
@ -244,6 +244,8 @@ private:
|
|||
Contexts.back().IsExpression = false;
|
||||
} else if (Left->Previous && Left->Previous->is(tok::kw___attribute)) {
|
||||
Left->setType(TT_AttributeParen);
|
||||
} else if (Left->Previous && Left->Previous->is(TT_TypenameMacro)) {
|
||||
Left->setType(TT_TypenameMacroParen);
|
||||
} else if (Left->Previous && Left->Previous->is(TT_ForEachMacro)) {
|
||||
// The first argument to a foreach macro is a declaration.
|
||||
Contexts.back().IsForEachMacro = true;
|
||||
|
@ -335,6 +337,8 @@ private:
|
|||
|
||||
if (Left->is(TT_AttributeParen))
|
||||
CurrentToken->setType(TT_AttributeParen);
|
||||
if (Left->is(TT_TypenameMacroParen))
|
||||
CurrentToken->setType(TT_TypenameMacroParen);
|
||||
if (Left->Previous && Left->Previous->is(TT_JavaAnnotation))
|
||||
CurrentToken->setType(TT_JavaAnnotation);
|
||||
if (Left->Previous && Left->Previous->is(TT_LeadingJavaAnnotation))
|
||||
|
@ -1855,9 +1859,11 @@ private:
|
|||
}
|
||||
return T && T->is(TT_PointerOrReference);
|
||||
};
|
||||
bool ParensAreType = !Tok.Previous || Tok.Previous->is(TT_TemplateCloser) ||
|
||||
Tok.Previous->isSimpleTypeSpecifier() ||
|
||||
IsQualifiedPointerOrReference(Tok.Previous);
|
||||
bool ParensAreType =
|
||||
!Tok.Previous ||
|
||||
Tok.Previous->isOneOf(TT_TemplateCloser, TT_TypenameMacroParen) ||
|
||||
Tok.Previous->isSimpleTypeSpecifier() ||
|
||||
IsQualifiedPointerOrReference(Tok.Previous);
|
||||
bool ParensCouldEndDecl =
|
||||
Tok.Next->isOneOf(tok::equal, tok::semi, tok::l_brace, tok::greater);
|
||||
if (ParensAreType && !ParensCouldEndDecl)
|
||||
|
|
|
@ -16557,6 +16557,8 @@ TEST_F(FormatTest, TypenameMacros) {
|
|||
Macros.PointerAlignment = FormatStyle::PAS_Left;
|
||||
verifyFormat("STACK_OF(int)* a;", Macros);
|
||||
verifyFormat("STACK_OF(int*)* a;", Macros);
|
||||
verifyFormat("x = (STACK_OF(uint64_t))*a;", Macros);
|
||||
verifyFormat("x = (STACK_OF(uint64_t))&a;", Macros);
|
||||
}
|
||||
|
||||
TEST_F(FormatTest, AmbersandInLamda) {
|
||||
|
|
Loading…
Reference in New Issue