summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaDeclCXX.cpp
diff options
context:
space:
mode:
authorArgyrios Kyrtzidis <akyrtzi@gmail.com>2008-11-08 17:17:31 +0000
committerArgyrios Kyrtzidis <akyrtzi@gmail.com>2008-11-08 17:17:31 +0000
commit16ac9be7f0b2a7c716adddc92b7ea5b04fe94ba5 (patch)
tree02d1b08d174886a7f7776e44c65cb7af65ae3fff /clang/lib/Sema/SemaDeclCXX.cpp
parent430a58edd8679fc603b5e6d16e995d9b5eb90c3e (diff)
downloadbcm5719-llvm-16ac9be7f0b2a7c716adddc92b7ea5b04fe94ba5.tar.gz
bcm5719-llvm-16ac9be7f0b2a7c716adddc92b7ea5b04fe94ba5.zip
Implement Sema support for C++ nested-name-specifiers.
llvm-svn: 58916
Diffstat (limited to 'clang/lib/Sema/SemaDeclCXX.cpp')
-rw-r--r--clang/lib/Sema/SemaDeclCXX.cpp11
1 files changed, 9 insertions, 2 deletions
diff --git a/clang/lib/Sema/SemaDeclCXX.cpp b/clang/lib/Sema/SemaDeclCXX.cpp
index 2ac5804d1e6..8bdb389f1f2 100644
--- a/clang/lib/Sema/SemaDeclCXX.cpp
+++ b/clang/lib/Sema/SemaDeclCXX.cpp
@@ -264,7 +264,14 @@ void Sema::CheckCXXDefaultArguments(FunctionDecl *FD) {
/// the innermost class.
bool Sema::isCurrentClassName(const IdentifierInfo &II, Scope *,
const CXXScopeSpec *SS) {
- if (CXXRecordDecl *CurDecl = dyn_cast_or_null<CXXRecordDecl>(CurContext))
+ CXXRecordDecl *CurDecl;
+ if (SS) {
+ DeclContext *DC = static_cast<DeclContext*>(SS->getScopeRep());
+ CurDecl = dyn_cast_or_null<CXXRecordDecl>(DC);
+ } else
+ CurDecl = dyn_cast_or_null<CXXRecordDecl>(CurContext);
+
+ if (CurDecl)
return &II == CurDecl->getIdentifier();
else
return false;
@@ -1253,7 +1260,7 @@ Sema::DeclTy *Sema::ActOnStartNamespaceDef(Scope *NamespcScope,
// in that declarative region, it is treated as an original-namespace-name.
Decl *PrevDecl =
- LookupDecl(II, Decl::IDNS_Tag | Decl::IDNS_Ordinary, DeclRegionScope,
+ LookupDecl(II, Decl::IDNS_Tag | Decl::IDNS_Ordinary, DeclRegionScope, 0,
/*enableLazyBuiltinCreation=*/false);
if (PrevDecl && isDeclInScope(PrevDecl, CurContext, DeclRegionScope)) {
OpenPOWER on IntegriCloud