[clang] [clang] fix broken canonicalization of DeducedTemplateSpecializationType (PR #95202)

NAKAMURA Takumi via cfe-commits cfe-commits at lists.llvm.org
Wed Jun 12 23:07:02 PDT 2024


================
@@ -0,0 +1,73 @@
+//===- unittests/AST/ProfilingTest.cpp --- Tests for Profiling ------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include "clang/AST/ASTContext.h"
+#include "clang/ASTMatchers/ASTMatchFinder.h"
+#include "clang/ASTMatchers/ASTMatchers.h"
+#include "clang/Tooling/Tooling.h"
+#include "gtest/gtest.h"
+#include <utility>
+
+namespace clang {
+namespace {
+using namespace ast_matchers;
+
+static auto getClassTemplateRedecls() {
+  std::string Code = R"cpp(
+    template <class> struct A;
+    template <class> struct A;
+    template <class> struct A;
+  )cpp";
+  auto AST = tooling::buildASTFromCode(Code);
+  ASTContext &Ctx = AST->getASTContext();
+
+  auto MatchResults = match(classTemplateDecl().bind("id"), Ctx);
+  SmallVector<ClassTemplateDecl *, 3> Res;
+  for (BoundNodes &N : MatchResults) {
+    if (auto *CTD = const_cast<ClassTemplateDecl *>(
+            N.getNodeAs<ClassTemplateDecl>("id")))
+      Res.push_back(CTD);
+  }
+  assert(Res.size() == 3);
+  for (auto &&I : Res)
----------------
chapuni wrote:

`I` is used only for +Asserts.

https://github.com/llvm/llvm-project/pull/95202


More information about the cfe-commits mailing list