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. + }; +}; _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits