icode: inline methods with closures
[nit.git] / src / analysis / inline_methods.nit
index 0e37bec..eafa6d7 100644 (file)
@@ -35,7 +35,7 @@ special ICodeVisitor
                                var old_seq = icb.seq
                                icb.seq = seq
                                current_icode.insert_before(seq)
-                               var e = icb.inline_routine(ir, ic.exprs)
+                               var e = icb.inline_routine(ir, ic.exprs, ic.closure_defs)
                                var r = ic.result
                                if r != null then
                                        assert e != null
@@ -63,7 +63,8 @@ redef class ICall
                var cn = m.local_class.name
                return (m.is_intern and cn != once ("Object".to_symbol)) or
                        (cn == (once ("Array".to_symbol)) and (mn == (once ("length".to_symbol)) or mn == (once ("[]".to_symbol)))) or
-                       (cn == (once ("AbstractArrayRead".to_symbol)) and (mn == (once ("length".to_symbol)) or mn == (once ("[]".to_symbol))))
+                       (cn == (once ("AbstractArrayRead".to_symbol)) and (mn == (once ("length".to_symbol)) or mn == (once ("[]".to_symbol)))) or
+                       (m.global.intro.local_class.name == (once ("Inline__".to_symbol)))
        end
 end