[clang] Revert "[clang-format] Don't count template template parameter as declaration" (PR #96388)
Mehdi Amini via cfe-commits
cfe-commits at lists.llvm.org
Sat Jun 22 05:18:59 PDT 2024
https://github.com/joker-eph created https://github.com/llvm/llvm-project/pull/96388
Reverts llvm/llvm-project#95025 ; many bots are broken
>From b9ceb93bc8d7fe75365f0d9002ed8b48a0884c85 Mon Sep 17 00:00:00 2001
From: Mehdi Amini <joker.eph at gmail.com>
Date: Sat, 22 Jun 2024 14:18:31 +0200
Subject: [PATCH] =?UTF-8?q?Revert=20"[clang-format]=20Don't=20count=20temp?=
=?UTF-8?q?late=20template=20parameter=20as=20declaration=E2=80=A6"?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This reverts commit 4a7bf42a9b83144db8a11ac06cce4da21166e6a2.
---
clang/lib/Format/TokenAnnotator.cpp | 30 +++++++------------
clang/unittests/Format/TokenAnnotatorTest.cpp | 17 -----------
2 files changed, 11 insertions(+), 36 deletions(-)
diff --git a/clang/lib/Format/TokenAnnotator.cpp b/clang/lib/Format/TokenAnnotator.cpp
index 89e134144d433..55c5ecee45e0c 100644
--- a/clang/lib/Format/TokenAnnotator.cpp
+++ b/clang/lib/Format/TokenAnnotator.cpp
@@ -127,7 +127,7 @@ class AnnotatingParser {
SmallVector<ScopeType> &Scopes)
: Style(Style), Line(Line), CurrentToken(Line.First), AutoFound(false),
IsCpp(Style.isCpp()), LangOpts(getFormattingLangOpts(Style)),
- Keywords(Keywords), Scopes(Scopes), TemplateDeclarationDepth(0) {
+ Keywords(Keywords), Scopes(Scopes) {
assert(IsCpp == LangOpts.CXXOperatorNames);
Contexts.push_back(Context(tok::unknown, 1, /*IsExpression=*/false));
resetTokenMetadata();
@@ -1266,22 +1266,16 @@ class AnnotatingParser {
}
bool parseTemplateDeclaration() {
- if (!CurrentToken || CurrentToken->isNot(tok::less))
- return false;
-
- CurrentToken->setType(TT_TemplateOpener);
- next();
-
- TemplateDeclarationDepth++;
- const bool WellFormed = parseAngle();
- TemplateDeclarationDepth--;
- if (!WellFormed)
- return false;
-
- if (CurrentToken && TemplateDeclarationDepth == 0)
- CurrentToken->Previous->ClosesTemplateDeclaration = true;
-
- return true;
+ if (CurrentToken && CurrentToken->is(tok::less)) {
+ CurrentToken->setType(TT_TemplateOpener);
+ next();
+ if (!parseAngle())
+ return false;
+ if (CurrentToken)
+ CurrentToken->Previous->ClosesTemplateDeclaration = true;
+ return true;
+ }
+ return false;
}
bool consumeToken() {
@@ -3097,8 +3091,6 @@ class AnnotatingParser {
// same decision irrespective of the decisions for tokens leading up to it.
// Store this information to prevent this from causing exponential runtime.
llvm::SmallPtrSet<FormatToken *, 16> NonTemplateLess;
-
- int TemplateDeclarationDepth;
};
static const int PrecedenceUnaryOperator = prec::PointerToMember + 1;
diff --git a/clang/unittests/Format/TokenAnnotatorTest.cpp b/clang/unittests/Format/TokenAnnotatorTest.cpp
index d3b310fe59527..12c4b7fdd5ac2 100644
--- a/clang/unittests/Format/TokenAnnotatorTest.cpp
+++ b/clang/unittests/Format/TokenAnnotatorTest.cpp
@@ -584,23 +584,6 @@ TEST_F(TokenAnnotatorTest, UnderstandsNonTemplateAngleBrackets) {
EXPECT_TOKEN(Tokens[20], tok::greater, TT_BinaryOperator);
}
-TEST_F(TokenAnnotatorTest, UnderstandsTemplateTemplateParameters) {
- auto Tokens = annotate("template <template <typename...> typename X,\n"
- " template <typename...> class Y,\n"
- " typename... T>\n"
- "class A {};");
- ASSERT_EQ(Tokens.size(), 28u) << Tokens;
- EXPECT_TOKEN(Tokens[1], tok::less, TT_TemplateOpener);
- EXPECT_TOKEN(Tokens[3], tok::less, TT_TemplateOpener);
- EXPECT_TOKEN(Tokens[6], tok::greater, TT_TemplateCloser);
- EXPECT_FALSE(Tokens[6]->ClosesTemplateDeclaration);
- EXPECT_TOKEN(Tokens[11], tok::less, TT_TemplateOpener);
- EXPECT_TOKEN(Tokens[14], tok::greater, TT_TemplateCloser);
- EXPECT_FALSE(Tokens[14]->ClosesTemplateDeclaration);
- EXPECT_TOKEN(Tokens[21], tok::greater, TT_TemplateCloser);
- EXPECT_TRUE(Tokens[21]->ClosesTemplateDeclaration);
-}
-
TEST_F(TokenAnnotatorTest, UnderstandsWhitespaceSensitiveMacros) {
FormatStyle Style = getLLVMStyle();
Style.WhitespaceSensitiveMacros.push_back("FOO");
More information about the cfe-commits
mailing list