kbobyrev updated this revision to Diff 382065.
kbobyrev added a comment.

Delete duplicate tests.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D112209/new/

https://reviews.llvm.org/D112209

Files:
  clang-tools-extra/clangd/IncludeCleaner.cpp
  clang-tools-extra/clangd/unittests/IncludeCleanerTests.cpp


Index: clang-tools-extra/clangd/unittests/IncludeCleanerTests.cpp
===================================================================
--- clang-tools-extra/clangd/unittests/IncludeCleanerTests.cpp
+++ clang-tools-extra/clangd/unittests/IncludeCleanerTests.cpp
@@ -103,6 +103,30 @@
           "struct ^X { enum ^Language { ^CXX = 42, Python = 9000}; };",
           "int Lang = X::CXX;",
       },
+      {
+          "enum class ^Color : int;",
+          "enum class Color : int {};",
+      },
+      {
+          "enum class Color : int {};",
+          "enum class Color : int;",
+      },
+      {
+          "enum class ^Color;",
+          "Color c;",
+      },
+      {
+          "enum class ^Color : int;",
+          "Color c;",
+      },
+      {
+          "enum class ^Color : char;",
+          "Color *c;",
+      },
+      {
+          "enum class ^Color : char {};",
+          "Color *c;",
+      },
       {
           // When a type is resolved via a using declaration, the
           // UsingShadowDecl is not referenced in the AST.
Index: clang-tools-extra/clangd/IncludeCleaner.cpp
===================================================================
--- clang-tools-extra/clangd/IncludeCleaner.cpp
+++ clang-tools-extra/clangd/IncludeCleaner.cpp
@@ -80,6 +80,15 @@
     return true;
   }
 
+  // Enums may be usefully forward-declared as *complete* types by specifying
+  // an underlying type. In this case, the definition should see the 
declaration
+  // so they can be checked for compatibility.
+  bool VisitEnumDecl(EnumDecl *D) {
+    if (D->isThisDeclarationADefinition() && D->getIntegerTypeSourceInfo())
+      add(D);
+    return false;
+  }
+
 private:
   using Base = RecursiveASTVisitor<ReferencedLocationCrawler>;
 


Index: clang-tools-extra/clangd/unittests/IncludeCleanerTests.cpp
===================================================================
--- clang-tools-extra/clangd/unittests/IncludeCleanerTests.cpp
+++ clang-tools-extra/clangd/unittests/IncludeCleanerTests.cpp
@@ -103,6 +103,30 @@
           "struct ^X { enum ^Language { ^CXX = 42, Python = 9000}; };",
           "int Lang = X::CXX;",
       },
+      {
+          "enum class ^Color : int;",
+          "enum class Color : int {};",
+      },
+      {
+          "enum class Color : int {};",
+          "enum class Color : int;",
+      },
+      {
+          "enum class ^Color;",
+          "Color c;",
+      },
+      {
+          "enum class ^Color : int;",
+          "Color c;",
+      },
+      {
+          "enum class ^Color : char;",
+          "Color *c;",
+      },
+      {
+          "enum class ^Color : char {};",
+          "Color *c;",
+      },
       {
           // When a type is resolved via a using declaration, the
           // UsingShadowDecl is not referenced in the AST.
Index: clang-tools-extra/clangd/IncludeCleaner.cpp
===================================================================
--- clang-tools-extra/clangd/IncludeCleaner.cpp
+++ clang-tools-extra/clangd/IncludeCleaner.cpp
@@ -80,6 +80,15 @@
     return true;
   }
 
+  // Enums may be usefully forward-declared as *complete* types by specifying
+  // an underlying type. In this case, the definition should see the declaration
+  // so they can be checked for compatibility.
+  bool VisitEnumDecl(EnumDecl *D) {
+    if (D->isThisDeclarationADefinition() && D->getIntegerTypeSourceInfo())
+      add(D);
+    return false;
+  }
+
 private:
   using Base = RecursiveASTVisitor<ReferencedLocationCrawler>;
 
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to