diff --git a/clang/lib/Format/TokenAnnotator.cpp b/clang/lib/Format/TokenAnnotator.cpp index 2e97ffffbece..331776c59aa5 100644 --- a/clang/lib/Format/TokenAnnotator.cpp +++ b/clang/lib/Format/TokenAnnotator.cpp @@ -927,6 +927,8 @@ private: LeftOfParens->MatchingParen->is(TT_LambdaLSquare)) return false; if (Tok.Next) { + if (Tok.Next->is(tok::question)) + return false; if (Style.Language == FormatStyle::LK_JavaScript && Tok.Next->is(Keywords.kw_in)) return false; diff --git a/clang/unittests/Format/FormatTestJava.cpp b/clang/unittests/Format/FormatTestJava.cpp index e27e462ae768..99b25dc73420 100644 --- a/clang/unittests/Format/FormatTestJava.cpp +++ b/clang/unittests/Format/FormatTestJava.cpp @@ -289,6 +289,10 @@ TEST_F(FormatTestJava, Generics) { verifyFormat("private Foo[] foos;"); verifyFormat("Foo[] foos = this.foos;"); + verifyFormat("return (a instanceof List)\n" + " ? aaaaaaaaaaaaaaaaaaaaaaa(aaaaaaaaaaaaaaaaaaaaa)\n" + " : aaaaaaaaaaaaaaaaaaaaaaa;", + getStyleWithColumns(60)); verifyFormat( "SomeLoooooooooooooooooooooongType name =\n"