Changes in src/GenPoly/GenPoly.cc [9b18044:ae1b9ea]
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/GenPoly/GenPoly.cc
r9b18044 rae1b9ea 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 box 436 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 434 452 void addToTyVarMap( TypeDecl * tyVar, TyVarMap &tyVarMap ) { 435 453 // xxx - should this actually be insert?
Note:
See TracChangeset
for help on using the changeset viewer.