Changeset b067d9b for src/GenPoly/GenPoly.cc
- Timestamp:
- Oct 29, 2019, 4:01:24 PM (6 years ago)
- Branches:
- ADT, arm-eh, ast-experimental, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, pthread-emulation, qualifiedEnum
- Children:
- 773db65, 9421f3d8
- Parents:
- 7951100 (diff), 8364209 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/GenPoly/GenPoly.cc
r7951100 rb067d9b 24 24 #include <vector> // for vector 25 25 26 #include "AST/Type.hpp" 26 27 #include "GenPoly/ErasableScopedMap.h" // for ErasableScopedMap<>::const_it... 27 28 #include "ResolvExpr/typeops.h" // for flatten … … 262 263 } else { 263 264 return dynamic_cast< FunctionType* >( ty ); // pointer if FunctionType, NULL otherwise 265 } 266 } 267 268 const ast::FunctionType * getFunctionType( const ast::Type * ty ) { 269 if ( auto pty = dynamic_cast< const ast::PointerType * >( ty ) ) { 270 return pty->base.as< ast::FunctionType >(); 271 } else { 272 return dynamic_cast< const ast::FunctionType * >( ty ); 264 273 } 265 274 } … … 440 449 } 441 450 442 bool needsBoxing( Type * param, Type * arg, const TyVarMap &exprTyVars, TypeSubstitution * env ) {451 bool needsBoxing( Type * param, Type * arg, const TyVarMap &exprTyVars, const TypeSubstitution * env ) { 443 452 // is parameter is not polymorphic, don't need to box 444 453 if ( ! isPolyType( param, exprTyVars ) ) return false; … … 450 459 } 451 460 452 bool needsBoxing( Type * param, Type * arg, ApplicationExpr * appExpr, TypeSubstitution * env ) {461 bool needsBoxing( Type * param, Type * arg, ApplicationExpr * appExpr, const TypeSubstitution * env ) { 453 462 FunctionType * function = getFunctionType( appExpr->function->result ); 454 463 assertf( function, "ApplicationExpr has non-function type: %s", toString( appExpr->function->result ).c_str() ); … … 459 468 460 469 void addToTyVarMap( TypeDecl * tyVar, TyVarMap &tyVarMap ) { 461 // xxx - should this actually be insert? 462 tyVarMap[ tyVar->get_name() ] = TypeDecl::Data{ tyVar }; 470 tyVarMap.insert( tyVar->name, TypeDecl::Data{ tyVar } ); 463 471 } 464 472
Note:
See TracChangeset
for help on using the changeset viewer.