diff --git a/lib/Format/TokenAnnotator.cpp b/lib/Format/TokenAnnotator.cpp index c1fbf81e1199be1fe3ae2ba5fea9ade24acddd91..f68883da05baa9da6661eb748a3662fa11a713c0 100644 --- a/lib/Format/TokenAnnotator.cpp +++ b/lib/Format/TokenAnnotator.cpp @@ -903,7 +903,7 @@ private: return TT_UnaryOperator; const FormatToken *NextToken = Tok.getNextNonComment(); - if (!NextToken) + if (!NextToken || NextToken->is(tok::l_brace)) return TT_Unknown; if (PrevToken->is(tok::coloncolon) || diff --git a/unittests/Format/FormatTest.cpp b/unittests/Format/FormatTest.cpp index 75eea9827530114167ac12ae368eb7c611fcaf31..96274fc203111ba6da4f45f57c6e9b84df0f8e4e 100644 --- a/unittests/Format/FormatTest.cpp +++ b/unittests/Format/FormatTest.cpp @@ -4682,6 +4682,11 @@ TEST_F(FormatTest, UnderstandsOverloadedOperators) { verifyFormat("Deleted &operator=(const Deleted &)&& = delete;"); verifyGoogleFormat("Deleted& operator=(const Deleted&)& = default;"); verifyGoogleFormat("Deleted& operator=(const Deleted&)&& = delete;"); + + verifyFormat("string // break\n" + "operator()() & {}"); + verifyFormat("string // break\n" + "operator()() && {}"); } TEST_F(FormatTest, UnderstandsNewAndDelete) {