r344898 - Silence the -Wshadow warning for enumerators shadowing a type.

Aaron Ballman via cfe-commits cfe-commits at lists.llvm.org
Mon Oct 22 06:05:53 PDT 2018


Author: aaronballman
Date: Mon Oct 22 06:05:53 2018
New Revision: 344898

URL: http://llvm.org/viewvc/llvm-project?rev=344898&view=rev
Log:
Silence the -Wshadow warning for enumerators shadowing a type.

Amends r344259 so that enumerators shadowing types are not diagnosed, as shadowing under those circumstances is rarely (if ever) an issue in practice.

Modified:
    cfe/trunk/lib/Sema/SemaDecl.cpp
    cfe/trunk/test/Sema/warn-shadow.c
    cfe/trunk/test/SemaCXX/warn-shadow.cpp

Modified: cfe/trunk/lib/Sema/SemaDecl.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDecl.cpp?rev=344898&r1=344897&r2=344898&view=diff
==============================================================================
--- cfe/trunk/lib/Sema/SemaDecl.cpp (original)
+++ cfe/trunk/lib/Sema/SemaDecl.cpp Mon Oct 22 06:05:53 2018
@@ -16295,7 +16295,7 @@ Decl *Sema::ActOnEnumConstant(Scope *S,
     return nullptr;
 
   if (PrevDecl) {
-    if (!TheEnumDecl->isScoped()) {
+    if (!TheEnumDecl->isScoped() && isa<ValueDecl>(PrevDecl)) {
       // Check for other kinds of shadowing not already handled.
       CheckShadow(New, PrevDecl, R);
     }

Modified: cfe/trunk/test/Sema/warn-shadow.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Sema/warn-shadow.c?rev=344898&r1=344897&r2=344898&view=diff
==============================================================================
--- cfe/trunk/test/Sema/warn-shadow.c (original)
+++ cfe/trunk/test/Sema/warn-shadow.c Mon Oct 22 06:05:53 2018
@@ -64,3 +64,10 @@ enum PR24718_1{pr24718}; // expected-not
 void PR24718(void) {
   enum PR24718_2{pr24718}; // expected-warning {{declaration shadows a variable in the global scope}}
 }
+
+struct PR24718_3;
+struct PR24718_4 {
+  enum {
+    PR24718_3 // Does not shadow a type.
+  };
+};

Modified: cfe/trunk/test/SemaCXX/warn-shadow.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCXX/warn-shadow.cpp?rev=344898&r1=344897&r2=344898&view=diff
==============================================================================
--- cfe/trunk/test/SemaCXX/warn-shadow.cpp (original)
+++ cfe/trunk/test/SemaCXX/warn-shadow.cpp Mon Oct 22 06:05:53 2018
@@ -225,3 +225,10 @@ void f(int a) {
 
 int PR24718;
 enum class X { PR24718 }; // Ok, not shadowing
+
+struct PR24718_1;
+struct PR24718_2 {
+  enum {
+    PR24718_1 // Does not shadow a type.
+  };
+};




More information about the cfe-commits mailing list