typing: allow `new` on interface and abstract classes that have a `new`-factory
[nit.git] / src / compiler / separate_erasure_compiler.nit
index af3a43c..55844f6 100644 (file)
@@ -20,11 +20,11 @@ intrude import separate_compiler
 # Add separate erased compiler specific options
 redef class ToolContext
        # --erasure
-       var opt_erasure: OptionBool = new OptionBool("Erase generic types", "--erasure")
+       var opt_erasure = new OptionBool("Erase generic types", "--erasure")
        # --rta
        var opt_rta = new OptionBool("Activate RTA (implicit with --global and --separate)", "--rta")
        # --no-check-erasure-cast
-       var opt_no_check_erasure_cast: OptionBool = new OptionBool("Disable implicit casts on unsafe return with erasure-typing policy (dangerous)", "--no-check-erasure-cast")
+       var opt_no_check_erasure_cast = new OptionBool("Disable implicit casts on unsafe return with erasure-typing policy (dangerous)", "--no-check-erasure-cast")
 
        redef init
        do
@@ -226,7 +226,7 @@ class SeparateErasureCompiler
                var v = self.new_visitor
 
                var rta = runtime_type_analysis
-               var is_dead = mclass.kind == abstract_kind or mclass.kind == interface_kind
+               var is_dead = false # mclass.kind == abstract_kind or mclass.kind == interface_kind
                if not is_dead and rta != null and not rta.live_classes.has(mclass) and mtype.ctype == "val*" and mclass.name != "NativeArray" then
                        is_dead = true
                end
@@ -549,7 +549,6 @@ class SeparateErasureCompilerVisitor
                end
 
                var class_ptr
-               var type_table
                if value.mtype.ctype == "val*" then
                        class_ptr = "{value}->class->"
                else