icode: ITypeCheck requires a receiver
[nit.git] / src / icode / icode_tools.nit
index 1201f00..6316748 100644 (file)
@@ -384,12 +384,47 @@ end
 redef class INative
        redef fun inner_dup_with(d)
        do
-               var c2 = new INative(code, d.dup_iregs(exprs))
+               var c2 = new INative(method, d.dup_iregs(exprs))
                c2.is_pure = is_pure
                return c2
        end
 end
 
+redef class IIntValue
+       redef fun inner_dup_with(d)
+       do
+               return new IIntValue(value)
+       end
+end
+
+redef class IBoolValue
+       redef fun inner_dup_with(d)
+       do
+               return new IBoolValue(value)
+       end
+end
+
+redef class IStringValue
+       redef fun inner_dup_with(d)
+       do
+               return new IStringValue(value)
+       end
+end
+
+redef class IFloatValue
+       redef fun inner_dup_with(d)
+       do
+               return new IFloatValue(value)
+       end
+end
+
+redef class ICharValue
+       redef fun inner_dup_with(d)
+       do
+               return new ICharValue(value)
+       end
+end
+
 redef class IMove
        redef fun inner_dup_with(d)
        do
@@ -421,7 +456,7 @@ end
 redef class ITypeCheck
        redef fun inner_dup_with(d)
        do
-               return new ITypeCheck(d.dup_ireg(expr), stype)
+               return new ITypeCheck(d.dup_ireg(expr1), d.dup_ireg(expr2), stype)
        end
 end