From: Nick Lewycky Date: Sat, 10 Mar 2012 07:47:07 +0000 (+0000) Subject: Slightly tweak this condition. "isTransparentContext()" was checking whether an X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=1659c3758b4b2dbd618aed9ff8d1863f11b1bd9b;p=clang Slightly tweak this condition. "isTransparentContext()" was checking whether an enum is scoped or not, which is not relevant here. Instead, phrase the loop in the same terms that the standard uses, instead of this awkward set of conditions that is *nearly* equal. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152489 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Sema/SemaDecl.cpp b/lib/Sema/SemaDecl.cpp index 532767b64c..e3527a8289 100644 --- a/lib/Sema/SemaDecl.cpp +++ b/lib/Sema/SemaDecl.cpp @@ -8092,8 +8092,7 @@ Decl *Sema::ActOnTag(Scope *S, unsigned TagSpec, TagUseKind TUK, // Find the context where we'll be declaring the tag. // FIXME: We would like to maintain the current DeclContext as the // lexical context, - while (SearchDC->isRecord() || SearchDC->isTransparentContext() || - SearchDC->isObjCContainer()) + while (!SearchDC->isFileContext() && !SearchDC->isFunctionOrMethod()) SearchDC = SearchDC->getParent(); // Find the scope where we'll be declaring the tag. diff --git a/test/SemaCXX/enum-scoped.cpp b/test/SemaCXX/enum-scoped.cpp index 94cccb28fd..31190bebaa 100644 --- a/test/SemaCXX/enum-scoped.cpp +++ b/test/SemaCXX/enum-scoped.cpp @@ -184,3 +184,8 @@ namespace PR12106 { enum eCOLORS { Last }; Enum e; } + +namespace test7 { + enum class E { e = (struct S*)0 == (struct S*)0 }; + S *p; +}