This revision was automatically updated to reflect the committed changes. Closed by commit rG6de794e2074b: [clang-format] [PR46157] Wrong spacing of negative literals with use of operator (authored by MyDeveloperDay).
Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D80933/new/ https://reviews.llvm.org/D80933 Files: clang/lib/Format/TokenAnnotator.cpp clang/unittests/Format/FormatTest.cpp Index: clang/unittests/Format/FormatTest.cpp =================================================================== --- clang/unittests/Format/FormatTest.cpp +++ clang/unittests/Format/FormatTest.cpp @@ -16429,6 +16429,17 @@ verifyFormat("operator&&(int(&&)(), class Foo);", Style); } +TEST_F(FormatTest, OperatorPassedAsAFunctionPtr) { + FormatStyle Style = getLLVMStyle(); + // PR46157 + verifyFormat("foo(operator+, -42);", Style); + verifyFormat("foo(operator++, -42);", Style); + verifyFormat("foo(operator--, -42);", Style); + verifyFormat("foo(-42, operator--);", Style); + verifyFormat("foo(-42, operator, );", Style); + verifyFormat("foo(operator, , -42);", Style); +} + TEST_F(FormatTest, VeryLongNamespaceCommentSplit) { // These tests are not in NamespaceFixer because that doesn't // test its interaction with line wrapping Index: clang/lib/Format/TokenAnnotator.cpp =================================================================== --- clang/lib/Format/TokenAnnotator.cpp +++ clang/lib/Format/TokenAnnotator.cpp @@ -978,16 +978,18 @@ if (CurrentToken->isOneOf(tok::star, tok::amp)) CurrentToken->setType(TT_PointerOrReference); consumeToken(); + if (CurrentToken && CurrentToken->is(tok::comma) && + CurrentToken->Previous->isNot(tok::kw_operator)) + break; if (CurrentToken && CurrentToken->Previous->isOneOf( TT_BinaryOperator, TT_UnaryOperator, tok::comma, tok::star, tok::arrow, tok::amp, tok::ampamp)) CurrentToken->Previous->setType(TT_OverloadedOperator); } - if (CurrentToken) { + if (CurrentToken && CurrentToken->is(tok::l_paren)) CurrentToken->setType(TT_OverloadedOperatorLParen); - if (CurrentToken->Previous->is(TT_BinaryOperator)) - CurrentToken->Previous->setType(TT_OverloadedOperator); - } + if (CurrentToken && CurrentToken->Previous->is(TT_BinaryOperator)) + CurrentToken->Previous->setType(TT_OverloadedOperator); break; case tok::question: if (Tok->is(TT_CSharpNullConditionalLSquare)) {
Index: clang/unittests/Format/FormatTest.cpp =================================================================== --- clang/unittests/Format/FormatTest.cpp +++ clang/unittests/Format/FormatTest.cpp @@ -16429,6 +16429,17 @@ verifyFormat("operator&&(int(&&)(), class Foo);", Style); } +TEST_F(FormatTest, OperatorPassedAsAFunctionPtr) { + FormatStyle Style = getLLVMStyle(); + // PR46157 + verifyFormat("foo(operator+, -42);", Style); + verifyFormat("foo(operator++, -42);", Style); + verifyFormat("foo(operator--, -42);", Style); + verifyFormat("foo(-42, operator--);", Style); + verifyFormat("foo(-42, operator, );", Style); + verifyFormat("foo(operator, , -42);", Style); +} + TEST_F(FormatTest, VeryLongNamespaceCommentSplit) { // These tests are not in NamespaceFixer because that doesn't // test its interaction with line wrapping Index: clang/lib/Format/TokenAnnotator.cpp =================================================================== --- clang/lib/Format/TokenAnnotator.cpp +++ clang/lib/Format/TokenAnnotator.cpp @@ -978,16 +978,18 @@ if (CurrentToken->isOneOf(tok::star, tok::amp)) CurrentToken->setType(TT_PointerOrReference); consumeToken(); + if (CurrentToken && CurrentToken->is(tok::comma) && + CurrentToken->Previous->isNot(tok::kw_operator)) + break; if (CurrentToken && CurrentToken->Previous->isOneOf( TT_BinaryOperator, TT_UnaryOperator, tok::comma, tok::star, tok::arrow, tok::amp, tok::ampamp)) CurrentToken->Previous->setType(TT_OverloadedOperator); } - if (CurrentToken) { + if (CurrentToken && CurrentToken->is(tok::l_paren)) CurrentToken->setType(TT_OverloadedOperatorLParen); - if (CurrentToken->Previous->is(TT_BinaryOperator)) - CurrentToken->Previous->setType(TT_OverloadedOperator); - } + if (CurrentToken && CurrentToken->Previous->is(TT_BinaryOperator)) + CurrentToken->Previous->setType(TT_OverloadedOperator); break; case tok::question: if (Tok->is(TT_CSharpNullConditionalLSquare)) {
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits