[clang] [Clang][Sema] Skip checking anonymous enum in using enum declaration (PR #87144)

Richard Smith via cfe-commits cfe-commits at lists.llvm.org
Sun Apr 7 11:34:02 PDT 2024


================
@@ -1537,6 +1537,10 @@ void Sema::PushOnScopeChains(NamedDecl *D, Scope *S, bool AddToContext) {
       cast<FunctionDecl>(D)->isFunctionTemplateSpecialization())
     return;
 
+  if (isa<UsingEnumDecl>(D) && D->getDeclName().isEmpty()) {
----------------
zygoloid wrote:

The reserved identifier check appears to be incorrect. For example, for:
```c++
enum __A {
    x, y
};
void f() {
    using enum __A;
    enum __A e;
}
```
Clang produces two warnings: one on the declaration of `enum __A` and one on the `using enum __A`. The second warning is a bug -- the `-Wreserved-identifier` warning is only supposed to fire on the declaration of a reserved name, and `using enum __A` does not declare the name `__A`, it only references it. (Note that there's no warning on the use of `enum __A` on the next line, which again is only a reference, not a declaration.)

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


More information about the cfe-commits mailing list