#include "clang/AST/JSONNodeDumper.h" #include "clang/AST/Type.h" #include "clang/Basic/SourceManager.h" #include "clang/Basic/Specifiers.h" #include "clang/Lex/Lexer.h" #include "llvm/ADT/StringExtras.h" #include <optional> usingnamespaceclang; void JSONNodeDumper::addPreviousDeclaration(const Decl *D) { … } void JSONNodeDumper::Visit(const Attr *A) { … } void JSONNodeDumper::Visit(const Stmt *S) { … } void JSONNodeDumper::Visit(const Type *T) { … } void JSONNodeDumper::Visit(QualType T) { … } void JSONNodeDumper::Visit(TypeLoc TL) { … } void JSONNodeDumper::Visit(const Decl *D) { … } void JSONNodeDumper::Visit(const comments::Comment *C, const comments::FullComment *FC) { … } void JSONNodeDumper::Visit(const TemplateArgument &TA, SourceRange R, const Decl *From, StringRef Label) { … } void JSONNodeDumper::Visit(const CXXCtorInitializer *Init) { … } void JSONNodeDumper::Visit(const OpenACCClause *C) { … } void JSONNodeDumper::Visit(const OMPClause *C) { … } void JSONNodeDumper::Visit(const BlockDecl::Capture &C) { … } void JSONNodeDumper::Visit(const GenericSelectionExpr::ConstAssociation &A) { … } void JSONNodeDumper::Visit(const concepts::Requirement *R) { … } void JSONNodeDumper::Visit(const APValue &Value, QualType Ty) { … } void JSONNodeDumper::Visit(const ConceptReference *CR) { … } void JSONNodeDumper::writeIncludeStack(PresumedLoc Loc, bool JustFirst) { … } void JSONNodeDumper::writeBareSourceLocation(SourceLocation Loc, bool IsSpelling) { … } void JSONNodeDumper::writeSourceLocation(SourceLocation Loc) { … } void JSONNodeDumper::writeSourceRange(SourceRange R) { … } std::string JSONNodeDumper::createPointerRepresentation(const void *Ptr) { … } llvm::json::Object JSONNodeDumper::createQualType(QualType QT, bool Desugar) { … } void JSONNodeDumper::writeBareDeclRef(const Decl *D) { … } llvm::json::Object JSONNodeDumper::createBareDeclRef(const Decl *D) { … } llvm::json::Array JSONNodeDumper::createCastPath(const CastExpr *C) { … } #define FIELD2 … #define FIELD1 … static llvm::json::Object createDefaultConstructorDefinitionData(const CXXRecordDecl *RD) { … } static llvm::json::Object createCopyConstructorDefinitionData(const CXXRecordDecl *RD) { … } static llvm::json::Object createMoveConstructorDefinitionData(const CXXRecordDecl *RD) { … } static llvm::json::Object createCopyAssignmentDefinitionData(const CXXRecordDecl *RD) { … } static llvm::json::Object createMoveAssignmentDefinitionData(const CXXRecordDecl *RD) { … } static llvm::json::Object createDestructorDefinitionData(const CXXRecordDecl *RD) { … } llvm::json::Object JSONNodeDumper::createCXXRecordDefinitionData(const CXXRecordDecl *RD) { … } #undef FIELD1 #undef FIELD2 std::string JSONNodeDumper::createAccessSpecifier(AccessSpecifier AS) { … } llvm::json::Object JSONNodeDumper::createCXXBaseSpecifier(const CXXBaseSpecifier &BS) { … } void JSONNodeDumper::VisitAliasAttr(const AliasAttr *AA) { … } void JSONNodeDumper::VisitCleanupAttr(const CleanupAttr *CA) { … } void JSONNodeDumper::VisitDeprecatedAttr(const DeprecatedAttr *DA) { … } void JSONNodeDumper::VisitUnavailableAttr(const UnavailableAttr *UA) { … } void JSONNodeDumper::VisitSectionAttr(const SectionAttr *SA) { … } void JSONNodeDumper::VisitVisibilityAttr(const VisibilityAttr *VA) { … } void JSONNodeDumper::VisitTLSModelAttr(const TLSModelAttr *TA) { … } void JSONNodeDumper::VisitTypedefType(const TypedefType *TT) { … } void JSONNodeDumper::VisitUsingType(const UsingType *TT) { … } void JSONNodeDumper::VisitFunctionType(const FunctionType *T) { … } void JSONNodeDumper::VisitFunctionProtoType(const FunctionProtoType *T) { … } void JSONNodeDumper::VisitRValueReferenceType(const ReferenceType *RT) { … } void JSONNodeDumper::VisitArrayType(const ArrayType *AT) { … } void JSONNodeDumper::VisitConstantArrayType(const ConstantArrayType *CAT) { … } void JSONNodeDumper::VisitDependentSizedExtVectorType( const DependentSizedExtVectorType *VT) { … } void JSONNodeDumper::VisitVectorType(const VectorType *VT) { … } void JSONNodeDumper::VisitUnresolvedUsingType(const UnresolvedUsingType *UUT) { … } void JSONNodeDumper::VisitUnaryTransformType(const UnaryTransformType *UTT) { … } void JSONNodeDumper::VisitTagType(const TagType *TT) { … } void JSONNodeDumper::VisitTemplateTypeParmType( const TemplateTypeParmType *TTPT) { … } void JSONNodeDumper::VisitSubstTemplateTypeParmType( const SubstTemplateTypeParmType *STTPT) { … } void JSONNodeDumper::VisitSubstTemplateTypeParmPackType( const SubstTemplateTypeParmPackType *T) { … } void JSONNodeDumper::VisitAutoType(const AutoType *AT) { … } void JSONNodeDumper::VisitTemplateSpecializationType( const TemplateSpecializationType *TST) { … } void JSONNodeDumper::VisitInjectedClassNameType( const InjectedClassNameType *ICNT) { … } void JSONNodeDumper::VisitObjCInterfaceType(const ObjCInterfaceType *OIT) { … } void JSONNodeDumper::VisitPackExpansionType(const PackExpansionType *PET) { … } void JSONNodeDumper::VisitElaboratedType(const ElaboratedType *ET) { … } void JSONNodeDumper::VisitMacroQualifiedType(const MacroQualifiedType *MQT) { … } void JSONNodeDumper::VisitMemberPointerType(const MemberPointerType *MPT) { … } void JSONNodeDumper::VisitNamedDecl(const NamedDecl *ND) { … } void JSONNodeDumper::VisitTypedefDecl(const TypedefDecl *TD) { … } void JSONNodeDumper::VisitTypeAliasDecl(const TypeAliasDecl *TAD) { … } void JSONNodeDumper::VisitNamespaceDecl(const NamespaceDecl *ND) { … } void JSONNodeDumper::VisitUsingDirectiveDecl(const UsingDirectiveDecl *UDD) { … } void JSONNodeDumper::VisitNamespaceAliasDecl(const NamespaceAliasDecl *NAD) { … } void JSONNodeDumper::VisitUsingDecl(const UsingDecl *UD) { … } void JSONNodeDumper::VisitUsingEnumDecl(const UsingEnumDecl *UED) { … } void JSONNodeDumper::VisitUsingShadowDecl(const UsingShadowDecl *USD) { … } void JSONNodeDumper::VisitVarDecl(const VarDecl *VD) { … } void JSONNodeDumper::VisitFieldDecl(const FieldDecl *FD) { … } void JSONNodeDumper::VisitFunctionDecl(const FunctionDecl *FD) { … } void JSONNodeDumper::VisitEnumDecl(const EnumDecl *ED) { … } void JSONNodeDumper::VisitEnumConstantDecl(const EnumConstantDecl *ECD) { … } void JSONNodeDumper::VisitRecordDecl(const RecordDecl *RD) { … } void JSONNodeDumper::VisitCXXRecordDecl(const CXXRecordDecl *RD) { … } void JSONNodeDumper::VisitHLSLBufferDecl(const HLSLBufferDecl *D) { … } void JSONNodeDumper::VisitTemplateTypeParmDecl(const TemplateTypeParmDecl *D) { … } void JSONNodeDumper::VisitNonTypeTemplateParmDecl( const NonTypeTemplateParmDecl *D) { … } void JSONNodeDumper::VisitTemplateTemplateParmDecl( const TemplateTemplateParmDecl *D) { … } void JSONNodeDumper::VisitLinkageSpecDecl(const LinkageSpecDecl *LSD) { … } void JSONNodeDumper::VisitAccessSpecDecl(const AccessSpecDecl *ASD) { … } void JSONNodeDumper::VisitFriendDecl(const FriendDecl *FD) { … } void JSONNodeDumper::VisitObjCIvarDecl(const ObjCIvarDecl *D) { … } void JSONNodeDumper::VisitObjCMethodDecl(const ObjCMethodDecl *D) { … } void JSONNodeDumper::VisitObjCTypeParamDecl(const ObjCTypeParamDecl *D) { … } void JSONNodeDumper::VisitObjCCategoryDecl(const ObjCCategoryDecl *D) { … } void JSONNodeDumper::VisitObjCCategoryImplDecl(const ObjCCategoryImplDecl *D) { … } void JSONNodeDumper::VisitObjCProtocolDecl(const ObjCProtocolDecl *D) { … } void JSONNodeDumper::VisitObjCInterfaceDecl(const ObjCInterfaceDecl *D) { … } void JSONNodeDumper::VisitObjCImplementationDecl( const ObjCImplementationDecl *D) { … } void JSONNodeDumper::VisitObjCCompatibleAliasDecl( const ObjCCompatibleAliasDecl *D) { … } void JSONNodeDumper::VisitObjCPropertyDecl(const ObjCPropertyDecl *D) { … } void JSONNodeDumper::VisitObjCPropertyImplDecl(const ObjCPropertyImplDecl *D) { … } void JSONNodeDumper::VisitBlockDecl(const BlockDecl *D) { … } void JSONNodeDumper::VisitAtomicExpr(const AtomicExpr *AE) { … } void JSONNodeDumper::VisitObjCEncodeExpr(const ObjCEncodeExpr *OEE) { … } void JSONNodeDumper::VisitObjCMessageExpr(const ObjCMessageExpr *OME) { … } void JSONNodeDumper::VisitObjCBoxedExpr(const ObjCBoxedExpr *OBE) { … } void JSONNodeDumper::VisitObjCSelectorExpr(const ObjCSelectorExpr *OSE) { … } void JSONNodeDumper::VisitObjCProtocolExpr(const ObjCProtocolExpr *OPE) { … } void JSONNodeDumper::VisitObjCPropertyRefExpr(const ObjCPropertyRefExpr *OPRE) { … } void JSONNodeDumper::VisitObjCSubscriptRefExpr( const ObjCSubscriptRefExpr *OSRE) { … } void JSONNodeDumper::VisitObjCIvarRefExpr(const ObjCIvarRefExpr *OIRE) { … } void JSONNodeDumper::VisitObjCBoolLiteralExpr(const ObjCBoolLiteralExpr *OBLE) { … } void JSONNodeDumper::VisitDeclRefExpr(const DeclRefExpr *DRE) { … } void JSONNodeDumper::VisitSYCLUniqueStableNameExpr( const SYCLUniqueStableNameExpr *E) { … } void JSONNodeDumper::VisitPredefinedExpr(const PredefinedExpr *PE) { … } void JSONNodeDumper::VisitUnaryOperator(const UnaryOperator *UO) { … } void JSONNodeDumper::VisitBinaryOperator(const BinaryOperator *BO) { … } void JSONNodeDumper::VisitCompoundAssignOperator( const CompoundAssignOperator *CAO) { … } void JSONNodeDumper::VisitMemberExpr(const MemberExpr *ME) { … } void JSONNodeDumper::VisitCXXNewExpr(const CXXNewExpr *NE) { … } void JSONNodeDumper::VisitCXXDeleteExpr(const CXXDeleteExpr *DE) { … } void JSONNodeDumper::VisitCXXThisExpr(const CXXThisExpr *TE) { … } void JSONNodeDumper::VisitCastExpr(const CastExpr *CE) { … } void JSONNodeDumper::VisitImplicitCastExpr(const ImplicitCastExpr *ICE) { … } void JSONNodeDumper::VisitCallExpr(const CallExpr *CE) { … } void JSONNodeDumper::VisitUnaryExprOrTypeTraitExpr( const UnaryExprOrTypeTraitExpr *TTE) { … } void JSONNodeDumper::VisitSizeOfPackExpr(const SizeOfPackExpr *SOPE) { … } void JSONNodeDumper::VisitUnresolvedLookupExpr( const UnresolvedLookupExpr *ULE) { … } void JSONNodeDumper::VisitAddrLabelExpr(const AddrLabelExpr *ALE) { … } void JSONNodeDumper::VisitCXXTypeidExpr(const CXXTypeidExpr *CTE) { … } void JSONNodeDumper::VisitConstantExpr(const ConstantExpr *CE) { … } void JSONNodeDumper::VisitInitListExpr(const InitListExpr *ILE) { … } void JSONNodeDumper::VisitGenericSelectionExpr( const GenericSelectionExpr *GSE) { … } void JSONNodeDumper::VisitCXXUnresolvedConstructExpr( const CXXUnresolvedConstructExpr *UCE) { … } void JSONNodeDumper::VisitCXXConstructExpr(const CXXConstructExpr *CE) { … } void JSONNodeDumper::VisitExprWithCleanups(const ExprWithCleanups *EWC) { … } void JSONNodeDumper::VisitCXXBindTemporaryExpr( const CXXBindTemporaryExpr *BTE) { … } void JSONNodeDumper::VisitMaterializeTemporaryExpr( const MaterializeTemporaryExpr *MTE) { … } void JSONNodeDumper::VisitCXXDefaultArgExpr(const CXXDefaultArgExpr *Node) { … } void JSONNodeDumper::VisitCXXDefaultInitExpr(const CXXDefaultInitExpr *Node) { … } void JSONNodeDumper::VisitCXXDependentScopeMemberExpr( const CXXDependentScopeMemberExpr *DSME) { … } void JSONNodeDumper::VisitRequiresExpr(const RequiresExpr *RE) { … } void JSONNodeDumper::VisitIntegerLiteral(const IntegerLiteral *IL) { … } void JSONNodeDumper::VisitCharacterLiteral(const CharacterLiteral *CL) { … } void JSONNodeDumper::VisitFixedPointLiteral(const FixedPointLiteral *FPL) { … } void JSONNodeDumper::VisitFloatingLiteral(const FloatingLiteral *FL) { … } void JSONNodeDumper::VisitStringLiteral(const StringLiteral *SL) { … } void JSONNodeDumper::VisitCXXBoolLiteralExpr(const CXXBoolLiteralExpr *BLE) { … } void JSONNodeDumper::VisitIfStmt(const IfStmt *IS) { … } void JSONNodeDumper::VisitSwitchStmt(const SwitchStmt *SS) { … } void JSONNodeDumper::VisitCaseStmt(const CaseStmt *CS) { … } void JSONNodeDumper::VisitLabelStmt(const LabelStmt *LS) { … } void JSONNodeDumper::VisitGotoStmt(const GotoStmt *GS) { … } void JSONNodeDumper::VisitWhileStmt(const WhileStmt *WS) { … } void JSONNodeDumper::VisitObjCAtCatchStmt(const ObjCAtCatchStmt* OACS) { … } void JSONNodeDumper::VisitNullTemplateArgument(const TemplateArgument &TA) { … } void JSONNodeDumper::VisitTypeTemplateArgument(const TemplateArgument &TA) { … } void JSONNodeDumper::VisitDeclarationTemplateArgument( const TemplateArgument &TA) { … } void JSONNodeDumper::VisitNullPtrTemplateArgument(const TemplateArgument &TA) { … } void JSONNodeDumper::VisitIntegralTemplateArgument(const TemplateArgument &TA) { … } void JSONNodeDumper::VisitTemplateTemplateArgument(const TemplateArgument &TA) { … } void JSONNodeDumper::VisitTemplateExpansionTemplateArgument( const TemplateArgument &TA) { … } void JSONNodeDumper::VisitExpressionTemplateArgument( const TemplateArgument &TA) { … } void JSONNodeDumper::VisitPackTemplateArgument(const TemplateArgument &TA) { … } StringRef JSONNodeDumper::getCommentCommandName(unsigned CommandID) const { … } void JSONNodeDumper::visitTextComment(const comments::TextComment *C, const comments::FullComment *) { … } void JSONNodeDumper::visitInlineCommandComment( const comments::InlineCommandComment *C, const comments::FullComment *) { … } void JSONNodeDumper::visitHTMLStartTagComment( const comments::HTMLStartTagComment *C, const comments::FullComment *) { … } void JSONNodeDumper::visitHTMLEndTagComment( const comments::HTMLEndTagComment *C, const comments::FullComment *) { … } void JSONNodeDumper::visitBlockCommandComment( const comments::BlockCommandComment *C, const comments::FullComment *) { … } void JSONNodeDumper::visitParamCommandComment( const comments::ParamCommandComment *C, const comments::FullComment *FC) { … } void JSONNodeDumper::visitTParamCommandComment( const comments::TParamCommandComment *C, const comments::FullComment *FC) { … } void JSONNodeDumper::visitVerbatimBlockComment( const comments::VerbatimBlockComment *C, const comments::FullComment *) { … } void JSONNodeDumper::visitVerbatimBlockLineComment( const comments::VerbatimBlockLineComment *C, const comments::FullComment *) { … } void JSONNodeDumper::visitVerbatimLineComment( const comments::VerbatimLineComment *C, const comments::FullComment *) { … } llvm::json::Object JSONNodeDumper::createFPOptions(FPOptionsOverride FPO) { … } void JSONNodeDumper::VisitCompoundStmt(const CompoundStmt *S) { … }