From 0c6f5395644a3cb838b63e48a1df00f4648cbf20 Mon Sep 17 00:00:00 2001 From: Douglas Gregor Date: Sat, 22 May 2010 16:25:05 +0000 Subject: [PATCH] When determining whether we can use "this", make sure to look through enum contexts (along with block contexts, which we already did). Fixes PR7196. llvm-svn: 104444 --- clang/lib/Sema/Sema.cpp | 2 +- clang/test/SemaCXX/class.cpp | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/clang/lib/Sema/Sema.cpp b/clang/lib/Sema/Sema.cpp index 5e365de6950f..523b19639228 100644 --- a/clang/lib/Sema/Sema.cpp +++ b/clang/lib/Sema/Sema.cpp @@ -305,7 +305,7 @@ void Sema::ActOnEndOfTranslationUnit() { DeclContext *Sema::getFunctionLevelDeclContext() { DeclContext *DC = CurContext; - while (isa(DC)) + while (isa(DC) || isa(DC)) DC = DC->getParent(); return DC; diff --git a/clang/test/SemaCXX/class.cpp b/clang/test/SemaCXX/class.cpp index 287f50d63a50..b5cecbcf937b 100644 --- a/clang/test/SemaCXX/class.cpp +++ b/clang/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) }; + } + }; +} -- GitLab