diff options
-rw-r--r-- | lib/Sema/Sema.cpp | 2 | ||||
-rw-r--r-- | test/SemaCXX/class.cpp | 12 |
2 files changed, 13 insertions, 1 deletions
diff --git a/lib/Sema/Sema.cpp b/lib/Sema/Sema.cpp index 5e365de695..523b196392 100644 --- a/lib/Sema/Sema.cpp +++ b/lib/Sema/Sema.cpp @@ -305,7 +305,7 @@ void Sema::ActOnEndOfTranslationUnit() { DeclContext *Sema::getFunctionLevelDeclContext() { DeclContext *DC = CurContext; - while (isa<BlockDecl>(DC)) + while (isa<BlockDecl>(DC) || isa<EnumDecl>(DC)) DC = DC->getParent(); return DC; diff --git a/test/SemaCXX/class.cpp b/test/SemaCXX/class.cpp index 287f50d63a..b5cecbcf93 100644 --- a/test/SemaCXX/class.cpp +++ b/test/SemaCXX/class.cpp @@ -147,3 +147,15 @@ namespace PR7153 { ec.member = 0; } } + +namespace PR7196 { + struct A { + int a; + + void f() { + char i[sizeof(a)]; + enum { x = sizeof(i) }; + enum { y = sizeof(a) }; + } + }; +} |