#include "clang/AST/ODRDiagsEmitter.h"
#include "clang/AST/DeclFriend.h"
#include "clang/AST/DeclTemplate.h"
#include "clang/AST/ODRHash.h"
#include "clang/Basic/DiagnosticAST.h"
#include "clang/Basic/Module.h"
usingnamespaceclang;
static unsigned computeODRHash(QualType Ty) { … }
static unsigned computeODRHash(const Stmt *S) { … }
static unsigned computeODRHash(const Decl *D) { … }
static unsigned computeODRHash(const TemplateArgument &TA) { … }
std::string ODRDiagsEmitter::getOwningModuleNameForDiagnostic(const Decl *D) { … }
template <typename MethodT>
static bool diagnoseSubMismatchMethodParameters(DiagnosticsEngine &Diags,
const NamedDecl *FirstContainer,
StringRef FirstModule,
StringRef SecondModule,
const MethodT *FirstMethod,
const MethodT *SecondMethod) { … }
bool ODRDiagsEmitter::diagnoseSubMismatchField(
const NamedDecl *FirstRecord, StringRef FirstModule, StringRef SecondModule,
const FieldDecl *FirstField, const FieldDecl *SecondField) const { … }
bool ODRDiagsEmitter::diagnoseSubMismatchTypedef(
const NamedDecl *FirstRecord, StringRef FirstModule, StringRef SecondModule,
const TypedefNameDecl *FirstTD, const TypedefNameDecl *SecondTD,
bool IsTypeAlias) const { … }
bool ODRDiagsEmitter::diagnoseSubMismatchVar(const NamedDecl *FirstRecord,
StringRef FirstModule,
StringRef SecondModule,
const VarDecl *FirstVD,
const VarDecl *SecondVD) const { … }
bool ODRDiagsEmitter::diagnoseSubMismatchProtocols(
const ObjCProtocolList &FirstProtocols,
const ObjCContainerDecl *FirstContainer, StringRef FirstModule,
const ObjCProtocolList &SecondProtocols,
const ObjCContainerDecl *SecondContainer, StringRef SecondModule) const { … }
bool ODRDiagsEmitter::diagnoseSubMismatchObjCMethod(
const NamedDecl *FirstObjCContainer, StringRef FirstModule,
StringRef SecondModule, const ObjCMethodDecl *FirstMethod,
const ObjCMethodDecl *SecondMethod) const { … }
bool ODRDiagsEmitter::diagnoseSubMismatchObjCProperty(
const NamedDecl *FirstObjCContainer, StringRef FirstModule,
StringRef SecondModule, const ObjCPropertyDecl *FirstProp,
const ObjCPropertyDecl *SecondProp) const { … }
ODRDiagsEmitter::DiffResult
ODRDiagsEmitter::FindTypeDiffs(DeclHashes &FirstHashes,
DeclHashes &SecondHashes) { … }
void ODRDiagsEmitter::diagnoseSubMismatchUnexpected(
DiffResult &DR, const NamedDecl *FirstRecord, StringRef FirstModule,
const NamedDecl *SecondRecord, StringRef SecondModule) const { … }
void ODRDiagsEmitter::diagnoseSubMismatchDifferentDeclKinds(
DiffResult &DR, const NamedDecl *FirstRecord, StringRef FirstModule,
const NamedDecl *SecondRecord, StringRef SecondModule) const { … }
bool ODRDiagsEmitter::diagnoseMismatch(
const CXXRecordDecl *FirstRecord, const CXXRecordDecl *SecondRecord,
const struct CXXRecordDecl::DefinitionData *SecondDD) const { … }
bool ODRDiagsEmitter::diagnoseMismatch(const RecordDecl *FirstRecord,
const RecordDecl *SecondRecord) const { … }
bool ODRDiagsEmitter::diagnoseMismatch(
const FunctionDecl *FirstFunction,
const FunctionDecl *SecondFunction) const { … }
bool ODRDiagsEmitter::diagnoseMismatch(const EnumDecl *FirstEnum,
const EnumDecl *SecondEnum) const { … }
bool ODRDiagsEmitter::diagnoseMismatch(
const ObjCInterfaceDecl *FirstID, const ObjCInterfaceDecl *SecondID,
const struct ObjCInterfaceDecl::DefinitionData *SecondDD) const { … }
bool ODRDiagsEmitter::diagnoseMismatch(
const ObjCProtocolDecl *FirstProtocol,
const ObjCProtocolDecl *SecondProtocol,
const struct ObjCProtocolDecl::DefinitionData *SecondDD) const { … }