Changes in src/Common/Examine.cc [4f6dda0:1c01c58]
- File:
-
- 1 edited
-
src/Common/Examine.cc (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/Common/Examine.cc
r4f6dda0 r1c01c58 5 5 // file "LICENCE" distributed with Cforall. 6 6 // 7 // Examine. cc -- Helpers for examining AST code.7 // Examine.h -- 8 8 // 9 9 // Author : Andrew Beach 10 10 // Created On : Wed Sept 2 14:02 2020 11 11 // Last Modified By : Andrew Beach 12 // Last Modified On : Fri Dec 10 10:27 202113 // Update Count : 112 // Last Modified On : Wed Sep 8 12:15 2020 13 // Update Count : 0 14 14 // 15 15 16 16 #include "Common/Examine.h" 17 17 18 #include "AST/Type.hpp"19 18 #include "CodeGen/OperatorTable.h" 20 #include "InitTweak/InitTweak.h"21 19 22 20 DeclarationWithType * isMainFor( FunctionDecl * func, AggregateDecl::Aggregate kind ) { … … 38 36 39 37 namespace { 40 41 // getTypeofThis but does some extra checks used in this module.42 const ast::Type * getTypeofThisSolo( const ast::FunctionDecl * func ) {43 if ( 1 != func->params.size() ) {44 return nullptr;45 }46 auto ref = func->type->params.front().as<ast::ReferenceType>();47 return (ref) ? ref->base : nullptr;48 }49 50 }51 52 const ast::DeclWithType * isMainFor(53 const ast::FunctionDecl * func, ast::AggregateDecl::Aggregate kind ) {54 if ( "main" != func->name ) return nullptr;55 if ( 1 != func->params.size() ) return nullptr;56 57 auto param = func->params.front();58 59 auto type = dynamic_cast<const ast::ReferenceType *>( param->get_type() );60 if ( !type ) return nullptr;61 62 auto obj = type->base.as<ast::StructInstType>();63 if ( !obj ) return nullptr;64 65 if ( kind != obj->base->kind ) return nullptr;66 67 return param;68 }69 70 namespace {71 38 Type * getDestructorParam( FunctionDecl * func ) { 72 39 if ( !CodeGen::isDestructor( func->name ) ) return nullptr; … … 81 48 return nullptr; 82 49 } 83 84 const ast::Type * getDestructorParam( const ast::FunctionDecl * func ) {85 if ( !CodeGen::isDestructor( func->name ) ) return nullptr;86 //return InitTweak::getParamThis( func )->type;87 return getTypeofThisSolo( func );88 }89 90 50 } 91 51 … … 97 57 return false; 98 58 } 99 100 bool isDestructorFor(101 const ast::FunctionDecl * func, const ast::StructDecl * type_decl ) {102 if ( const ast::Type * type = getDestructorParam( func ) ) {103 auto stype = dynamic_cast<const ast::StructInstType *>( type );104 return stype && stype->base.get() == type_decl;105 }106 return false;107 }
Note:
See TracChangeset
for help on using the changeset viewer.