From: Daniel Jasper Date: Wed, 8 Jun 2016 08:23:46 +0000 (+0000) Subject: clang-format: Fix bug in function ref qualifier identification. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=6ae74bae68aa2640e88946fd3b10592a8df31ba8;p=clang clang-format: Fix bug in function ref qualifier identification. .. and simplify it. Before: void A::f()&& {} void f() && {} After: void A::f() && {} void f() && {} git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@272124 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Format/TokenAnnotator.cpp b/lib/Format/TokenAnnotator.cpp index a8b79b2212..2a5fe94e00 100644 --- a/lib/Format/TokenAnnotator.cpp +++ b/lib/Format/TokenAnnotator.cpp @@ -1989,10 +1989,7 @@ bool TokenAnnotator::spaceRequiredBetween(const AnnotatedLine &Line, if (Left.is(tok::l_square) && Right.is(tok::amp)) return false; if (Right.is(TT_PointerOrReference)) - return (Left.is(tok::r_paren) && Left.MatchingParen && - (Left.MatchingParen->is(TT_OverloadedOperatorLParen) || - (Left.MatchingParen->Previous && - Left.MatchingParen->Previous->is(TT_FunctionDeclarationName)))) || + return (Left.is(tok::r_paren) && Line.MightBeFunctionDecl) || (Left.Tok.isLiteral() || (!Left.isOneOf(TT_PointerOrReference, tok::l_paren) && (Style.PointerAlignment != FormatStyle::PAS_Left || diff --git a/unittests/Format/FormatTest.cpp b/unittests/Format/FormatTest.cpp index 09149f1d88..7491449b67 100644 --- a/unittests/Format/FormatTest.cpp +++ b/unittests/Format/FormatTest.cpp @@ -5629,6 +5629,7 @@ TEST_F(FormatTest, UnderstandsFunctionRefQualification) { FormatStyle AlignLeft = getLLVMStyle(); AlignLeft.PointerAlignment = FormatStyle::PAS_Left; + verifyFormat("void A::b() && {}", AlignLeft); verifyFormat("Deleted& operator=(const Deleted&) & = default;", AlignLeft); verifyFormat("SomeType MemberFunction(const Deleted&) & = delete;", AlignLeft);