src: add some asserts on `super` related things
authorJean Privat <jean@pryen.org>
Thu, 14 Aug 2014 17:37:00 +0000 (13:37 -0400)
committerJean Privat <jean@pryen.org>
Thu, 14 Aug 2014 17:40:04 +0000 (13:40 -0400)
Signed-off-by: Jean Privat <jean@pryen.org>

src/abstract_compiler.nit
src/rapid_type_analysis.nit

index 04ce034..6656d5b 100644 (file)
@@ -1829,6 +1829,7 @@ redef class AMethPropdef
                if auto_super_inits != null then
                        var args = [arguments.first]
                        for auto_super_init in auto_super_inits do
+                               assert auto_super_init.mproperty != mpropdef.mproperty
                                args.clear
                                for i in [0..auto_super_init.msignature.arity+1[ do
                                        args.add(arguments[i])
@@ -1852,6 +1853,8 @@ redef class AMethPropdef
                        else
                                compile_externmeth_to_c(v, mpropdef, arguments)
                        end
+               else
+                       abort
                end
        end
 
index 2a4e8f2..31f4015 100644 (file)
@@ -239,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
@@ -422,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)