X-Git-Url: http://nitlanguage.org diff --git a/src/transform.nit b/src/transform.nit index 118142a..838b9bc 100644 --- a/src/transform.nit +++ b/src/transform.nit @@ -20,12 +20,13 @@ import astbuilder import astvalidation import semantize intrude import semantize::scope +intrude import semantize::typing redef class ToolContext var transform_phase: Phase = new TransformPhase(self, [typing_phase, auto_super_init_phase]) # --no-shortcut-range - var opt_no_shortcut_range: OptionBool = new OptionBool("Always insantiate a range and its iterator on 'for' loops", "--no-shortcut-range") + var opt_no_shortcut_range: OptionBool = new OptionBool("Always instantiate a range and its iterator on 'for' loops", "--no-shortcut-range") redef init do @@ -103,7 +104,20 @@ redef class AExpr var nadd = v.builder.make_call(recv, na.push_callsite.as(not null), [self]) place.replace_with(nadd) end + + visit_all(v) + + if mtype == null and not is_typed then return # Skip broken + + accept_transform_visitor(v) + end + + redef fun replace_with(other) + do super + if other isa AExpr then + if other.implicit_cast_to == null then other.implicit_cast_to = implicit_cast_to + end end end