Changes in / [9617533:47dd0d2]
- Files:
-
- 5 edited
-
src/AST/Pass.hpp (modified) (2 diffs)
-
src/AST/Pass.impl.hpp (modified) (2 diffs)
-
src/AST/TypeSubstitution.hpp (modified) (3 diffs)
-
src/ResolvExpr/Unify.cc (modified) (1 diff)
-
tests/errors/.expect/completeType.x86.txt (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/AST/Pass.hpp
r9617533 r47dd0d2 48 48 // 49 49 // Several additional features are available through inheritance 50 // | PureVisitor - makes the visitor pure, it never modifies nodes in place and always51 // clones nodes it needs to make changes to52 50 // | WithTypeSubstitution - provides polymorphic const TypeSubstitution * env for the 53 51 // current expression … … 269 267 /// Keep track of the polymorphic const TypeSubstitution * env for the current expression 270 268 271 /// If used the visitor will always clone nodes.269 /// marker to force shallow copies in pass visit 272 270 struct PureVisitor {}; 273 271 -
src/AST/Pass.impl.hpp
r9617533 r47dd0d2 21 21 22 22 #include "AST/TypeSubstitution.hpp" 23 // #include "AST/Copy.hpp" 23 24 24 25 #define VISIT_START( node ) \ … … 328 329 329 330 if( __pass::differs(old_val, new_val) ) { 331 // auto new_parent = mutate(parent); 330 332 auto new_parent = __pass::mutate<core_t>(parent); 331 333 new_parent->*child = new_val; -
src/AST/TypeSubstitution.hpp
r9617533 r47dd0d2 46 46 template< typename SynTreeClass > 47 47 struct ApplyResult { 48 // const SynTreeClass * node; 48 49 ast::ptr<SynTreeClass> node; 49 50 int count; … … 186 187 assert( input ); 187 188 Pass<Substituter> sub( *this, false ); 189 // input = strict_dynamic_cast< const SynTreeClass * >( deepCopy(input)->accept( sub ) ); 188 190 input = strict_dynamic_cast< const SynTreeClass * >( input->accept( sub ) ); 189 191 return { input, sub.core.subCount }; … … 194 196 assert( input ); 195 197 Pass<Substituter> sub( *this, true ); 198 // input = strict_dynamic_cast< const SynTreeClass * >( deepCopy(input)->accept( sub ) ); 196 199 input = strict_dynamic_cast< const SynTreeClass * >( input->accept( sub ) ); 197 200 return { input, sub.core.subCount }; -
src/ResolvExpr/Unify.cc
r9617533 r47dd0d2 1113 1113 ast::Pass<TtypeExpander_new> expander{ tenv }; 1114 1114 1115 // ast::ptr<ast::TupleType> tuplec = tuple; 1116 // ast::ptr<ast::TupleType> tuple2c = tuple2; 1115 1117 const ast::Type * flat = tuple->accept( expander ); 1116 1118 const ast::Type * flat2 = tuple2->accept( expander ); -
tests/errors/.expect/completeType.x86.txt
r9617533 r47dd0d2 6 6 Name: x 7 7 8 ... to: nothing Alternatives are: 8 ... to: nothing 9 with resolved type: 10 void Alternatives are: 9 11 Cost ( 0, 1, 2, 0, 1, -1, 0 ): Generated Cast of: 10 12 Application of … … 20 22 21 23 24 with resolved type: 25 pointer to forall 26 _89_4_DT: data type 27 function 28 ... with parameters 29 intrinsic pointer to instance of type _89_4_DT (not function type) 30 ... returning 31 _retval__operator_deref: reference to instance of type _89_4_DT (not function type) 32 ... with attributes: 33 Attribute with name: unused 34 35 22 36 ... to arguments 23 37 Variable Expression: x: pointer to instance of struct A with body 0 24 38 with resolved type: 39 pointer to instance of struct A with body 0 40 41 with resolved type: 42 reference to instance of struct A with body 0 25 43 ... to: nothing 44 with resolved type: 45 void 26 46 (types: 27 47 void … … 43 63 44 64 65 with resolved type: 66 pointer to forall 67 _89_4_DT: data type 68 function 69 ... with parameters 70 intrinsic pointer to instance of type _89_4_DT (not function type) 71 ... returning 72 _retval__operator_deref: reference to instance of type _89_4_DT (not function type) 73 ... with attributes: 74 Attribute with name: unused 75 76 45 77 ... to arguments 46 78 Variable Expression: x: pointer to instance of struct B with body 1 47 79 with resolved type: 80 pointer to instance of struct B with body 1 81 82 with resolved type: 83 reference to instance of struct B with body 1 48 84 ... to: nothing 85 with resolved type: 86 void 49 87 (types: 50 88 void … … 121 159 ... returning nothing 122 160 161 with resolved type: 162 pointer to forall 163 _108_0_T: sized data type 164 ... with assertions 165 ?=?: pointer to function 166 ... with parameters 167 reference to instance of type _108_0_T (not function type) 168 instance of type _108_0_T (not function type) 169 ... returning 170 _retval__operator_assign: instance of type _108_0_T (not function type) 171 ... with attributes: 172 Attribute with name: unused 173 174 175 ?{}: pointer to function 176 ... with parameters 177 reference to instance of type _108_0_T (not function type) 178 ... returning nothing 179 180 ?{}: pointer to function 181 ... with parameters 182 reference to instance of type _108_0_T (not function type) 183 instance of type _108_0_T (not function type) 184 ... returning nothing 185 186 ^?{}: pointer to function 187 ... with parameters 188 reference to instance of type _108_0_T (not function type) 189 ... returning nothing 190 191 192 function 193 ... with parameters 194 pointer to instance of type _108_0_T (not function type) 195 ... returning nothing 196 123 197 ... to arguments 124 198 Variable Expression: z: pointer to instance of type T (not function type) 125 199 with resolved type: 200 pointer to instance of type T (not function type) 201 202 with resolved type: 203 void 126 204 (types: 127 205 void
Note:
See TracChangeset
for help on using the changeset viewer.