- Timestamp:
- Jun 7, 2021, 2:09:12 PM (5 years ago)
- Branches:
- ADT, ast-experimental, enum, forall-pointer-decay, jacob/cs343-translation, master, new-ast-unique-expr, pthread-emulation, qualifiedEnum, stuck-waitfor-destruct
- Children:
- 5a46e09
- Parents:
- 82f4063 (diff), 53692b3 (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/AST
- Files:
-
- 3 edited
-
Pass.proto.hpp (modified) (1 diff)
-
Type.hpp (modified) (3 diffs)
-
TypeEnvironment.cpp (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
src/AST/Pass.proto.hpp
r82f4063 rbae0d35 119 119 template<typename core_t, typename node_t> 120 120 struct is_valid_previsit { 121 using ret_t = decltype( ((core_t*)nullptr)->previsit( (const node_t *)nullptr) );121 using ret_t = decltype( std::declval<core_t*>()->previsit( std::declval<const node_t *>() ) ); 122 122 123 123 static constexpr bool value = std::is_void< ret_t >::value || -
src/AST/Type.hpp
r82f4063 rbae0d35 402 402 403 403 // compact representation used for map lookups. 404 struct TypeEnvKey { 405 const TypeDecl * base ;406 int formal_usage ;407 int expr_id ;404 struct TypeEnvKey { 405 const TypeDecl * base = nullptr; 406 int formal_usage = 0; 407 int expr_id = 0; 408 408 409 409 TypeEnvKey() = default; … … 440 440 const Type * accept( Visitor & v ) const override { return v.visit( this ); } 441 441 442 std::string typeString() const { 443 if (formal_usage > 0) return std::string("_") + std::to_string(formal_usage) + "_" + std::to_string(expr_id) + "_" + name; 442 std::string typeString() const { 443 if (formal_usage > 0) return std::string("_") + std::to_string(formal_usage) + "_" + std::to_string(expr_id) + "_" + name; 444 444 else return name; 445 445 } … … 548 548 res = p * res + x.expr_id; 549 549 return res; 550 } 550 } 551 551 }; 552 552 } -
src/AST/TypeEnvironment.cpp
r82f4063 rbae0d35 115 115 116 116 void TypeEnvironment::add( const TypeSubstitution & sub ) { 117 for ( const auto p : sub ) {117 for ( const auto & p : sub ) { 118 118 add( EqvClass{ p.first, p.second } ); 119 119 }
Note:
See TracChangeset
for help on using the changeset viewer.