diff options
| author | Gabor Horvath <xazax.hun@gmail.com> | 2017-08-09 12:34:58 +0000 |
|---|---|---|
| committer | Gabor Horvath <xazax.hun@gmail.com> | 2017-08-09 12:34:58 +0000 |
| commit | b57e264257f3402c1dee3fbfe9df250952e86070 (patch) | |
| tree | af95f2ba7aec9105a282212e284c6d8068de882b | |
| parent | 3bfb365f52f779dcad3f0835f4bb4a5e3c39df50 (diff) | |
| download | bcm5719-llvm-b57e264257f3402c1dee3fbfe9df250952e86070.tar.gz bcm5719-llvm-b57e264257f3402c1dee3fbfe9df250952e86070.zip | |
[Sema] -Wenum-compare no longer warn on anonymous enums in switch statements
Patch by: Reka Nikolett Kovacs
llvm-svn: 310468
| -rw-r--r-- | clang/lib/Sema/SemaStmt.cpp | 6 | ||||
| -rw-r--r-- | clang/test/SemaCXX/warn-enum-compare.cpp | 7 |
2 files changed, 13 insertions, 0 deletions
diff --git a/clang/lib/Sema/SemaStmt.cpp b/clang/lib/Sema/SemaStmt.cpp index 6bdc71bb891..1b6aed61933 100644 --- a/clang/lib/Sema/SemaStmt.cpp +++ b/clang/lib/Sema/SemaStmt.cpp @@ -753,6 +753,12 @@ static void checkEnumTypesInSwitchStmt(Sema &S, const Expr *Cond, if (!CondEnumType || !CaseEnumType) return; + // Ignore anonymous enums. + if (!CondEnumType->getDecl()->getIdentifier()) + return; + if (!CaseEnumType->getDecl()->getIdentifier()) + return; + if (S.Context.hasSameUnqualifiedType(CondType, CaseType)) return; diff --git a/clang/test/SemaCXX/warn-enum-compare.cpp b/clang/test/SemaCXX/warn-enum-compare.cpp index d1f6beb7dda..f82f7750be8 100644 --- a/clang/test/SemaCXX/warn-enum-compare.cpp +++ b/clang/test/SemaCXX/warn-enum-compare.cpp @@ -226,4 +226,11 @@ void test () { case BarF: break; case FooA: break; // expected-warning {{comparison of two values with different enumeration types ('Bar' and 'Foo')}} } + + switch(x) { + case AnonAA: break; // expected-warning {{case value not in enumerated type 'Foo'}} + case FooA: break; + case FooB: break; + case FooC: break; + } } |

