Author: Owen Pan Date: 2023-10-03T18:19:23-07:00 New Revision: d08fcc817eba7f0186620688eee73f6d25fa90e8
URL: https://github.com/llvm/llvm-project/commit/d08fcc817eba7f0186620688eee73f6d25fa90e8 DIFF: https://github.com/llvm/llvm-project/commit/d08fcc817eba7f0186620688eee73f6d25fa90e8.diff LOG: Revert "[clang-format] Annotate ctors/dtors as CtorDtorDeclName instead (#67955)" This reverts commit 6a621ed8e4cb02bd55fe4a4a0254615576b70a55 as it caused buildbots to fail. Added: Modified: clang/lib/Format/FormatToken.h clang/lib/Format/TokenAnnotator.cpp clang/lib/Format/WhitespaceManager.cpp clang/unittests/Format/FormatTest.cpp clang/unittests/Format/FormatTestMacroExpansion.cpp clang/unittests/Format/TokenAnnotatorTest.cpp Removed: ################################################################################ diff --git a/clang/lib/Format/FormatToken.h b/clang/lib/Format/FormatToken.h index 5877b0a6124742a..dbd3a6e70f037ef 100644 --- a/clang/lib/Format/FormatToken.h +++ b/clang/lib/Format/FormatToken.h @@ -61,7 +61,6 @@ namespace format { TYPE(CSharpStringLiteral) \ TYPE(CtorInitializerColon) \ TYPE(CtorInitializerComma) \ - TYPE(CtorDtorDeclName) \ TYPE(DesignatedInitializerLSquare) \ TYPE(DesignatedInitializerPeriod) \ TYPE(DictLiteral) \ diff --git a/clang/lib/Format/TokenAnnotator.cpp b/clang/lib/Format/TokenAnnotator.cpp index e1c85d8a08fbf09..3ea65707da90369 100644 --- a/clang/lib/Format/TokenAnnotator.cpp +++ b/clang/lib/Format/TokenAnnotator.cpp @@ -3210,6 +3210,9 @@ static bool isCtorOrDtorName(const FormatToken *Tok) { } void TokenAnnotator::annotate(AnnotatedLine &Line) { + for (auto &Child : Line.Children) + annotate(*Child); + AnnotatingParser Parser(Style, Line, Keywords, Scopes); Line.Type = Parser.parseLine(); @@ -3230,7 +3233,7 @@ void TokenAnnotator::annotate(AnnotatedLine &Line) { auto *Tok = getFunctionName(Line); if (Tok && ((!Scopes.empty() && Scopes.back() == ST_Class) || Line.endsWith(TT_FunctionLBrace) || isCtorOrDtorName(Tok))) { - Tok->setFinalizedType(TT_CtorDtorDeclName); + Tok->setFinalizedType(TT_FunctionDeclarationName); } } @@ -3243,9 +3246,6 @@ void TokenAnnotator::annotate(AnnotatedLine &Line) { Line.First->SpacesRequiredBefore = 1; Line.First->CanBreakBefore = Line.First->MustBreakBefore; - - for (auto &Child : Line.Children) - annotate(*Child); } // This function heuristically determines whether 'Current' starts the name of a @@ -3447,13 +3447,9 @@ void TokenAnnotator::calculateFormattingInformation(AnnotatedLine &Line) const { Tok = Tok->Next) { if (Tok->Previous->EndsCppAttributeGroup) AfterLastAttribute = Tok; - if (const bool IsCtorOrDtor = Tok->is(TT_CtorDtorDeclName); - IsCtorOrDtor || - isFunctionDeclarationName(Style.isCpp(), *Tok, Line, ClosingParen)) { - if (!IsCtorOrDtor) { - LineIsFunctionDeclaration = true; - Tok->setFinalizedType(TT_FunctionDeclarationName); - } + if (isFunctionDeclarationName(Style.isCpp(), *Tok, Line, ClosingParen)) { + LineIsFunctionDeclaration = true; + Tok->setFinalizedType(TT_FunctionDeclarationName); if (AfterLastAttribute && mustBreakAfterAttributes(*AfterLastAttribute, Style)) { AfterLastAttribute->MustBreakBefore = true; diff --git a/clang/lib/Format/WhitespaceManager.cpp b/clang/lib/Format/WhitespaceManager.cpp index 9061e07add545b9..2cbde3da212ec65 100644 --- a/clang/lib/Format/WhitespaceManager.cpp +++ b/clang/lib/Format/WhitespaceManager.cpp @@ -975,7 +975,11 @@ void WhitespaceManager::alignConsecutiveDeclarations() { AlignTokens( Style, [](Change const &C) { - if (C.Tok->isOneOf(TT_FunctionDeclarationName, TT_FunctionTypeLParen)) + if (C.Tok->is(TT_FunctionDeclarationName) && C.Tok->Previous && + C.Tok->Previous->isNot(tok::tilde)) { + return true; + } + if (C.Tok->is(TT_FunctionTypeLParen)) return true; if (C.Tok->isNot(TT_StartOfName)) return false; diff --git a/clang/unittests/Format/FormatTest.cpp b/clang/unittests/Format/FormatTest.cpp index 2ef3c9b299bcad4..246de2f89fccc9d 100644 --- a/clang/unittests/Format/FormatTest.cpp +++ b/clang/unittests/Format/FormatTest.cpp @@ -10622,12 +10622,6 @@ TEST_F(FormatTest, WrapsAtNestedNameSpecifiers) { verifyFormat("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa::\n" " aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n" " .aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa();"); - - verifyFormat( - "LongClassNameToShowTheIssue::AndAnotherLongClassNameToShowTheIssue::\n" - " AndAnotherLongClassNameToShowTheIssue() {}\n" - "LongClassNameToShowTheIssue::AndAnotherLongClassNameToShowTheIssue::\n" - " ~AndAnotherLongClassNameToShowTheIssue() {}"); } TEST_F(FormatTest, UnderstandsTemplateParameters) { @@ -16345,7 +16339,7 @@ TEST_F(FormatTest, ConfigurableSpaceBeforeParens) { verifyFormat("int f();", SpaceFuncDef); verifyFormat("void f (int a, T b) {}", SpaceFuncDef); - verifyFormat("A::A() : a(1) {}", SpaceFuncDef); + verifyFormat("A::A () : a(1) {}", SpaceFuncDef); verifyFormat("void f() __attribute__((asdf));", SpaceFuncDef); verifyFormat("#define A(x) x", SpaceFuncDef); verifyFormat("#define A (x) x", SpaceFuncDef); @@ -16370,7 +16364,7 @@ TEST_F(FormatTest, ConfigurableSpaceBeforeParens) { // verifyFormat("T A::operator() () {}", SpaceFuncDef); verifyFormat("auto lambda = [] () { return 0; };", SpaceFuncDef); verifyFormat("int x = int(y);", SpaceFuncDef); - verifyFormat("M(std::size_t R, std::size_t C) : C(C), data(R) {}", + verifyFormat("M (std::size_t R, std::size_t C) : C(C), data(R) {}", SpaceFuncDef); FormatStyle SpaceIfMacros = getLLVMStyle(); diff --git a/clang/unittests/Format/FormatTestMacroExpansion.cpp b/clang/unittests/Format/FormatTestMacroExpansion.cpp index db6401cea9614fb..1ac5ac0d84f1251 100644 --- a/clang/unittests/Format/FormatTestMacroExpansion.cpp +++ b/clang/unittests/Format/FormatTestMacroExpansion.cpp @@ -47,7 +47,11 @@ TEST_F(FormatTestMacroExpansion, UnexpandConfiguredMacros) { { ID(a *b); }); )", Style); - verifyIncompleteFormat("ID3({, ID(a *b), ; });", Style); + verifyIncompleteFormat(R"(ID3({, ID(a *b), + ; + }); +)", + Style); verifyFormat("ID(CALL(CALL(return a * b;)));", Style); @@ -247,7 +251,9 @@ TEST_F(FormatTestMacroExpansion, ContinueFormattingAfterUnclosedParensAfterObjectLikeMacro) { FormatStyle Style = getLLVMStyle(); Style.Macros.push_back("O=class {"); - verifyIncompleteFormat("O(auto x = [](){f();}", Style); + verifyIncompleteFormat("O(auto x = [](){\n" + " f();}", + Style); } } // namespace diff --git a/clang/unittests/Format/TokenAnnotatorTest.cpp b/clang/unittests/Format/TokenAnnotatorTest.cpp index 62ec460eba7fd90..a8259543dc488c0 100644 --- a/clang/unittests/Format/TokenAnnotatorTest.cpp +++ b/clang/unittests/Format/TokenAnnotatorTest.cpp @@ -1631,77 +1631,65 @@ TEST_F(TokenAnnotatorTest, UnderstandsFunctionDeclarationNames) { ASSERT_EQ(Tokens.size(), 12u) << Tokens; EXPECT_TOKEN(Tokens[1], tok::identifier, TT_FunctionDeclarationName); - Tokens = annotate("#define FOO Foo::\n" - "FOO Foo();"); - ASSERT_EQ(Tokens.size(), 11u) << Tokens; - EXPECT_TOKEN(Tokens[6], tok::identifier, TT_FunctionDeclarationName); - - Tokens = annotate("struct Foo {\n" - " Bar (*func)();\n" - "};"); - ASSERT_EQ(Tokens.size(), 14u) << Tokens; - EXPECT_TOKEN(Tokens[3], tok::identifier, TT_Unknown); - EXPECT_TOKEN(Tokens[4], tok::l_paren, TT_FunctionTypeLParen); -} - -TEST_F(TokenAnnotatorTest, UnderstandsCtorAndDtorDeclNames) { - auto Tokens = annotate("class Foo { public: Foo(); };"); + Tokens = annotate("class Foo { public: Foo(); };"); ASSERT_EQ(Tokens.size(), 12u) << Tokens; - EXPECT_TOKEN(Tokens[5], tok::identifier, TT_CtorDtorDeclName); + EXPECT_TOKEN(Tokens[5], tok::identifier, TT_FunctionDeclarationName); Tokens = annotate("class Foo { public: ~Foo(); };"); ASSERT_EQ(Tokens.size(), 13u) << Tokens; - EXPECT_TOKEN(Tokens[6], tok::identifier, TT_CtorDtorDeclName); + EXPECT_TOKEN(Tokens[6], tok::identifier, TT_FunctionDeclarationName); Tokens = annotate("struct Foo { [[deprecated]] Foo() {} };"); ASSERT_EQ(Tokens.size(), 16u) << Tokens; - EXPECT_TOKEN(Tokens[8], tok::identifier, TT_CtorDtorDeclName); + EXPECT_TOKEN(Tokens[8], tok::identifier, TT_FunctionDeclarationName); EXPECT_TOKEN(Tokens[11], tok::l_brace, TT_FunctionLBrace); Tokens = annotate("struct Foo { [[deprecated]] ~Foo() {} };"); ASSERT_EQ(Tokens.size(), 17u) << Tokens; - EXPECT_TOKEN(Tokens[9], tok::identifier, TT_CtorDtorDeclName); + EXPECT_TOKEN(Tokens[9], tok::identifier, TT_FunctionDeclarationName); EXPECT_TOKEN(Tokens[12], tok::l_brace, TT_FunctionLBrace); Tokens = annotate("struct Foo { Foo() [[deprecated]] {} };"); ASSERT_EQ(Tokens.size(), 16u) << Tokens; - EXPECT_TOKEN(Tokens[3], tok::identifier, TT_CtorDtorDeclName); + EXPECT_TOKEN(Tokens[3], tok::identifier, TT_FunctionDeclarationName); EXPECT_TOKEN(Tokens[11], tok::l_brace, TT_FunctionLBrace); Tokens = annotate("struct Foo { ~Foo() [[deprecated]] {} };"); ASSERT_EQ(Tokens.size(), 17u) << Tokens; - EXPECT_TOKEN(Tokens[4], tok::identifier, TT_CtorDtorDeclName); + EXPECT_TOKEN(Tokens[4], tok::identifier, TT_FunctionDeclarationName); EXPECT_TOKEN(Tokens[12], tok::l_brace, TT_FunctionLBrace); Tokens = annotate("struct Foo { [[deprecated]] explicit Foo() {} };"); ASSERT_EQ(Tokens.size(), 17u) << Tokens; - EXPECT_TOKEN(Tokens[9], tok::identifier, TT_CtorDtorDeclName); + EXPECT_TOKEN(Tokens[9], tok::identifier, TT_FunctionDeclarationName); EXPECT_TOKEN(Tokens[12], tok::l_brace, TT_FunctionLBrace); Tokens = annotate("struct Foo { virtual [[deprecated]] ~Foo() {} };"); ASSERT_EQ(Tokens.size(), 18u) << Tokens; - EXPECT_TOKEN(Tokens[10], tok::identifier, TT_CtorDtorDeclName); + EXPECT_TOKEN(Tokens[10], tok::identifier, TT_FunctionDeclarationName); EXPECT_TOKEN(Tokens[13], tok::l_brace, TT_FunctionLBrace); Tokens = annotate("Foo::Foo() {}"); ASSERT_EQ(Tokens.size(), 8u) << Tokens; - EXPECT_TOKEN(Tokens[2], tok::identifier, TT_CtorDtorDeclName); + EXPECT_TOKEN(Tokens[2], tok::identifier, TT_FunctionDeclarationName); EXPECT_TOKEN(Tokens[5], tok::l_brace, TT_FunctionLBrace); Tokens = annotate("Foo::~Foo() {}"); ASSERT_EQ(Tokens.size(), 9u) << Tokens; - EXPECT_TOKEN(Tokens[3], tok::identifier, TT_CtorDtorDeclName); + EXPECT_TOKEN(Tokens[3], tok::identifier, TT_FunctionDeclarationName); EXPECT_TOKEN(Tokens[6], tok::l_brace, TT_FunctionLBrace); - Tokens = annotate("struct Test {\n" - " Test()\n" - " : l([] {\n" - " Short::foo();\n" - " }) {}\n" + Tokens = annotate("#define FOO Foo::\n" + "FOO Foo();"); + ASSERT_EQ(Tokens.size(), 11u) << Tokens; + EXPECT_TOKEN(Tokens[6], tok::identifier, TT_FunctionDeclarationName); + + Tokens = annotate("struct Foo {\n" + " Bar (*func)();\n" "};"); - ASSERT_EQ(Tokens.size(), 25u) << Tokens; - EXPECT_TOKEN(Tokens[3], tok::identifier, TT_CtorDtorDeclName); - EXPECT_TOKEN(Tokens[14], tok::identifier, TT_Unknown); + ASSERT_EQ(Tokens.size(), 14u) << Tokens; + EXPECT_TOKEN(Tokens[3], tok::identifier, TT_Unknown); + EXPECT_TOKEN(Tokens[4], tok::l_paren, TT_FunctionTypeLParen); } TEST_F(TokenAnnotatorTest, UnderstandsC11GenericSelection) { _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits