forked from OSchip/llvm-project
clang-format: Fix */& detection for lambdas in macros.
Before: #define MACRO() [](A * a) { return 1; } After: #define MACRO() [](A *a) { return 1; } llvm-svn: 237109
This commit is contained in:
parent
5fc133e71e
commit
99b5a4648c
|
@ -125,16 +125,16 @@ private:
|
|||
Left->Previous->is(TT_BinaryOperator))) {
|
||||
// static_assert, if and while usually contain expressions.
|
||||
Contexts.back().IsExpression = true;
|
||||
} else if (Line.InPPDirective &&
|
||||
(!Left->Previous ||
|
||||
!Left->Previous->isOneOf(tok::identifier,
|
||||
TT_OverloadedOperator))) {
|
||||
Contexts.back().IsExpression = true;
|
||||
} else if (Left->Previous && Left->Previous->is(tok::r_square) &&
|
||||
Left->Previous->MatchingParen &&
|
||||
Left->Previous->MatchingParen->is(TT_LambdaLSquare)) {
|
||||
// This is a parameter list of a lambda expression.
|
||||
Contexts.back().IsExpression = false;
|
||||
} else if (Line.InPPDirective &&
|
||||
(!Left->Previous ||
|
||||
!Left->Previous->isOneOf(tok::identifier,
|
||||
TT_OverloadedOperator))) {
|
||||
Contexts.back().IsExpression = true;
|
||||
} else if (Contexts[Contexts.size() - 2].CaretFound) {
|
||||
// This is the parameter list of an ObjC block.
|
||||
Contexts.back().IsExpression = false;
|
||||
|
|
|
@ -5473,6 +5473,7 @@ TEST_F(FormatTest, UnderstandsUsesOfStarAndAmp) {
|
|||
verifyFormat("auto PointerBinding = [](const char *S) {};");
|
||||
verifyFormat("typedef typeof(int(int, int)) *MyFunc;");
|
||||
verifyFormat("[](const decltype(*a) &value) {}");
|
||||
verifyFormat("#define MACRO() [](A *a) { return 1; }");
|
||||
verifyIndependentOfContext("typedef void (*f)(int *a);");
|
||||
verifyIndependentOfContext("int i{a * b};");
|
||||
verifyIndependentOfContext("aaa && aaa->f();");
|
||||
|
|
Loading…
Reference in New Issue