Changes in src/GenPoly/GenPoly.cc [8d7bef2:682dcae]
- File:
-
- 1 edited
-
src/GenPoly/GenPoly.cc (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/GenPoly/GenPoly.cc
r8d7bef2 r682dcae 100 100 if ( dynamic_cast< TypeInstType * >( type ) ) { 101 101 return type; 102 } else if ( ArrayType * arrayType = dynamic_cast< ArrayType * >( type ) ) { 103 return isPolyType( arrayType->base, env ); 102 104 } else if ( StructInstType *structType = dynamic_cast< StructInstType* >( type ) ) { 103 105 if ( hasPolyParams( structType->get_parameters(), env ) ) return type; … … 115 117 return type; 116 118 } 119 } else if ( ArrayType * arrayType = dynamic_cast< ArrayType * >( type ) ) { 120 return isPolyType( arrayType->base, tyVars, env ); 117 121 } else if ( StructInstType *structType = dynamic_cast< StructInstType* >( type ) ) { 118 122 if ( hasPolyParams( structType->get_parameters(), tyVars, env ) ) return type; … … 367 371 return is<VoidType>( ap->get_base() ) || is<VoidType>( bp->get_base() ) 368 372 || typesPolyCompatible( ap->get_base(), bp->get_base() ); 373 } else if ( aid == type_index{typeid(ReferenceType)} ) { 374 ReferenceType *ap = as<ReferenceType>(a), *bp = as<ReferenceType>(b); 375 return is<VoidType>( ap->get_base() ) || is<VoidType>( bp->get_base() ) 376 || typesPolyCompatible( ap->get_base(), bp->get_base() ); 369 377 } else if ( aid == type_index{typeid(ArrayType)} ) { 370 378 ArrayType *aa = as<ArrayType>(a), *ba = as<ArrayType>(b); … … 437 445 Type * newType = arg->clone(); 438 446 if ( env ) env->apply( newType ); 447 std::unique_ptr<Type> manager( newType ); 439 448 // if the argument's type is polymorphic, we don't need to box again! 440 449 return ! isPolyType( newType );
Note:
See TracChangeset
for help on using the changeset viewer.