- File:
-
- 1 edited
-
src/ResolvExpr/ConversionCost.cc (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/ResolvExpr/ConversionCost.cc
r00ac42e r4ee3b0c1 42 42 Cost conversionCost( Type *src, Type *dest, const SymTab::Indexer &indexer, const TypeEnvironment &env ) { 43 43 if ( TypeInstType *destAsTypeInst = dynamic_cast< TypeInstType* >( dest ) ) { 44 EqvClass eqvClass; 45 NamedTypeDecl *namedType; 44 46 PRINT( std::cerr << "type inst " << destAsTypeInst->name; ) 45 if ( const EqvClass* eqvClass = env.lookup( destAsTypeInst->name) ) {46 if ( eqvClass ->type ) {47 return conversionCost( src, eqvClass ->type, indexer, env );47 if ( env.lookup( destAsTypeInst->name, eqvClass ) ) { 48 if ( eqvClass.type ) { 49 return conversionCost( src, eqvClass.type, indexer, env ); 48 50 } else { 49 51 return Cost::infinity; 50 52 } 51 } else if ( NamedTypeDecl *namedType = indexer.lookupType( destAsTypeInst->name) ) {53 } else if ( ( namedType = indexer.lookupType( destAsTypeInst->name ) ) ) { 52 54 PRINT( std::cerr << " found" << std::endl; ) 53 55 TypeDecl *type = dynamic_cast< TypeDecl* >( namedType ); … … 367 369 368 370 void ConversionCost::postvisit( TypeInstType *inst ) { 369 if ( const EqvClass *eqvClass = env.lookup( inst->name ) ) { 370 cost = costFunc( eqvClass->type, dest, indexer, env ); 371 EqvClass eqvClass; 372 NamedTypeDecl *namedType; 373 if ( env.lookup( inst->name, eqvClass ) ) { 374 cost = costFunc( eqvClass.type, dest, indexer, env ); 371 375 } else if ( TypeInstType *destAsInst = dynamic_cast< TypeInstType* >( dest ) ) { 372 376 if ( inst->name == destAsInst->name ) { 373 377 cost = Cost::zero; 374 378 } 375 } else if ( NamedTypeDecl *namedType = indexer.lookupType( inst->name) ) {379 } else if ( ( namedType = indexer.lookupType( inst->name ) ) ) { 376 380 TypeDecl *type = dynamic_cast< TypeDecl* >( namedType ); 377 381 // all typedefs should be gone by this point
Note:
See TracChangeset
for help on using the changeset viewer.