diff options
-rw-r--r-- | include/clang/AST/Decl.h | 12 | ||||
-rw-r--r-- | lib/Sema/SemaDecl.cpp | 5 |
2 files changed, 10 insertions, 7 deletions
diff --git a/include/clang/AST/Decl.h b/include/clang/AST/Decl.h index 5b96153d59..ceea987ce0 100644 --- a/include/clang/AST/Decl.h +++ b/include/clang/AST/Decl.h @@ -195,7 +195,7 @@ public: // be defined inside or outside a function etc). bool isDefinedOutsideFunctionOrMethod() const { if (getDeclContext()) - return !getDeclContext()->isFunctionOrMethod(); + return !getDeclContext()->getLookupContext()->isFunctionOrMethod(); else return true; } @@ -420,7 +420,7 @@ public: if (getKind() != Decl::Var) return false; if (const DeclContext *DC = getDeclContext()) - return DC->isFunctionOrMethod(); + return DC->getLookupContext()->isFunctionOrMethod(); return false; } @@ -428,9 +428,11 @@ public: bool isFileVarDecl() const { if (getKind() != Decl::Var) return false; - const DeclContext *Ctx = getDeclContext()->getLookupContext(); - if (isa<TranslationUnitDecl>(Ctx) || isa<NamespaceDecl>(Ctx) ) - return true; + if (const DeclContext *Ctx = getDeclContext()) { + Ctx = Ctx->getLookupContext(); + if (isa<TranslationUnitDecl>(Ctx) || isa<NamespaceDecl>(Ctx) ) + return true; + } return false; } diff --git a/lib/Sema/SemaDecl.cpp b/lib/Sema/SemaDecl.cpp index ea2ea074aa..e1c9efc326 100644 --- a/lib/Sema/SemaDecl.cpp +++ b/lib/Sema/SemaDecl.cpp @@ -116,7 +116,8 @@ void Sema::PushOnScopeChains(NamedDecl *D, Scope *S) { // in this case the class name or enumeration name is hidden. if (TagDecl *TD = dyn_cast<TagDecl>(D)) { // We are pushing the name of a tag (enum or class). - if (CurContext == TD->getDeclContext()) { + if (CurContext->getLookupContext() + == TD->getDeclContext()->getLookupContext()) { // We're pushing the tag into the current context, which might // require some reshuffling in the identifier resolver. IdentifierResolver::iterator @@ -679,7 +680,7 @@ void Sema::CheckForFileScopedRedefinitions(Scope *S, VarDecl *VD) { bool VDIsTentative = isTentativeDefinition(VD); bool VDIsIncompleteArray = VD->getType()->isIncompleteArrayType(); - // FIXME: I don't this will actually see all of the + // FIXME: I don't think this will actually see all of the // redefinitions. Can't we check this property on-the-fly? for (IdentifierResolver::iterator I = IdResolver.begin(VD->getIdentifier(), |