Created
March 2, 2015 21:15
-
-
Save waTeim/8757662c445ce3b4084f to your computer and use it in GitHub Desktop.
Typedef traversal assert failure
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <iostream> | |
#include "clang/Frontend/FrontendActions.h" | |
#include "clang/Tooling/CommonOptionsParser.h" | |
#include "clang/Tooling/Tooling.h" | |
#include "llvm/Support/CommandLine.h" | |
#include "clang/ASTMatchers/ASTMatchers.h" | |
#include "clang/ASTMatchers/ASTMatchFinder.h" | |
using namespace std; | |
using namespace clang; | |
using namespace clang::ast_matchers; | |
using namespace clang::tooling; | |
using namespace llvm; | |
static llvm::cl::OptionCategory MyToolCategory("my-tool options"); | |
static cl::extrahelp CommonHelp(CommonOptionsParser::HelpMessage); | |
static cl::extrahelp MoreHelp("\nMore help text..."); | |
DeclarationMatcher ParseNodeMatcher = typedefDecl(isExpansionInFileMatching(".*parsenodes\\.h")).bind("typedef"); | |
class TypedefPrinter: public MatchFinder::MatchCallback | |
{ | |
public: | |
virtual void run(const MatchFinder::MatchResult &Result) | |
{ | |
if(const TypedefDecl *decl = Result.Nodes.getNodeAs<clang::TypedefDecl>("typedef")) | |
{ | |
const Type *type = decl->getTypeForDecl(); | |
string id = decl->getDeclName().getAsString(); | |
if(type) | |
{ | |
if(type->isRecordType()) | |
{ | |
cout << "Processing record type: " << id << endl; | |
const RecordType *asRecordType = static_cast<const RecordType*>(type); | |
RecordDecl *rdecl = asRecordType->getDecl(); | |
for(RecordDecl::field_iterator field = rdecl->field_begin();field != rdecl->field_end();field++) | |
{ | |
string fieldId = field->getDeclName().getAsString(); | |
cout << "\t" << fieldId << endl; | |
} | |
} | |
} | |
else cout << "Skipping non-record type: " << id << endl; | |
} | |
else cout << "Missing type information for typeName: " << id << endl; | |
} | |
} | |
}; | |
int main(int argc, const char **argv) | |
{ | |
CommonOptionsParser OptionsParser(argc,argv,MyToolCategory); | |
ClangTool Tool(OptionsParser.getCompilations(),OptionsParser.getSourcePathList()); | |
TypedefPrinter Printer; | |
MatchFinder Finder; | |
Finder.addMatcher(ParseNodeMatcher,&Printer); | |
return Tool.run(newFrontendActionFactory(&Finder).get()); | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
include <postgres.h> | |
#include <nodes/parsenodes.h> | |
QuerySource QuerySource_var; SortByDir SortByDir_var; SortByNulls SortByNulls_var; AclMode AclMode_var; Query Query_var; TypeName TypeName_var; ColumnRef ColumnRef_var; ParamRef ParamRef_var; A_Expr_Kind A_Expr_Kind_var; A_Expr A_Expr_var; A_Const A_Const_var; TypeCast TypeCast_var; CollateClause CollateClause_var; FuncCall FuncCall_var; A_Star A_Star_var; A_Indices A_Indices_var; A_Indirection A_Indirection_var; A_ArrayExpr A_ArrayExpr_var; ResTarget ResTarget_var; MultiAssignRef MultiAssignRef_var; SortBy SortBy_var; WindowDef WindowDef_var; RangeSubselect RangeSubselect_var; RangeFunction RangeFunction_var; ColumnDef ColumnDef_var; TableLikeClause TableLikeClause_var; TableLikeOption TableLikeOption_var; IndexElem IndexElem_var; DefElemAction DefElemAction_var; DefElem DefElem_var; LockClauseStrength LockClauseStrength_var; LockingClause LockingClause_var; XmlSerialize XmlSerialize_var; RTEKind RTEKind_var; RangeTblEntry RangeTblEntry_var; RangeTblFunction RangeTblFunction_var; WithCheckOption WithCheckOption_var; SortGroupClause SortGroupClause_var; WindowClause WindowClause_var; RowMarkClause RowMarkClause_var; WithClause WithClause_var; CommonTableExpr CommonTableExpr_var; InsertStmt InsertStmt_var; DeleteStmt DeleteStmt_var; UpdateStmt UpdateStmt_var; SetOperation SetOperation_var; SelectStmt SelectStmt_var; SetOperationStmt SetOperationStmt_var; ObjectType ObjectType_var; CreateSchemaStmt CreateSchemaStmt_var; DropBehavior DropBehavior_var; AlterTableStmt AlterTableStmt_var; AlterTableType AlterTableType_var; ReplicaIdentityStmt ReplicaIdentityStmt_var; AlterTableCmd AlterTableCmd_var; AlterDomainStmt AlterDomainStmt_var; GrantTargetType GrantTargetType_var; GrantObjectType GrantObjectType_var; GrantStmt GrantStmt_var; PrivGrantee PrivGrantee_var; FuncWithArgs FuncWithArgs_var; AccessPriv AccessPriv_var; GrantRoleStmt GrantRoleStmt_var; AlterDefaultPrivilegesStmt AlterDefaultPrivilegesStmt_var; CopyStmt CopyStmt_var; VariableSetKind VariableSetKind_var; VariableSetStmt VariableSetStmt_var; VariableShowStmt VariableShowStmt_var; CreateStmt CreateStmt_var; ConstrType ConstrType_var; Constraint Constraint_var; CreateTableSpaceStmt CreateTableSpaceStmt_var; DropTableSpaceStmt DropTableSpaceStmt_var; AlterTableSpaceOptionsStmt AlterTableSpaceOptionsStmt_var; AlterTableMoveAllStmt AlterTableMoveAllStmt_var; CreateExtensionStmt CreateExtensionStmt_var; AlterExtensionStmt AlterExtensionStmt_var; AlterExtensionContentsStmt AlterExtensionContentsStmt_var; CreateFdwStmt CreateFdwStmt_var; AlterFdwStmt AlterFdwStmt_var; CreateForeignServerStmt CreateForeignServerStmt_var; AlterForeignServerStmt AlterForeignServerStmt_var; CreateForeignTableStmt CreateForeignTableStmt_var; CreateUserMappingStmt CreateUserMappingStmt_var; AlterUserMappingStmt AlterUserMappingStmt_var; DropUserMappingStmt DropUserMappingStmt_var; ImportForeignSchemaType ImportForeignSchemaType_var; ImportForeignSchemaStmt ImportForeignSchemaStmt_var; CreatePolicyStmt CreatePolicyStmt_var; AlterPolicyStmt AlterPolicyStmt_var; CreateTrigStmt CreateTrigStmt_var; CreateEventTrigStmt CreateEventTrigStmt_var; AlterEventTrigStmt AlterEventTrigStmt_var; CreatePLangStmt CreatePLangStmt_var; RoleStmtType RoleStmtType_var; CreateRoleStmt CreateRoleStmt_var; AlterRoleStmt AlterRoleStmt_var; AlterRoleSetStmt AlterRoleSetStmt_var; DropRoleStmt DropRoleStmt_var; CreateSeqStmt CreateSeqStmt_var; AlterSeqStmt AlterSeqStmt_var; DefineStmt DefineStmt_var; CreateDomainStmt CreateDomainStmt_var; CreateOpClassStmt CreateOpClassStmt_var; CreateOpClassItem CreateOpClassItem_var; CreateOpFamilyStmt CreateOpFamilyStmt_var; AlterOpFamilyStmt AlterOpFamilyStmt_var; DropStmt DropStmt_var; TruncateStmt TruncateStmt_var; CommentStmt CommentStmt_var; SecLabelStmt SecLabelStmt_var; DeclareCursorStmt DeclareCursorStmt_var; ClosePortalStmt ClosePortalStmt_var; FetchDirection FetchDirection_var; FetchStmt FetchStmt_var; IndexStmt IndexStmt_var; CreateFunctionStmt CreateFunctionStmt_var; FunctionParameterMode FunctionParameterMode_var; FunctionParameter FunctionParameter_var; AlterFunctionStmt AlterFunctionStmt_var; DoStmt DoStmt_var; InlineCodeBlock InlineCodeBlock_var; RenameStmt RenameStmt_var; AlterObjectSchemaStmt AlterObjectSchemaStmt_var; AlterOwnerStmt AlterOwnerStmt_var; RuleStmt RuleStmt_var; NotifyStmt NotifyStmt_var; ListenStmt ListenStmt_var; UnlistenStmt UnlistenStmt_var; TransactionStmtKind TransactionStmtKind_var; TransactionStmt TransactionStmt_var; CompositeTypeStmt CompositeTypeStmt_var; CreateEnumStmt CreateEnumStmt_var; CreateRangeStmt CreateRangeStmt_var; AlterEnumStmt AlterEnumStmt_var; ViewCheckOption ViewCheckOption_var; ViewStmt ViewStmt_var; LoadStmt LoadStmt_var; CreatedbStmt CreatedbStmt_var; AlterDatabaseStmt AlterDatabaseStmt_var; AlterDatabaseSetStmt AlterDatabaseSetStmt_var; DropdbStmt DropdbStmt_var; AlterSystemStmt AlterSystemStmt_var; ClusterStmt ClusterStmt_var; VacuumOption VacuumOption_var; VacuumStmt VacuumStmt_var; ExplainStmt ExplainStmt_var; CreateTableAsStmt CreateTableAsStmt_var; RefreshMatViewStmt RefreshMatViewStmt_var; CheckPointStmt CheckPointStmt_var; DiscardMode DiscardMode_var; DiscardStmt DiscardStmt_var; LockStmt LockStmt_var; ConstraintsSetStmt ConstraintsSetStmt_var; ReindexObjectType ReindexObjectType_var; ReindexStmt ReindexStmt_var; CreateConversionStmt CreateConversionStmt_var; CreateCastStmt CreateCastStmt_var; PrepareStmt PrepareStmt_var; ExecuteStmt ExecuteStmt_var; DeallocateStmt DeallocateStmt_var; DropOwnedStmt DropOwnedStmt_var; ReassignOwnedStmt ReassignOwnedStmt_var; AlterTSDictionaryStmt AlterTSDictionaryStmt_var; AlterTSConfigurationStmt AlterTSConfigurationStmt_var; | |
int main(int argc,char *argv[]){} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment