Changeset 63be3387 for src/GenPoly/GenPoly.h
- Timestamp:
- Nov 14, 2022, 11:52:44 AM (3 years ago)
- Branches:
- ADT, ast-experimental, master
- Children:
- 7d9598d8
- Parents:
- b77f0e1 (diff), 19a8c40 (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.h
rb77f0e1 r63be3387 10 10 // Created On : Mon May 18 07:44:20 2015 11 11 // Last Modified By : Andrew Beach 12 // Last Modified On : Fri Oct 7 15:06:00 202213 // Update Count : 912 // Last Modified On : Mon Oct 24 15:18:00 2022 13 // Update Count : 11 14 14 // 15 15 … … 22 22 #include "AST/Decl.hpp" // for TypeDecl::Data 23 23 #include "AST/Fwd.hpp" // for ApplicationExpr, BaseInstType, Func... 24 #include "AST/Type.hpp" // for TypeInstType::TypeEnvKey 24 25 #include "SymTab/Mangler.h" // for Mangler 25 26 #include "SynTree/Declaration.h" // for TypeDecl::Data, AggregateDecl, Type... … … 28 29 namespace GenPoly { 29 30 30 // TODO Via some tricks this works for ast::TypeDecl::Data as well.31 31 typedef ErasableScopedMap< std::string, TypeDecl::Data > TyVarMap; 32 using TypeVarMap = ErasableScopedMap< std::string, ast::TypeDecl::Data >;32 using TypeVarMap = ErasableScopedMap< ast::TypeInstType::TypeEnvKey, ast::TypeDecl::Data >; 33 33 34 34 /// Replaces a TypeInstType by its referrent in the environment, if applicable 35 35 Type* replaceTypeInst( Type* type, const TypeSubstitution* env ); 36 const Type* replaceTypeInst( const Type* type, const TypeSubstitution* env ); 37 const ast::Type * replaceTypeInst( const ast::Type *, const ast::TypeSubstitution * ); 36 38 37 39 /// returns polymorphic type if is polymorphic type, NULL otherwise; will look up substitution in env if provided … … 53 55 /// true iff function has dynamic-layout return type under the type variable map generated from its forall-parameters 54 56 ReferenceToType *isDynRet( FunctionType *function ); 57 const ast::BaseInstType *isDynRet( const ast::FunctionType * func ); 55 58 56 59 /// A function needs an adapter if it returns a dynamic-layout value or if any of its parameters have dynamic-layout type … … 112 115 /// Prints type variable map 113 116 void printTyVarMap( std::ostream &os, const TyVarMap &tyVarMap ); 114 void printTypeVarMap( std::ostream &os, const TypeVarMap & typeVars );115 117 116 118 /// Gets the mangled name of this type; alias for SymTab::Mangler::mangleType(). 117 inline std::string mangleType( Type *ty ) { return SymTab::Mangler::mangleType( ty ); }119 inline std::string mangleType( const Type *ty ) { return SymTab::Mangler::mangleType( ty ); } 118 120 119 121 /// Gets the name of the sizeof parameter for the type, given its mangled name … … 128 130 /// Gets the name of the layout function for a given aggregate type, given its declaration 129 131 inline std::string layoutofName( AggregateDecl *decl ) { return std::string( "_layoutof_" ) + decl->get_name(); } 132 inline std::string layoutofName( ast::AggregateDecl const * decl ) { 133 return std::string( "_layoutof_" ) + decl->name; 134 } 130 135 131 136 } // namespace GenPoly
Note:
See TracChangeset
for help on using the changeset viewer.