Changes in src/GenPoly/GenPoly.cc [ae1b9ea:9b18044]
- File:
-
- 1 edited
-
src/GenPoly/GenPoly.cc (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
src/GenPoly/GenPoly.cc
rae1b9ea r9b18044 432 432 } 433 433 434 bool needsBoxing( Type * param, Type * arg, const TyVarMap &exprTyVars, TypeSubstitution * env ) {435 // is parameter is not polymorphic, don't need to box436 if ( ! isPolyType( param, exprTyVars ) ) return false;437 Type * newType = arg->clone();438 if ( env ) env->apply( newType );439 std::unique_ptr<Type> manager( newType );440 // if the argument's type is polymorphic, we don't need to box again!441 return ! isPolyType( newType );442 }443 444 bool needsBoxing( Type * param, Type * arg, ApplicationExpr * appExpr, TypeSubstitution * env ) {445 FunctionType * function = getFunctionType( appExpr->function->result );446 assertf( function, "ApplicationExpr has non-function type: %s", toString( appExpr->function->result ).c_str() );447 TyVarMap exprTyVars( TypeDecl::Data{} );448 makeTyVarMap( function, exprTyVars );449 return needsBoxing( param, arg, exprTyVars, env );450 }451 452 434 void addToTyVarMap( TypeDecl * tyVar, TyVarMap &tyVarMap ) { 453 435 // xxx - should this actually be insert?
Note:
See TracChangeset
for help on using the changeset viewer.