#ifndef LLVM_CLANG_SEMA_ATTR_H
#define LLVM_CLANG_SEMA_ATTR_H
#include "clang/AST/Attr.h"
#include "clang/AST/Decl.h"
#include "clang/AST/DeclBase.h"
#include "clang/AST/DeclCXX.h"
#include "clang/AST/DeclObjC.h"
#include "clang/AST/Type.h"
#include "clang/Basic/AttributeCommonInfo.h"
#include "clang/Basic/DiagnosticSema.h"
#include "clang/Basic/SourceLocation.h"
#include "clang/Sema/ParsedAttr.h"
#include "clang/Sema/SemaBase.h"
#include "llvm/Support/Casting.h"
namespace clang {
inline bool isFuncOrMethodForAttrSubject(const Decl *D) { … }
inline bool isFunctionOrMethodOrBlockForAttrSubject(const Decl *D) { … }
inline bool hasDeclarator(const Decl *D) { … }
inline bool hasFunctionProto(const Decl *D) { … }
inline unsigned getFunctionOrMethodNumParams(const Decl *D) { … }
inline const ParmVarDecl *getFunctionOrMethodParam(const Decl *D,
unsigned Idx) { … }
inline QualType getFunctionOrMethodParamType(const Decl *D, unsigned Idx) { … }
inline SourceRange getFunctionOrMethodParamRange(const Decl *D, unsigned Idx) { … }
inline QualType getFunctionOrMethodResultType(const Decl *D) { … }
inline SourceRange getFunctionOrMethodResultSourceRange(const Decl *D) { … }
inline bool isFunctionOrMethodVariadic(const Decl *D) { … }
inline bool isInstanceMethod(const Decl *D) { … }
template <typename AttrTy>
bool checkAttrMutualExclusion(SemaBase &S, Decl *D, const ParsedAttr &AL) { … }
template <typename AttrTy>
bool checkAttrMutualExclusion(SemaBase &S, Decl *D, const Attr &AL) { … }
template <typename... DiagnosticArgs>
const SemaBase::SemaDiagnosticBuilder &
appendDiagnostics(const SemaBase::SemaDiagnosticBuilder &Bldr) { … }
template <typename T, typename... DiagnosticArgs>
const SemaBase::SemaDiagnosticBuilder &
appendDiagnostics(const SemaBase::SemaDiagnosticBuilder &Bldr, T &&ExtraArg,
DiagnosticArgs &&...ExtraArgs) { … }
template <typename AttrType>
void handleSimpleAttribute(SemaBase &S, Decl *D,
const AttributeCommonInfo &CI) { … }
template <typename AttrType, typename... DiagnosticArgs>
void handleSimpleAttributeOrDiagnose(SemaBase &S, Decl *D,
const AttributeCommonInfo &CI,
bool PassesCheck, unsigned DiagID,
DiagnosticArgs &&...ExtraArgs) { … }
}
#endif