mirror of
https://github.com/opnsense/src.git
synced 2026-07-07 08:11:09 -04:00
This commit merges the latest LLVM sources from the vendor space. It also updates the build glue to match the new sources. Clang's version number is changed to match LLVM's, which means /usr/include/clang/2.0 has been renamed to /usr/include/clang/2.8. Obtained from: projects/clangbsd
45 lines
1.5 KiB
C++
45 lines
1.5 KiB
C++
//===--- DeclFriend.cpp - C++ Friend Declaration AST Node Implementation --===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// This file implements the AST classes related to C++ friend
|
|
// declarations.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#include "clang/AST/DeclFriend.h"
|
|
#include "clang/AST/DeclTemplate.h"
|
|
using namespace clang;
|
|
|
|
FriendDecl *FriendDecl::Create(ASTContext &C, DeclContext *DC,
|
|
SourceLocation L,
|
|
FriendUnion Friend,
|
|
SourceLocation FriendL) {
|
|
#ifndef NDEBUG
|
|
if (Friend.is<NamedDecl*>()) {
|
|
NamedDecl *D = Friend.get<NamedDecl*>();
|
|
assert(isa<FunctionDecl>(D) ||
|
|
isa<CXXRecordDecl>(D) ||
|
|
isa<FunctionTemplateDecl>(D) ||
|
|
isa<ClassTemplateDecl>(D));
|
|
|
|
// As a temporary hack, we permit template instantiation to point
|
|
// to the original declaration when instantiating members.
|
|
assert(D->getFriendObjectKind() ||
|
|
(cast<CXXRecordDecl>(DC)->getTemplateSpecializationKind()));
|
|
}
|
|
#endif
|
|
|
|
FriendDecl *FD = new (C) FriendDecl(DC, L, Friend, FriendL);
|
|
cast<CXXRecordDecl>(DC)->pushFriendDecl(FD);
|
|
return FD;
|
|
}
|
|
|
|
FriendDecl *FriendDecl::Create(ASTContext &C, EmptyShell Empty) {
|
|
return new (C) FriendDecl(Empty);
|
|
}
|