diff --git a/clang/include/clang/AST/DeclBase.h b/clang/include/clang/AST/DeclBase.h --- a/clang/include/clang/AST/DeclBase.h +++ b/clang/include/clang/AST/DeclBase.h @@ -463,6 +463,7 @@ bool isInAnonymousNamespace() const; bool isInStdNamespace() const; + bool isInNamespace(llvm::StringRef Namespace) const; ASTContext &getASTContext() const LLVM_READONLY; @@ -1945,6 +1946,8 @@ bool isStdNamespace() const; + bool isNamespace(llvm::StringRef Namespace) const; + bool isInlineNamespace() const; /// Determines whether this context is dependent on a diff --git a/clang/lib/AST/DeclBase.cpp b/clang/lib/AST/DeclBase.cpp --- a/clang/lib/AST/DeclBase.cpp +++ b/clang/lib/AST/DeclBase.cpp @@ -392,8 +392,12 @@ } bool Decl::isInStdNamespace() const { + return isInNamespace("std"); +} + +bool Decl::isInNamespace(llvm::StringRef Namespace) const { const DeclContext *DC = getDeclContext(); - return DC && DC->isStdNamespace(); + return DC && DC->isNamespace(Namespace); } TranslationUnitDecl *Decl::getTranslationUnitDecl() { @@ -1124,6 +1128,10 @@ } bool DeclContext::isStdNamespace() const { + return isNamespace("std"); +} + +bool DeclContext::isNamespace(llvm::StringRef Namespace) const { if (!isNamespace()) return false; @@ -1136,7 +1144,7 @@ return false; const IdentifierInfo *II = ND->getIdentifier(); - return II && II->isStr("std"); + return II && II->isStr(Namespace); } bool DeclContext::isDependentContext() const {