aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMehdi Amini <joker.eph@gmail.com>2024-06-22 14:18:59 +0200
committerGitHub <noreply@github.com>2024-06-22 14:18:59 +0200
commit34d44eb41dfbbbf01712719558b02763334fbeb3 (patch)
tree9af230530b5c31ce824afb78b27182d94763121e
parent4145ad2bac4bb99d5034d60c74bb2789f6c6e802 (diff)
downloadllvm-34d44eb41dfbbbf01712719558b02763334fbeb3.zip
llvm-34d44eb41dfbbbf01712719558b02763334fbeb3.tar.gz
llvm-34d44eb41dfbbbf01712719558b02763334fbeb3.tar.bz2
Revert "[clang-format] Don't count template template parameter as declaration" (#96388)
Reverts llvm/llvm-project#95025 ; many bots are broken
-rw-r--r--clang/lib/Format/TokenAnnotator.cpp30
-rw-r--r--clang/unittests/Format/TokenAnnotatorTest.cpp17
2 files changed, 11 insertions, 36 deletions
diff --git a/clang/lib/Format/TokenAnnotator.cpp b/clang/lib/Format/TokenAnnotator.cpp
index 89e1341..55c5ece 100644
--- a/clang/lib/Format/TokenAnnotator.cpp
+++ b/clang/lib/Format/TokenAnnotator.cpp
@@ -127,7 +127,7 @@ public:
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 @@ private:
}
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 @@ private:
// 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 d3b310f..12c4b7f 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");