diff options
Diffstat (limited to 'clang/lib/AST')
-rw-r--r-- | clang/lib/AST/DeclBase.cpp | 5 | ||||
-rw-r--r-- | clang/lib/AST/DeclCXX.cpp | 26 |
2 files changed, 14 insertions, 17 deletions
diff --git a/clang/lib/AST/DeclBase.cpp b/clang/lib/AST/DeclBase.cpp index 28d543785fa..3ced0eff4c5 100644 --- a/clang/lib/AST/DeclBase.cpp +++ b/clang/lib/AST/DeclBase.cpp @@ -200,10 +200,6 @@ unsigned Decl::getIdentifierNamespaceForKind(Kind DeclKind) { case ObjCCompatibleAlias: return IDNS_Ordinary; - case FriendClass: - case FriendFunction: - return IDNS_Friend; - case ObjCProtocol: return IDNS_ObjCProtocol; @@ -233,6 +229,7 @@ unsigned Decl::getIdentifierNamespaceForKind(Kind DeclKind) { return IDNS_Tag | IDNS_Ordinary; // Never have names. + case Friend: case LinkageSpec: case FileScopeAsm: case StaticAssert: diff --git a/clang/lib/AST/DeclCXX.cpp b/clang/lib/AST/DeclCXX.cpp index 70e48976daa..46acf67d295 100644 --- a/clang/lib/AST/DeclCXX.cpp +++ b/clang/lib/AST/DeclCXX.cpp @@ -777,20 +777,20 @@ bool OverloadIterator::Equals(const OverloadIterator &Other) const { return !isa<OverloadedFunctionDecl>(D) || Iter == Other.Iter; } -FriendFunctionDecl *FriendFunctionDecl::Create(ASTContext &C, - DeclContext *DC, - SourceLocation L, - DeclarationName N, QualType T, - DeclaratorInfo *DInfo, - bool isInline, - SourceLocation FriendL) { - return new (C) FriendFunctionDecl(DC, L, N, T, DInfo, isInline, FriendL); -} +FriendDecl *FriendDecl::Create(ASTContext &C, DeclContext *DC, + SourceLocation L, + FriendUnion Friend, + SourceLocation FriendL) { + if (Friend.is<NamedDecl*>()) { + NamedDecl *D = Friend.get<NamedDecl*>(); + assert(isa<FunctionDecl>(D) || + isa<CXXRecordDecl>(D) || + isa<FunctionTemplateDecl>(D) || + isa<ClassTemplateDecl>(D)); + assert(D->getFriendObjectKind()); + } -FriendClassDecl *FriendClassDecl::Create(ASTContext &C, DeclContext *DC, - SourceLocation L, QualType T, - SourceLocation FriendL) { - return new (C) FriendClassDecl(DC, L, T, FriendL); + return new (C) FriendDecl(DC, L, Friend, FriendL); } LinkageSpecDecl *LinkageSpecDecl::Create(ASTContext &C, |