Index: lib/Format/TokenAnnotator.cpp =================================================================== --- lib/Format/TokenAnnotator.cpp +++ lib/Format/TokenAnnotator.cpp @@ -386,7 +386,7 @@ bool StartsObjCMethodExpr = !CppArrayTemplates && Style.isCpp() && !IsCpp11AttributeSpecifier && Contexts.back().CanBeExpression && Left->isNot(TT_LambdaLSquare) && - CurrentToken->isNot(tok::l_brace) && + !CurrentToken->isOneOf(tok::l_brace, tok::r_square) && (!Parent || Parent->isOneOf(tok::colon, tok::l_square, tok::l_paren, tok::kw_return, tok::kw_throw) || Index: unittests/Format/FormatTest.cpp =================================================================== --- unittests/Format/FormatTest.cpp +++ unittests/Format/FormatTest.cpp @@ -6035,6 +6035,7 @@ PointerMiddle.PointerAlignment = FormatStyle::PAS_Middle; verifyFormat("delete *x;", PointerMiddle); verifyFormat("int * x;", PointerMiddle); + verifyFormat("int *[] x;", PointerMiddle); verifyFormat("template f() {}", PointerMiddle); verifyFormat("int * f(int * a) {}", PointerMiddle); verifyFormat("int main(int argc, char ** argv) {}", PointerMiddle); @@ -6042,7 +6043,7 @@ verifyFormat("A a;", PointerMiddle); verifyFormat("A a;", PointerMiddle); verifyFormat("A a;", PointerMiddle); - verifyFormat("A a;", PointerMiddle); + verifyFormat("A a;", PointerMiddle); verifyFormat("A = new SomeType *[Length]();", PointerMiddle); verifyFormat("A = new SomeType *[Length];", PointerMiddle); verifyFormat("T ** t = new T *;", PointerMiddle); @@ -12106,6 +12107,9 @@ FormatStyle::LK_ObjC, guessLanguage("foo.h", "#define MY_POINT_MAKE(x, y) CGPointMake((x), (y));\n")); + EXPECT_EQ( + FormatStyle::LK_Cpp, + guessLanguage("foo.h", "#define FOO(...) auto bar = [] __VA_ARGS__;")); } TEST_F(FormatTest, GuessLanguageWithCpp11AttributeSpecifiers) {