summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNick Lewycky <nicholas@mxc.ca>2012-03-10 07:47:07 +0000
committerNick Lewycky <nicholas@mxc.ca>2012-03-10 07:47:07 +0000
commitf604212a444c248a5909842bfff67e4476136fdb (patch)
tree4e909bf70c320112a0dfe966ce32ec50b8e11b4a
parentd9e1e57e2afa1dd426e458e0be89e0176c5b5057 (diff)
downloadbcm5719-llvm-f604212a444c248a5909842bfff67e4476136fdb.tar.gz
bcm5719-llvm-f604212a444c248a5909842bfff67e4476136fdb.zip
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. llvm-svn: 152489
-rw-r--r--clang/lib/Sema/SemaDecl.cpp3
-rw-r--r--clang/test/SemaCXX/enum-scoped.cpp5
2 files changed, 6 insertions, 2 deletions
diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp
index 532767b64c3..e3527a8289c 100644
--- a/clang/lib/Sema/SemaDecl.cpp
+++ b/clang/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/clang/test/SemaCXX/enum-scoped.cpp b/clang/test/SemaCXX/enum-scoped.cpp
index 94cccb28fdd..31190bebaa3 100644
--- a/clang/test/SemaCXX/enum-scoped.cpp
+++ b/clang/test/SemaCXX/enum-scoped.cpp
@@ -184,3 +184,8 @@ namespace PR12106 {
enum eCOLORS { Last };
Enum<eCOLORS> e;
}
+
+namespace test7 {
+ enum class E { e = (struct S*)0 == (struct S*)0 };
+ S *p;
+}
OpenPOWER on IntegriCloud