[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