Changes in src/Common/Examine.cc [c6b4432:4f6dda0]
- File:
-
- 1 edited
-
src/Common/Examine.cc (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/Common/Examine.cc
rc6b4432 r4f6dda0 19 19 #include "CodeGen/OperatorTable.h" 20 20 #include "InitTweak/InitTweak.h" 21 22 DeclarationWithType * isMainFor( FunctionDecl * func, AggregateDecl::Aggregate kind ) { 23 if (func->name != "main") return nullptr; 24 if (func->type->parameters.size() != 1) return nullptr; 25 26 auto param = func->type->parameters.front(); 27 28 auto type = dynamic_cast<ReferenceType * >(param->get_type()); 29 if (!type) return nullptr; 30 31 auto obj = dynamic_cast<StructInstType *>(type->base); 32 if (!obj) return nullptr; 33 34 if (kind != obj->baseStruct->kind) return nullptr; 35 36 return param; 37 } 21 38 22 39 namespace { … … 52 69 53 70 namespace { 71 Type * getDestructorParam( FunctionDecl * func ) { 72 if ( !CodeGen::isDestructor( func->name ) ) return nullptr; 73 74 auto params = func->type->parameters; 75 if ( 1 != params.size() ) return nullptr; 76 77 auto ref = dynamic_cast<ReferenceType *>( params.front()->get_type() ); 78 if ( ref ) { 79 return ref->base; 80 } 81 return nullptr; 82 } 54 83 55 84 const ast::Type * getDestructorParam( const ast::FunctionDecl * func ) { … … 59 88 } 60 89 90 } 91 92 bool isDestructorFor( FunctionDecl * func, StructDecl * type_decl ) { 93 if ( Type * type = getDestructorParam( func ) ) { 94 auto stype = dynamic_cast<StructInstType *>( type ); 95 return stype && stype->baseStruct == type_decl; 96 } 97 return false; 61 98 } 62 99
Note:
See TracChangeset
for help on using the changeset viewer.