Author: Kadir Cetinkaya
Date: 2023-04-12T20:30:33+02:00
New Revision: caea93cc4478cca28321cba4fa2871d5e6090299

URL: 
https://github.com/llvm/llvm-project/commit/caea93cc4478cca28321cba4fa2871d5e6090299
DIFF: 
https://github.com/llvm/llvm-project/commit/caea93cc4478cca28321cba4fa2871d5e6090299.diff

LOG: [icnlude-cleaner] Fix dandling pointers in tests

Added: 
    

Modified: 
    clang-tools-extra/include-cleaner/unittests/WalkASTTest.cpp

Removed: 
    


################################################################################
diff  --git a/clang-tools-extra/include-cleaner/unittests/WalkASTTest.cpp 
b/clang-tools-extra/include-cleaner/unittests/WalkASTTest.cpp
index 264bedf2e9ac7..ad5bb0aba3076 100644
--- a/clang-tools-extra/include-cleaner/unittests/WalkASTTest.cpp
+++ b/clang-tools-extra/include-cleaner/unittests/WalkASTTest.cpp
@@ -16,7 +16,6 @@
 #include "clang/Basic/SourceLocation.h"
 #include "clang/Frontend/TextDiagnostic.h"
 #include "clang/Testing/TestAST.h"
-#include "llvm/ADT/GenericUniformityImpl.h"
 #include "llvm/ADT/STLExtras.h"
 #include "llvm/ADT/StringRef.h"
 #include "llvm/Support/Error.h"
@@ -42,8 +41,8 @@ using testing::ElementsAre;
 //   Referencing: int x = ^foo();
 // There must be exactly one referencing location marked.
 // Returns target decls.
-std::vector<NamedDecl *> testWalk(llvm::StringRef TargetCode,
-                                  llvm::StringRef ReferencingCode) {
+std::vector<Decl::Kind> testWalk(llvm::StringRef TargetCode,
+                                 llvm::StringRef ReferencingCode) {
   llvm::Annotations Target(TargetCode);
   llvm::Annotations Referencing(ReferencingCode);
 
@@ -63,7 +62,7 @@ std::vector<NamedDecl *> testWalk(llvm::StringRef TargetCode,
   FileID TargetFile = SM.translateFile(
       llvm::cantFail(AST.fileManager().getFileRef("target.h")));
 
-  std::vector<NamedDecl *> TargetDecls;
+  std::vector<Decl::Kind> TargetDecls;
   // Perform the walk, and capture the offsets of the referenced targets.
   std::unordered_map<RefType, std::vector<size_t>> ReferencedOffsets;
   for (Decl *D : AST.context().getTranslationUnitDecl()->decls()) {
@@ -76,7 +75,7 @@ std::vector<NamedDecl *> testWalk(llvm::StringRef TargetCode,
       if (NDLoc.first != TargetFile)
         return;
       ReferencedOffsets[RT].push_back(NDLoc.second);
-      TargetDecls.push_back(&ND);
+      TargetDecls.push_back(ND.getKind());
     });
   }
   for (auto &Entry : ReferencedOffsets)
@@ -131,52 +130,45 @@ TEST(WalkAST, TagType) {
   testWalk("struct $explicit^$implicit^S { static int x; };", "auto y = 
^S();");
 }
 
-MATCHER_P(HasKind, Kind, "") {
-  if (arg->getKind() == Kind)
-    return true;
-  *result_listener << "Got kind: " << arg->getDeclKindName();
-  return false;
-}
-
 TEST(WalkAST, ClassTemplates) {
   // Explicit instantiation and (partial) specialization references primary
   // template.
   EXPECT_THAT(testWalk("template<typename> struct $explicit^Foo{};",
                        "template struct ^Foo<int>;"),
-              ElementsAre(HasKind(Decl::CXXRecord)));
+              ElementsAre(Decl::CXXRecord));
   EXPECT_THAT(testWalk("template<typename> struct $explicit^Foo{};",
                        "template<> struct ^Foo<int> {};"),
-              ElementsAre(HasKind(Decl::CXXRecord)));
+              ElementsAre(Decl::CXXRecord));
   EXPECT_THAT(testWalk("template<typename> struct $explicit^Foo{};",
                        "template<typename T> struct ^Foo<T*> {};"),
-              ElementsAre(HasKind(Decl::CXXRecord)));
+              ElementsAre(Decl::CXXRecord));
 
   // Implicit instantiations references most relevant template.
   EXPECT_THAT(
       testWalk("template<typename> struct $explicit^Foo {};", "^Foo<int> x;"),
-      ElementsAre(HasKind(Decl::CXXRecord)));
+      ElementsAre(Decl::CXXRecord));
   EXPECT_THAT(testWalk(R"cpp(
     template<typename> struct Foo {};
     template<> struct $explicit^Foo<int> {};)cpp",
                        "^Foo<int> x;"),
-              ElementsAre(HasKind(Decl::ClassTemplateSpecialization)));
+              ElementsAre(Decl::ClassTemplateSpecialization));
   EXPECT_THAT(testWalk(R"cpp(
     template<typename> struct Foo {};
     template<typename T> struct $explicit^Foo<T*> { void x(); };)cpp",
                        "^Foo<int *> x;"),
-              ElementsAre(HasKind(Decl::ClassTemplatePartialSpecialization)));
+              ElementsAre(Decl::ClassTemplatePartialSpecialization));
   EXPECT_THAT(testWalk(R"cpp(
     template<typename> struct $explicit^Foo {};
     template struct Foo<int>;)cpp",
                        "^Foo<int> x;"),
-              ElementsAre(HasKind(Decl::CXXRecord)));
+              ElementsAre(Decl::CXXRecord));
   // FIXME: This is broken due to
   // https://github.com/llvm/llvm-project/issues/42259.
   EXPECT_THAT(testWalk(R"cpp(
     template<typename T> struct $explicit^Foo { Foo(T); };
     template<> struct Foo<int> { Foo(int); };)cpp",
                        "^Foo x(3);"),
-              ElementsAre(HasKind(Decl::ClassTemplate)));
+              ElementsAre(Decl::ClassTemplate));
 }
 TEST(WalkAST, VarTemplates) {
   // Explicit instantiation and (partial) specialization references primary
@@ -188,10 +180,10 @@ TEST(WalkAST, VarTemplates) {
       ElementsAre());
   EXPECT_THAT(testWalk("template<typename T> T $explicit^Foo = 0;",
                        "template<> int ^Foo<int> = 2;"),
-              ElementsAre(HasKind(Decl::Var)));
+              ElementsAre(Decl::Var));
   EXPECT_THAT(testWalk("template<typename T> T $explicit^Foo = 0;",
                        "template<typename T> T* ^Foo<T*> = 1;"),
-              ElementsAre(HasKind(Decl::Var)));
+              ElementsAre(Decl::Var));
 
   // Implicit instantiations references most relevant template.
   // FIXME: This points at implicit specialization, instead we should point to
@@ -199,24 +191,24 @@ TEST(WalkAST, VarTemplates) {
   EXPECT_THAT(testWalk(R"cpp(
     template <typename T> T $explicit^Foo = 0;)cpp",
                        "int z = ^Foo<int>;"),
-              ElementsAre(HasKind(Decl::VarTemplateSpecialization)));
+              ElementsAre(Decl::VarTemplateSpecialization));
   EXPECT_THAT(testWalk(R"cpp(
     template<typename T> T Foo = 0;
     template<> int $explicit^Foo<int> = 1;)cpp",
                        "int x = ^Foo<int>;"),
-              ElementsAre(HasKind(Decl::VarTemplateSpecialization)));
+              ElementsAre(Decl::VarTemplateSpecialization));
   // FIXME: This points at implicit specialization, instead we should point to
   // explicit partial specializaiton pattern.
   EXPECT_THAT(testWalk(R"cpp(
     template<typename T> T Foo = 0;
     template<typename T> T* $explicit^Foo<T*> = nullptr;)cpp",
                        "int *x = ^Foo<int *>;"),
-              ElementsAre(HasKind(Decl::VarTemplateSpecialization)));
+              ElementsAre(Decl::VarTemplateSpecialization));
   EXPECT_THAT(testWalk(R"cpp(
     template<typename T> T $explicit^Foo = 0;
     template int Foo<int>;)cpp",
                        "int x = ^Foo<int>;"),
-              ElementsAre(HasKind(Decl::VarTemplateSpecialization)));
+              ElementsAre(Decl::VarTemplateSpecialization));
 }
 TEST(WalkAST, FunctionTemplates) {
   // Explicit instantiation and (partial) specialization references primary
@@ -238,18 +230,18 @@ TEST(WalkAST, FunctionTemplates) {
   EXPECT_THAT(testWalk(R"cpp(
     template <typename T> void $explicit^foo() {})cpp",
                        "auto x = []{ ^foo<int>(); };"),
-              ElementsAre(HasKind(Decl::FunctionTemplate)));
+              ElementsAre(Decl::FunctionTemplate));
   // FIXME: DeclRefExpr points at primary template, not the specialization.
   EXPECT_THAT(testWalk(R"cpp(
     template<typename T> void $explicit^foo() {}
     template<> void foo<int>(){})cpp",
                        "auto x = []{ ^foo<int>(); };"),
-              ElementsAre(HasKind(Decl::FunctionTemplate)));
+              ElementsAre(Decl::FunctionTemplate));
   EXPECT_THAT(testWalk(R"cpp(
     template<typename T> void $explicit^foo() {};
     template void foo<int>();)cpp",
                        "auto x = [] { ^foo<int>(); };"),
-              ElementsAre(HasKind(Decl::FunctionTemplate)));
+              ElementsAre(Decl::FunctionTemplate));
 }
 
 TEST(WalkAST, Alias) {


        
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to