From f46cc65f445e2f14ee842364a75b28596147686b Mon Sep 17 00:00:00 2001 From: Argyrios Kyrtzidis Date: Mon, 31 Jan 2011 07:04:54 +0000 Subject: Don't warn that variables in C++ static member functions shadow fields. Fixes rdar://8900456. llvm-svn: 124581 --- clang/lib/Sema/SemaDecl.cpp | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'clang/lib/Sema') diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp index 253f1dcde87..b2cb96134c0 100644 --- a/clang/lib/Sema/SemaDecl.cpp +++ b/clang/lib/Sema/SemaDecl.cpp @@ -3129,6 +3129,12 @@ void Sema::CheckShadow(Scope *S, VarDecl *D, const LookupResult& R) { if (!isa(ShadowedDecl) && !isa(ShadowedDecl)) return; + // Fields are not shadowed by variables in C++ static methods. + if (isa(ShadowedDecl)) + if (CXXMethodDecl *MD = dyn_cast(NewDC)) + if (MD->isStatic()) + return; + if (VarDecl *shadowedVar = dyn_cast(ShadowedDecl)) if (shadowedVar->isExternC()) { // Don't warn for this case: -- cgit v1.2.3