model: rewrite of MType::is_subtype
[nit.git] / src / separate_erasure_compiler.nit
index 25614b1..2e85a75 100644 (file)
@@ -247,17 +247,11 @@ class SeparateErasureCompiler
                end
                v.add("{res}->class = (struct class*) &class_{c_name};")
 
-               for cd in mtype.collect_mclassdefs(self.mainmodule)
-               do
-                       var n = self.modelbuilder.mclassdef2nclassdef[cd]
-                       for npropdef in n.n_propdefs do
-                               if npropdef isa AAttrPropdef then
-                                       npropdef.init_expr(v, res)
-                               end
-                       end
-               end
+               self.generate_init_attr(v, res, mtype)
                v.add("return {res};")
                v.add("\}")
+
+               generate_check_init_instance(mtype)
        end
 
        redef fun new_visitor do return new SeparateErasureCompilerVisitor(self)
@@ -363,7 +357,7 @@ class SeparateErasureCompilerVisitor
                end
                var length = self.int_instance(array.length)
                self.send(self.get_property("with_native", arraytype), [res, nat, length])
-               self.check_init_instance(res)
+               self.check_init_instance(res, arraytype)
                self.add("\}")
                return res
        end