Changeset f6964ef
- Timestamp:
- May 17, 2019, 4:03:23 PM (5 years ago)
- Branches:
- ADT, arm-eh, ast-experimental, cleanup-dtors, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, pthread-emulation, qualifiedEnum
- Children:
- 7b149bc
- Parents:
- 675d816 (diff), 172d9342 (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. - Location:
- src
- Files:
-
- 1 added
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
src/AST/Convert.cpp
r675d816 rf6964ef 16 16 #include "Convert.hpp" 17 17 18 #include "AST/Pass.hpp"19 20 18 #include "AST/Attribute.hpp" 21 19 #include "AST/Decl.hpp" … … 23 21 #include "AST/Init.hpp" 24 22 #include "AST/Stmt.hpp" 25 23 #include "AST/TypeSubstitution.hpp" 26 24 27 25 #include "SynTree/Attribute.h" 28 26 #include "SynTree/Declaration.h" 27 #include "SynTree/TypeSubstitution.h" 29 28 30 29 //================================================================================================ … … 1172 1171 } 1173 1172 1173 ast::TypeSubstitution * convertTypeSubstitution(const TypeSubstitution * old) { 1174 1175 ast::TypeSubstitution *rslt = new ast::TypeSubstitution(); 1176 1177 for (decltype(old->begin()) old_i = old->begin(); old_i != old->end(); old_i++) { 1178 rslt->add( old_i->first, 1179 getAccept1<ast::Type>(old_i->second) ); 1180 } 1181 1182 for (decltype(old->beginVar()) old_i = old->beginVar(); old_i != old->endVar(); old_i++) { 1183 rslt->addVar( old_i->first, 1184 getAccept1<ast::Expr>(old_i->second) ); 1185 } 1186 } 1187 1188 void convertInferUnion(ast::Expr::InferUnion &nwInferred, InferredParams oldInferParams, const std::vector<UniqueId> &oldResnSlots) { 1189 1190 (void) nwInferred; 1191 (void) oldInferParams; 1192 (void) oldResnSlots; 1193 1194 // TODO 1195 } 1196 1197 ast::Expr * visitBaseExpr(Expression * old, ast::Expr * nw) { 1198 1199 nw->result = GET_ACCEPT_1(result, Type); 1200 nw->env = convertTypeSubstitution(old->env); 1201 1202 nw->extension = old->extension; 1203 convertInferUnion(nw->inferred, old->inferParams, old->resnSlots); 1204 1205 return nw; 1206 } 1207 1174 1208 virtual void visit( ApplicationExpr * ) override final { 1175 1209 // TODO 1176 1210 } 1177 1211 1178 1212 virtual void visit( UntypedExpr * ) override final { 1179 1180 } 1181 1182 virtual void visit( NameExpr * ) override final { 1183 1213 // TODO 1214 } 1215 1216 virtual void visit( NameExpr * old ) override final { 1217 this->node = visitBaseExpr( old, 1218 new ast::NameExpr( 1219 old->location, 1220 old->get_name() 1221 ) 1222 ); 1184 1223 } 1185 1224 1186 1225 virtual void visit( CastExpr * ) override final { 1187 1226 // TODO ... (rest) 1188 1227 } 1189 1228 -
src/AST/Pass.hpp
r675d816 rf6964ef 300 300 #include "Common/Stats.h" 301 301 302 namespace ast { 302 303 extern struct PassVisitorStats { 303 304 size_t depth = 0; … … 305 306 Stats::Counters::AverageCounter<double> * avg = nullptr; 306 307 } pass_visitor_stats; 308 } 307 309 308 310 #include "AST/Pass.impl.hpp" -
src/AST/TypeSubstitution.cpp
r675d816 rf6964ef 58 58 void TypeSubstitution::add( std::string formalType, const Type *actualType ) { 59 59 typeEnv[ formalType ] = actualType; 60 } 61 62 void TypeSubstitution::addVar( std::string formalExpr, const Expr *actualExpr ) { 63 varEnv[ formalExpr ] = actualExpr; 60 64 } 61 65 -
src/AST/TypeSubstitution.hpp
r675d816 rf6964ef 52 52 bool empty() const; 53 53 54 void addVar( std::string formalExpr, const Expr *actualExpr ); 55 54 56 template< typename FormalIterator, typename ActualIterator > 55 57 void add( FormalIterator formalBegin, FormalIterator formalEnd, ActualIterator actualBegin ); … … 87 89 auto begin() const -> decltype( typeEnv.begin() ) { return typeEnv.begin(); } 88 90 auto end() const -> decltype( typeEnv. end() ) { return typeEnv. end(); } 91 92 auto beginVar() -> decltype( varEnv.begin() ) { return varEnv.begin(); } 93 auto endVar() -> decltype( varEnv. end() ) { return varEnv. end(); } 94 auto beginVar() const -> decltype( varEnv.begin() ) { return varEnv.begin(); } 95 auto endVar() const -> decltype( varEnv. end() ) { return varEnv. end(); } 89 96 }; 90 97 -
src/SynTree/TypeSubstitution.cc
r675d816 rf6964ef 62 62 } // if 63 63 typeEnv[ formalType ] = actualType->clone(); 64 } 65 66 void TypeSubstitution::addVar( std::string formalExpr, Expression *actualExpr ) { 67 varEnv[ formalExpr ] = actualExpr; 64 68 } 65 69 -
src/SynTree/TypeSubstitution.h
r675d816 rf6964ef 48 48 bool empty() const; 49 49 50 void addVar( std::string formalExpr, Expression *actualExpr ); 51 50 52 template< typename FormalIterator, typename ActualIterator > 51 53 void add( FormalIterator formalBegin, FormalIterator formalEnd, ActualIterator actualBegin ); … … 89 91 auto begin() const -> decltype( typeEnv.begin() ) { return typeEnv.begin(); } 90 92 auto end() const -> decltype( typeEnv. end() ) { return typeEnv. end(); } 93 94 auto beginVar() -> decltype( varEnv.begin() ) { return varEnv.begin(); } 95 auto endVar() -> decltype( varEnv. end() ) { return varEnv. end(); } 96 auto beginVar() const -> decltype( varEnv.begin() ) { return varEnv.begin(); } 97 auto endVar() const -> decltype( varEnv. end() ) { return varEnv. end(); } 91 98 }; 92 99
Note: See TracChangeset
for help on using the changeset viewer.