summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaDecl.cpp
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2015-11-05 01:30:19 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2015-11-05 01:30:19 +0000
commitedcc92a4c10ad69317d80f432905260fefd386a0 (patch)
tree25b6a7d80bf63145b7676a23884874b5e9ec0187 /clang/lib/Sema/SemaDecl.cpp
parentad6b54983d1387583b4c9c7f740a9c371a134ca0 (diff)
downloadbcm5719-llvm-edcc92a4c10ad69317d80f432905260fefd386a0.tar.gz
bcm5719-llvm-edcc92a4c10ad69317d80f432905260fefd386a0.zip
[modules] Don't merge an anonymous enum definition into a named enum definition.
llvm-svn: 252125
Diffstat (limited to 'clang/lib/Sema/SemaDecl.cpp')
-rw-r--r--clang/lib/Sema/SemaDecl.cpp8
1 files changed, 5 insertions, 3 deletions
diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp
index b14109a6d79..6297efb73a2 100644
--- a/clang/lib/Sema/SemaDecl.cpp
+++ b/clang/lib/Sema/SemaDecl.cpp
@@ -13900,10 +13900,12 @@ Sema::SkipBodyInfo Sema::shouldSkipAnonEnumBody(Scope *S, IdentifierInfo *II,
NamedDecl *PrevDecl = LookupSingleName(S, II, IILoc, LookupOrdinaryName,
ForRedeclaration);
auto *PrevECD = dyn_cast_or_null<EnumConstantDecl>(PrevDecl);
+ if (!PrevECD)
+ return SkipBodyInfo();
+
+ EnumDecl *PrevED = cast<EnumDecl>(PrevECD->getDeclContext());
NamedDecl *Hidden;
- if (PrevECD &&
- !hasVisibleDefinition(cast<NamedDecl>(PrevECD->getDeclContext()),
- &Hidden)) {
+ if (!PrevED->getDeclName() && !hasVisibleDefinition(PrevED, &Hidden)) {
SkipBodyInfo Skip;
Skip.Previous = Hidden;
return Skip;
OpenPOWER on IntegriCloud