diff options
| author | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2011-01-31 07:04:54 +0000 |
|---|---|---|
| committer | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2011-01-31 07:04:54 +0000 |
| commit | f46cc65f445e2f14ee842364a75b28596147686b (patch) | |
| tree | d301e81d7d73509d9ea1c277bb4eaf25830a6eb0 /clang/lib/Sema | |
| parent | 857dd066052e0883ca1f9da42883e9ab8367fb88 (diff) | |
| download | bcm5719-llvm-f46cc65f445e2f14ee842364a75b28596147686b.tar.gz bcm5719-llvm-f46cc65f445e2f14ee842364a75b28596147686b.zip | |
Don't warn that variables in C++ static member functions shadow fields. Fixes rdar://8900456.
llvm-svn: 124581
Diffstat (limited to 'clang/lib/Sema')
| -rw-r--r-- | clang/lib/Sema/SemaDecl.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
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<VarDecl>(ShadowedDecl) && !isa<FieldDecl>(ShadowedDecl)) return; + // Fields are not shadowed by variables in C++ static methods. + if (isa<FieldDecl>(ShadowedDecl)) + if (CXXMethodDecl *MD = dyn_cast<CXXMethodDecl>(NewDC)) + if (MD->isStatic()) + return; + if (VarDecl *shadowedVar = dyn_cast<VarDecl>(ShadowedDecl)) if (shadowedVar->isExternC()) { // Don't warn for this case: |

