src: add some asserts on `super` related things
[nit.git] / src / rapid_type_analysis.nit
index 17d5e0c..31f4015 100644 (file)
@@ -190,11 +190,18 @@ class RapidTypeAnalysis
                if initprop != null then
                        add_send(maintype, initprop)
                end
-               var mainprop = mainmodule.try_get_primitive_method("main", maintype.mclass)
+               var mainprop = mainmodule.try_get_primitive_method("run", maintype.mclass) or else
+                       mainmodule.try_get_primitive_method("main", maintype.mclass)
                if mainprop != null then
                        add_send(maintype, mainprop)
                end
 
+               var finalizable_type = mainmodule.finalizable_type
+               if finalizable_type != null then
+                       var finalize_meth = mainmodule.try_get_primitive_method("finalize", finalizable_type.mclass)
+                       if finalize_meth != null then add_send(finalizable_type, finalize_meth)
+               end
+
                # Force primitive types
                force_alive("Bool")
                force_alive("Int")
@@ -232,6 +239,7 @@ class RapidTypeAnalysis
                                # It is an init for a class?
                                if mmeth.name == "init" then
                                        var nclassdef = self.modelbuilder.mclassdef2nclassdef[mmethoddef.mclassdef]
+                                       assert mmethoddef == nclassdef.mfree_init
                                        var super_inits = nclassdef.super_inits
                                        if super_inits != null then
                                                #assert args.length == 1
@@ -415,6 +423,7 @@ class RapidTypeAnalysis
 
        fun add_super_send(recv: MType, mpropdef: MMethodDef)
        do
+               assert mpropdef.has_supercall
                if live_super_sends.has(mpropdef) then return
                #print "new super prop: {mpropdef}"
                live_super_sends.add(mpropdef)