Merge remote-tracking branch 'upstream/master' into init_auto
authorFlorian Deljarry <deljarry.florian@gmail.com>
Wed, 6 Nov 2019 01:56:33 +0000 (20:56 -0500)
committerFlorian Deljarry <deljarry.florian@gmail.com>
Wed, 6 Nov 2019 01:56:33 +0000 (20:56 -0500)
Signed-off-by: Florian Deljarry <deljarry.florian@gmail.com>

37 files changed:
src/compiler/abstract_compiler.nit
src/compiler/java_compiler.nit
src/interpreter/naive_interpreter.nit
src/model/model.nit
src/modelize/modelize_property.nit
src/nitni/nitni_callbacks.nit
src/nitni/nitni_utilities.nit
src/rapid_type_analysis.nit
src/semantize/auto_super_init.nit
src/semantize/typing.nit
src/vm/vm_optimizations.nit
tests/sav/base_arg_default_autoinit_alt1.res
tests/sav/base_attr_annot_1alt1.res
tests/sav/base_attr_annot_alt1.res
tests/sav/base_init_basic_alt3.res
tests/sav/base_init_basic_alt5.res
tests/sav/base_init_combine_alt1.res
tests/sav/base_init_noinit_alt4.res
tests/sav/base_init_super_call2_alt3.res
tests/sav/base_init_super_call2_alt6.res
tests/sav/base_vararg_mult_alt1.res
tests/sav/error_defs_init_1alt1_alt2.res
tests/sav/error_defs_init_1alt2_alt1.res
tests/sav/error_defs_init_1alt2_alt2.res
tests/sav/error_init_auto.res
tests/sav/error_init_auto_alt1.res
tests/sav/error_init_auto_alt2.res
tests/sav/error_init_auto_alt3.res
tests/sav/error_init_auto_alt4.res
tests/sav/nitmetrics_args1.res
tests/sav/nituml_args1.res
tests/sav/nituml_args2.res
tests/sav/nituml_args3.res
tests/sav/nituml_args4.res
tests/sav/test_highlight_args1.res
tests/sav/test_model_visitor_args1.res
tests/sav/test_test_phase_args1.res

index 77a20f4..44cad4f 100644 (file)
@@ -1353,29 +1353,6 @@ abstract class AbstractCompilerVisitor
        fun compile_callsite(callsite: CallSite, arguments: Array[RuntimeVariable]): nullable RuntimeVariable
        do
                if callsite.is_broken then return null
-               var initializers = callsite.mpropdef.initializers
-               if not initializers.is_empty then
-                       var recv = arguments.first
-
-                       var i = 1
-                       for p in initializers do
-                               if p isa MMethod then
-                                       var args = [recv]
-                                       for x in p.intro.msignature.mparameters do
-                                               args.add arguments[i]
-                                               i += 1
-                                       end
-                                       self.send(p, args)
-                               else if p isa MAttribute then
-                                       self.write_attribute(p, recv, arguments[i])
-                                       i += 1
-                               else abort
-                       end
-                       assert i == arguments.length
-
-                       return self.send(callsite.mproperty, [recv])
-               end
-
                return self.send(callsite.mproperty, arguments)
        end
 
@@ -1412,7 +1389,7 @@ abstract class AbstractCompilerVisitor
        # of runtime variables to use in the call.
        fun varargize(mpropdef: MMethodDef, map: nullable SignatureMap, recv: RuntimeVariable, args: SequenceRead[AExpr]): Array[RuntimeVariable]
        do
-               var msignature = mpropdef.new_msignature or else mpropdef.msignature.as(not null)
+               var msignature = mpropdef.msignature.as(not null)
                var res = new Array[RuntimeVariable]
                res.add(recv)
 
@@ -3710,6 +3687,32 @@ redef class AClassdef
                                v.supercall(mpropdef, arguments.first.mtype.as(MClassType), arguments)
                        end
                        return
+               else if mclassdef.auto_init == mpropdef then
+                       var recv = arguments.first
+                       var initializers = mpropdef.initializers
+                       var no_init = false
+                       if not initializers.is_empty then
+
+                               var i = 1
+                               for p in initializers do
+                                       if p isa MMethod then
+                                               var args = [recv]
+                                               for x in p.intro.msignature.mparameters do
+                                                       args.add arguments[i]
+                                                       i += 1
+                                               end
+                                               v.send(p, args)
+                                               if p.intro.is_calling_init then no_init = true
+                                       else if p isa MAttribute then
+                                               v.write_attribute(p, recv, arguments[i])
+                                               i += 1
+                                       else abort
+                               end
+                               assert i == arguments.length
+
+                       end
+                       if not no_init then v.send(mclass.the_root_init_mmethod.as(not null), [recv])
+                       return
                else
                        abort
                end
index 60aea2b..7b83104 100644 (file)
@@ -497,7 +497,7 @@ class JavaCompilerVisitor
        # This method is used to manage varargs in signatures and returns the real array
        # of runtime variables to use in the call.
        fun varargize(mpropdef: MMethodDef, map: nullable SignatureMap, recv: RuntimeVariable, args: SequenceRead[AExpr]): Array[RuntimeVariable] do
-               var msignature = mpropdef.new_msignature or else mpropdef.msignature.as(not null)
+               var msignature = mpropdef.msignature.as(not null)
                var res = new Array[RuntimeVariable]
                res.add(recv)
 
index 7557da7..4125cfa 100644 (file)
@@ -490,7 +490,7 @@ class NaiveInterpreter
        # Return `null` if one of the evaluation of the arguments return null.
        fun varargize(mpropdef: MMethodDef, map: nullable SignatureMap, recv: Instance, args: SequenceRead[AExpr]): nullable Array[Instance]
        do
-               var msignature = mpropdef.new_msignature or else mpropdef.msignature.as(not null)
+               var msignature = mpropdef.msignature.as(not null)
                var res = new Array[Instance]
                res.add(recv)
 
@@ -615,28 +615,6 @@ class NaiveInterpreter
        fun callsite(callsite: nullable CallSite, arguments: Array[Instance]): nullable Instance
        do
                if callsite == null then return null
-               var initializers = callsite.mpropdef.initializers
-               if not initializers.is_empty then
-                       var recv = arguments.first
-                       var i = 1
-                       for p in initializers do
-                               if p isa MMethod then
-                                       var args = [recv]
-                                       for x in p.intro.msignature.mparameters do
-                                               args.add arguments[i]
-                                               i += 1
-                                       end
-                                       self.send(p, args)
-                               else if p isa MAttribute then
-                                       assert recv isa MutableInstance
-                                       write_attribute(p, recv, arguments[i])
-                                       i += 1
-                               else abort
-                       end
-                       assert i == arguments.length
-
-                       return send(callsite.mproperty, [recv])
-               end
                return send(callsite.mproperty, arguments)
        end
 
@@ -1657,6 +1635,31 @@ redef class AClassdef
                                v.call(superpd, arguments)
                        end
                        return null
+               else if mclassdef.auto_init == mpropdef then
+                       var recv = arguments.first
+                       var initializers = mpropdef.initializers
+                       var no_init = false
+                       if not initializers.is_empty then
+                               var i = 1
+                               for p in initializers do
+                                       if p isa MMethod then
+                                               var args = [recv]
+                                               for x in p.intro.msignature.mparameters do
+                                                       args.add arguments[i]
+                                                       i += 1
+                                               end
+                                               v.send(p, args)
+                                               if p.intro.is_calling_init then no_init = true
+                                       else if p isa MAttribute then
+                                               assert recv isa MutableInstance
+                                               v.write_attribute(p, recv, arguments[i])
+                                               i += 1
+                                       else abort
+                               end
+                               assert i == arguments.length
+                       end
+                       if not no_init then v.send(mclass.the_root_init_mmethod.as(not null), [recv])
+                       return null
                else
                        abort
                end
index e3fa3fd..c60a8fa 100644 (file)
@@ -778,6 +778,9 @@ class MClassDef
        # All property introductions and redefinitions in `self` (not inheritance).
        var mpropdefs = new Array[MPropDef]
 
+       # The special autoinit constructor
+       var auto_init: nullable MMethodDef = null is writable
+
        # All property introductions and redefinitions (not inheritance) in `self` by its associated property.
        var mpropdefs_by_property = new HashMap[MProperty, MPropDef]
 
@@ -2622,19 +2625,17 @@ class MMethodDef
        # The signature attached to the property definition
        var msignature: nullable MSignature = null is writable
 
-       # The signature attached to the `new` call on a root-init
-       # This is a concatenation of the signatures of the initializers
-       #
-       # REQUIRE `mproperty.is_root_init == (new_msignature != null)`
-       var new_msignature: nullable MSignature = null is writable
-
        # List of initialisers to call in root-inits
        #
        # They could be setters or attributes
-       #
-       # REQUIRE `mproperty.is_root_init == (new_msignature != null)`
        var initializers = new Array[MProperty]
 
+       # Does the method take the responsibility to call `init`?
+       #
+       # If the method is used as an initializer, then
+       # using this information prevents to call `init` twice.
+       var is_calling_init = false is writable
+
        # Is the method definition abstract?
        var is_abstract: Bool = false is writable
 
index 35e210e..c236170 100644 (file)
@@ -66,10 +66,9 @@ redef class ModelBuilder
                        toolcontext.run_phases_on_npropdef(res)
                        return res
                end
-               if mpropdef isa MMethodDef and mpropdef.mproperty.is_root_init then
-                       res = mclassdef2nclassdef.get_or_null(mpropdef.mclassdef)
-                       if res != null then return res
-               end
+               # Fall back to the class node if any.
+               res = mclassdef2nclassdef.get_or_null(mpropdef.mclassdef)
+               if res != null then return res
                return null
        end
 
@@ -161,11 +160,9 @@ redef class ModelBuilder
                        var mparameters = new Array[MParameter]
                        var msignature = new MSignature(mparameters, null)
                        mpropdef.msignature = msignature
-                       mpropdef.new_msignature = msignature
                        mprop.is_init = true
                        self.toolcontext.info("{mclassdef} gets a free empty constructor {mpropdef}{msignature}", 3)
                        the_root_init_mmethod = mprop
-                       return
                end
 
                # Is there already a constructor defined?
@@ -176,12 +173,16 @@ redef class ModelBuilder
                        if mpropdef.mproperty.is_root_init then
                                assert defined_init == null
                                defined_init = mpropdef
-                       else if mpropdef.mproperty.name == "init" then
+                       else if mpropdef.mproperty.name == "autoinit" then
                                # An explicit old-style init named "init", so return
                                return
                        end
                end
 
+               if mclassdef.auto_init != null then
+                       return
+               end
+
                if not nclassdef isa AStdClassdef then return
 
                # Collect undefined attributes
@@ -238,10 +239,12 @@ redef class ModelBuilder
                if the_root_init_mmethod == null then return
 
                # Look for most-specific new-stype init definitions
-               var spropdefs = the_root_init_mmethod.lookup_super_definitions(mclassdef.mmodule, mclassdef.bound_mtype)
-               if spropdefs.is_empty then
-                       toolcontext.error(nclassdef.location, "Error: `{mclassdef}` does not specialize `{the_root_init_mmethod.intro_mclassdef}`. Possible duplication of the root class `Object`?")
-                       return
+               var spropdefs = new ArraySet[MMethodDef]
+               for x in mclassdef.in_hierarchy.direct_greaters do
+                       var y = x.mclass.intro.auto_init
+                       if y == null then continue
+                       if y.is_broken or y.msignature == null then return
+                       spropdefs.add y
                end
 
                # Look at the autoinit class-annotation
@@ -295,13 +298,31 @@ redef class ModelBuilder
                                        abort
                                end
                        end
-               else
+               else if spropdefs.not_empty then
+                       # Search for inherited manual autoinit
+                       var manual = null
+                       for s in spropdefs do
+                               if mpropdef2npropdef.has_key(s) then
+                                       self.toolcontext.info("{mclassdef} inherits a manual autoinit {s}", 3)
+                                       #mclassdef.autoinit = s
+                                       #return
+                                       manual = s
+                               end
+                       end
+
                        # Search the longest-one and checks for conflict
                        var longest = spropdefs.first
                        if spropdefs.length > 1 then
                                # part 1. find the longest list
                                for spd in spropdefs do
                                        if spd.initializers.length > longest.initializers.length then longest = spd
+                                       if spd != manual and manual != null then
+                                               self.toolcontext.info("{mclassdef} conflict between manual autoinit {manual} and automatic autoinit {spd}.", 3)
+                                       end
+                               end
+                               # conflict with manual autoinit?
+                               if longest != manual and manual != null then
+                                       self.error(nclassdef, "Error: conflict between manual autoinit {manual} and automatic autoinit {longest}.")
                                end
                                # part 2. compare
                                # Check for conflict in the order of initializers
@@ -334,41 +355,26 @@ redef class ModelBuilder
                                mparameters.clear
                                initializers.clear
                        else
-                               # Can we just inherit?
-                               if spropdefs.length == 1 and mparameters.is_empty and defined_init == null then
-                                       self.toolcontext.info("{mclassdef} inherits the basic constructor {longest}", 3)
-                                       mclassdef.mclass.root_init = longest
-                                       return
-                               end
-
                                # Combine the inherited list to what is collected
                                if longest.initializers.length > 0 then
-                                       mparameters.prepend longest.new_msignature.mparameters
+                                       mparameters.prepend longest.msignature.mparameters
                                        initializers.prepend longest.initializers
                                end
                        end
                end
 
-               # If we already have a basic init definition, then setup its initializers
-               if defined_init != null then
-                       defined_init.initializers.add_all(initializers)
+               # Create a specific new autoinit constructor
+               do
+                       var mprop = new MMethod(mclassdef, "autoinit", nclassdef.location, public_visibility)
+                       mprop.is_init = true
+                       var mpropdef = new MMethodDef(mclassdef, mprop, nclassdef.location)
+                       mpropdef.initializers.add_all(initializers)
                        var msignature = new MSignature(mparameters, null)
-                       defined_init.new_msignature = msignature
-                       self.toolcontext.info("{mclassdef} extends its basic constructor signature to {defined_init}{msignature}", 3)
-                       mclassdef.mclass.root_init = defined_init
-                       return
+                       mpropdef.msignature = msignature
+                       mclassdef.auto_init = mpropdef
+                       self.toolcontext.info("{mclassdef} gets a free auto constructor `{mpropdef}{msignature}`. {spropdefs}", 3)
+                       mclassdef.mclass.the_root_init_mmethod = the_root_init_mmethod
                end
-
-               # Else create the local implicit basic init definition
-               var mprop = the_root_init_mmethod
-               var mpropdef = new MMethodDef(mclassdef, mprop, nclassdef.location)
-               mpropdef.has_supercall = true
-               mpropdef.initializers.add_all(initializers)
-               var msignature = new MSignature(mparameters, null)
-               mpropdef.new_msignature = msignature
-               mpropdef.msignature = new MSignature(new Array[MParameter], null) # always an empty real signature
-               self.toolcontext.info("{mclassdef} gets a free constructor for attributes {mpropdef}{msignature}", 3)
-               mclassdef.mclass.root_init = mpropdef
        end
 
        # Check the visibility of `mtype` as an element of the signature of `mpropdef`.
@@ -504,11 +510,9 @@ end
 
 redef class MClass
        # The base init of the class.
-       # Used to get the common new_msignature and initializers
        #
-       # TODO: Where to put this information is not clear because unlike other
-       # informations, the initialisers are stable in a same class.
-       var root_init: nullable MMethodDef = null
+       # TODO: merge with `root_init` and `ModelBuilder::the_root_init_mmethod` if possible
+       var the_root_init_mmethod: nullable MMethod = null
 end
 
 redef class MClassDef
@@ -789,6 +793,9 @@ redef class AMethPropdef
                        if n_kwinit != null then
                                name = "init"
                                name_node = n_kwinit
+                               if self.n_signature.n_params.not_empty or get_single_annotation("old_style_init", modelbuilder) != null then
+                                       name = "autoinit"
+                               end
                        else if n_kwnew != null then
                                name = "new"
                                name_node = n_kwnew
@@ -822,7 +829,7 @@ redef class AMethPropdef
 
                var look_like_a_root_init = look_like_a_root_init(modelbuilder, mclassdef)
                var mprop: nullable MMethod = null
-               if not is_init or n_kwredef != null then mprop = modelbuilder.try_get_mproperty_by_name(name_node, mclassdef, name).as(nullable MMethod)
+               if not is_init or n_kwredef != null or look_like_a_root_init then mprop = modelbuilder.try_get_mproperty_by_name(name_node, mclassdef, name).as(nullable MMethod)
                if mprop == null and look_like_a_root_init then
                        mprop = modelbuilder.the_root_init_mmethod
                        var nb = n_block
@@ -867,6 +874,14 @@ redef class AMethPropdef
                mclassdef.mprop2npropdef[mprop] = self
 
                var mpropdef = new MMethodDef(mclassdef, mprop, self.location)
+               if mprop.name == "autoinit" and mclassdef.is_intro then
+                       assert mclassdef.auto_init == null
+                       mclassdef.auto_init = mpropdef
+                       if mpropdef.is_intro then
+                               mpropdef.initializers.add mprop
+                               mpropdef.is_calling_init = true
+                       end
+               end
 
                set_doc(mpropdef, modelbuilder)
 
@@ -888,16 +903,6 @@ redef class AMethPropdef
                var mmodule = mclassdef.mmodule
                var nsig = self.n_signature
 
-               if mproperty.is_root_init and not mclassdef.is_intro then
-                       var root_init = mclassdef.mclass.root_init
-                       if root_init != null then
-                               # Inherit the initializers by refinement
-                               mpropdef.new_msignature = root_init.new_msignature
-                               assert mpropdef.initializers.is_empty
-                               mpropdef.initializers.add_all root_init.initializers
-                       end
-               end
-
                var accept_special_last_parameter = self.n_methid == null or self.n_methid.accept_special_last_parameter
                var return_is_mandatory = self.n_methid != null and self.n_methid.return_is_mandatory
 
index 6d05196..3962597 100644 (file)
@@ -219,7 +219,7 @@ class MExplicitCall
 
                        var cname
                        if mproperty.is_init then
-                               if mproperty.name == "init" or mproperty.name == "new" then
+                               if mproperty.name == "init" or mproperty.name == "new" or mproperty.name == "autoinit" then
                                        cname = "new_{recv_mtype.mangled_cname}"
                                else
                                        cname = "new_{recv_mtype.mangled_cname}_{mproperty.short_cname}"
@@ -350,7 +350,7 @@ redef class AInitPropExternCall
                        mmodule, mtype, meth_name )
 
                if meth == null then
-                       meth_name = "init"
+                       meth_name = "autoinit"
                        meth = toolcontext.modelbuilder.try_get_mproperty_by_name2( self,
                                mmodule, mtype, meth_name )
                end
index 910877b..d16e844 100644 (file)
@@ -28,7 +28,7 @@ redef class MMethod
        do
                var cname
                if self.is_init then
-                       if self.name == "init" or self.name == "new" then
+                       if self.name == "init" or self.name == "new" or self.name == "autoinit" then
                                cname = "new_{recv_mtype.mangled_cname}"
                        else
                                cname = "new_{recv_mtype.mangled_cname}_{self.short_cname}"
index 5b8d41b..2da2a47 100644 (file)
@@ -245,7 +245,6 @@ class RapidTypeAnalysis
                                v.add_monomorphic_send(vararg, self.modelbuilder.force_get_primitive_method(node, "with_native", vararg.mclass, self.mainmodule))
                        end
 
-                       # TODO? new_msignature
                        var sig = msignature
                        var osig = mmeth.intro.msignature.as(not null)
                        for i in [0..sig.arity[ do
@@ -261,9 +260,15 @@ class RapidTypeAnalysis
 
                        if npropdef isa AClassdef then
                                if mmethoddef.mproperty.is_root_init then
+                                       # Final init call
                                        if not mmethoddef.is_intro then
                                                self.add_super_send(v.receiver, mmethoddef)
                                        end
+                               else if mmethoddef.mclassdef.auto_init == mmethoddef then
+                                       # autoinit call
+                                       for i in mmethoddef.initializers do
+                                               if i isa MMethod then self.add_send(v.receiver, i)
+                                       end
                                else
                                        npropdef.debug "cannot RTA {mmethoddef}"
                                        abort
index 55263bd..454e9fb 100644 (file)
@@ -121,7 +121,7 @@ redef class AMethPropdef
                                return
                        end
 
-                       var msignature = candidatedef.new_msignature or else candidatedef.msignature
+                       var msignature = candidatedef.msignature
                        msignature = msignature.resolve_for(recvtype, anchor, mmodule, true)
 
                        if msignature.arity > 0 then
index b9acd5e..8258cbf 100644 (file)
@@ -315,8 +315,12 @@ private class TypeVisitor
 
                var mproperty = self.try_get_mproperty_by_name2(node, unsafe_type, name)
                if name == "new" and mproperty == null then
-                       name = "init"
+                       name = "autoinit"
                        mproperty = self.try_get_mproperty_by_name2(node, unsafe_type, name)
+                       if mproperty == null then
+                               name = "init"
+                               mproperty = self.try_get_mproperty_by_name2(node, unsafe_type, name)
+                       end
                end
 
                if mproperty == null then
@@ -395,7 +399,7 @@ private class TypeVisitor
        # The `build_callsite_by_propdef` builds the callsite directly with the `mprodef` passed in argument.
        fun build_callsite_by_propdef(node: ANode, recvtype: MType, mpropdef: MMethodDef, recv_is_self: Bool): nullable CallSite
        do
-               var msignature = mpropdef.new_msignature or else mpropdef.msignature
+               var msignature = mpropdef.msignature
                if msignature == null then return null # skip error
                msignature = resolve_for(msignature, recvtype, recv_is_self).as(MSignature)
 
@@ -1774,7 +1778,7 @@ redef class ARangeExpr
                # get the constructor
                var callsite
                if self isa ACrangeExpr then
-                       callsite = v.build_callsite_by_name(self, mtype, "init", false)
+                       callsite = v.build_callsite_by_name(self, mtype, "autoinit", false)
                else if self isa AOrangeExpr then
                        callsite = v.build_callsite_by_name(self, mtype, "without_last", false)
                else
@@ -2156,7 +2160,7 @@ redef class ABraReassignExpr
 end
 
 redef class AInitExpr
-       redef fun property_name do return "init"
+       redef fun property_name do if n_args.n_exprs.is_empty then return "init" else return "autoinit"
        redef fun property_node do return n_kwinit
        redef fun compute_raw_arguments do return n_args.to_a
 end
@@ -2325,7 +2329,7 @@ redef class ASuperExpr
                        return
                end
 
-               var msignature = superprop.new_msignature or else superprop.msignature.as(not null)
+               var msignature = superprop.msignature.as(not null)
                msignature = v.resolve_for(msignature, recvtype, true).as(MSignature)
 
                var callsite = new CallSite(hot_location, recvtype, v.mmodule, v.anchor, true, superprop.mproperty, superprop, msignature, false)
index 514d3d1..3fe9672 100644 (file)
@@ -24,28 +24,7 @@ redef class VirtualMachine
        # Add optimization of the method dispatch
        redef fun callsite(callsite: nullable CallSite, arguments: Array[Instance]): nullable Instance
        do
-               var initializers = callsite.mpropdef.initializers
-               if initializers.is_empty then return send_optimize(callsite.as(not null), arguments)
-
-               var recv = arguments.first
-               var i = 1
-               for p in initializers do
-                       if p isa MMethod then
-                               var args = [recv]
-                               for x in p.intro.msignature.mparameters do
-                                       args.add arguments[i]
-                                       i += 1
-                               end
-                               self.send(p, args)
-                       else if p isa MAttribute then
-                               assert recv isa MutableInstance
-                               write_attribute(p, recv, arguments[i])
-                               i += 1
-                       else abort
-               end
-               assert i == arguments.length
-
-               return send_optimize(callsite.as(not null), [recv])
+               return send_optimize(callsite.as(not null), arguments)
        end
 
        # Try to have the most efficient implementation of the method dispatch
index d6c4929..9b7862e 100644 (file)
@@ -1,9 +1,9 @@
-alt/base_arg_default_autoinit_alt1.nit:59,5--7: Error: expected at least 1 argument(s) for `init(mandatory: Int, optional: nullable Int)`; got 0. See introduction at `core::Object::init`.
-alt/base_arg_default_autoinit_alt1.nit:68,5--7: Error: expected 2 argument(s) for `init(mandatory: Int, optional: nullable Int)`; got 3. See introduction at `core::Object::init`.
-alt/base_arg_default_autoinit_alt1.nit:71,5--7: Error: expected 4 argument(s) for `init(mandatory: Int, optional, optional_b: nullable Int, mandatory_b: Int)`; got 1. See introduction at `core::Object::init`.
-alt/base_arg_default_autoinit_alt1.nit:74,5--7: Error: expected 4 argument(s) for `init(mandatory: Int, optional, optional_b: nullable Int, mandatory_b: Int)`; got 2. See introduction at `core::Object::init`.
-alt/base_arg_default_autoinit_alt1.nit:77,5--7: Error: expected 4 argument(s) for `init(mandatory: Int, optional, optional_b: nullable Int, mandatory_b: Int)`; got 3. See introduction at `core::Object::init`.
-alt/base_arg_default_autoinit_alt1.nit:83,5--7: Error: expected 4 argument(s) for `init(mandatory: Int, optional, optional_b: nullable Int, mandatory_b: Int)`; got 5. See introduction at `core::Object::init`.
-alt/base_arg_default_autoinit_alt1.nit:86,5--7: Error: expected 3 argument(s) for `init(optional_b: nullable Int, mandatory_b, mandatory: Int)`; got 1. See introduction at `core::Object::init`.
-alt/base_arg_default_autoinit_alt1.nit:89,5--7: Error: expected 3 argument(s) for `init(optional_b: nullable Int, mandatory_b, mandatory: Int)`; got 2. See introduction at `core::Object::init`.
-alt/base_arg_default_autoinit_alt1.nit:95,5--7: Error: expected 3 argument(s) for `init(optional_b: nullable Int, mandatory_b, mandatory: Int)`; got 4. See introduction at `core::Object::init`.
+alt/base_arg_default_autoinit_alt1.nit:59,5--7: Error: expected at least 1 argument(s) for `autoinit(mandatory: Int, optional: nullable Int)`; got 0. See introduction at `base_arg_default_autoinit_alt1::A::autoinit`.
+alt/base_arg_default_autoinit_alt1.nit:68,5--7: Error: expected 2 argument(s) for `autoinit(mandatory: Int, optional: nullable Int)`; got 3. See introduction at `base_arg_default_autoinit_alt1::A::autoinit`.
+alt/base_arg_default_autoinit_alt1.nit:71,5--7: Error: expected 4 argument(s) for `autoinit(mandatory: Int, optional: nullable Int, optional_b: nullable Int, mandatory_b: Int)`; got 1. See introduction at `base_arg_default_autoinit_alt1::B::autoinit`.
+alt/base_arg_default_autoinit_alt1.nit:74,5--7: Error: expected 4 argument(s) for `autoinit(mandatory: Int, optional: nullable Int, optional_b: nullable Int, mandatory_b: Int)`; got 2. See introduction at `base_arg_default_autoinit_alt1::B::autoinit`.
+alt/base_arg_default_autoinit_alt1.nit:77,5--7: Error: expected 4 argument(s) for `autoinit(mandatory: Int, optional: nullable Int, optional_b: nullable Int, mandatory_b: Int)`; got 3. See introduction at `base_arg_default_autoinit_alt1::B::autoinit`.
+alt/base_arg_default_autoinit_alt1.nit:83,5--7: Error: expected 4 argument(s) for `autoinit(mandatory: Int, optional: nullable Int, optional_b: nullable Int, mandatory_b: Int)`; got 5. See introduction at `base_arg_default_autoinit_alt1::B::autoinit`.
+alt/base_arg_default_autoinit_alt1.nit:86,5--7: Error: expected 3 argument(s) for `autoinit(optional_b: nullable Int, mandatory_b: Int, mandatory: Int)`; got 1. See introduction at `base_arg_default_autoinit_alt1::C::autoinit`.
+alt/base_arg_default_autoinit_alt1.nit:89,5--7: Error: expected 3 argument(s) for `autoinit(optional_b: nullable Int, mandatory_b: Int, mandatory: Int)`; got 2. See introduction at `base_arg_default_autoinit_alt1::C::autoinit`.
+alt/base_arg_default_autoinit_alt1.nit:95,5--7: Error: expected 3 argument(s) for `autoinit(optional_b: nullable Int, mandatory_b: Int, mandatory: Int)`; got 4. See introduction at `base_arg_default_autoinit_alt1::C::autoinit`.
index 9caee3f..8367aba 100644 (file)
@@ -1 +1 @@
-alt/base_attr_annot_1alt1.nit:33,9--11: Error: expected 0 argument(s) for `init`; got 1. See introduction at `core::Object::init`.
+alt/base_attr_annot_1alt1.nit:33,9--11: Error: expected 0 argument(s) for `autoinit`; got 1. See introduction at `base_attr_annot_1alt1::B::autoinit`.
index ea3b78f..862450e 100644 (file)
@@ -1 +1 @@
-alt/base_attr_annot_alt1.nit:33,9--11: Error: expected 1 argument(s) for `init(a: Object)`; got 0. See introduction at `core::Object::init`.
+alt/base_attr_annot_alt1.nit:33,9--11: Error: expected 1 argument(s) for `autoinit(a: Object)`; got 0. See introduction at `base_attr_annot_alt1::B::autoinit`.
index 84d579c..f7e3b6d 100644 (file)
@@ -1,2 +1,2 @@
-alt/base_init_basic_alt3.nit:47,7: Error: cannot generate automatic init for class F. Conflict in the order in inherited initializers base_init_basic_alt3$E$init(c=, e=) and base_init_basic_alt3$D$init(c=, b=). Use `autoinit` to order initializers. eg `autoinit c=, b=, e=`
-alt/base_init_basic_alt3.nit:54,7: Error: cannot generate automatic init for class G. Conflict in the order in inherited initializers base_init_basic_alt3$E$init(c=, e=) and base_init_basic_alt3$D$init(c=, b=). Use `autoinit` to order initializers. eg `autoinit c=, b=, e=, g=`
+alt/base_init_basic_alt3.nit:47,7: Error: cannot generate automatic init for class F. Conflict in the order in inherited initializers base_init_basic_alt3$D$autoinit(c=, b=) and base_init_basic_alt3$E$autoinit(c=, e=). Use `autoinit` to order initializers. eg `autoinit c=, e=, b=`
+alt/base_init_basic_alt3.nit:54,7: Error: cannot generate automatic init for class G. Conflict in the order in inherited initializers base_init_basic_alt3$D$autoinit(c=, b=) and base_init_basic_alt3$E$autoinit(c=, e=). Use `autoinit` to order initializers. eg `autoinit c=, e=, b=, g=`
index 82ddfc6..028bbf0 100644 (file)
@@ -1 +1 @@
-alt/base_init_basic_alt5.nit:79,9--11: Error: expected 2 argument(s) for `init(c, b: Int)`; got 1. See introduction at `core::Object::init`.
+alt/base_init_basic_alt5.nit:79,9--11: Error: expected 2 argument(s) for `autoinit(c: Int, b: Int)`; got 1. See introduction at `base_init_basic_alt5::D::autoinit`.
index b079cab..65cf7fb 100644 (file)
@@ -1 +1 @@
-alt/base_init_combine_alt1.nit:59,9--11: Error: expected 2 argument(s) for `init(i, z: Int)`; got 1. See introduction at `core::Object::init`.
+alt/base_init_combine_alt1.nit:59,9--11: Error: expected 2 argument(s) for `autoinit(i: Int, z: Int)`; got 1. See introduction at `base_init_combine_alt1::F::autoinit`.
index 7282bf5..2cc2d16 100644 (file)
@@ -1 +1 @@
-alt/base_init_noinit_alt4.nit:30,3--5: Error: expected 0 argument(s) for `init`; got 1. See introduction at `core::Object::init`.
+alt/base_init_noinit_alt4.nit:30,3--5: Error: expected 0 argument(s) for `autoinit`; got 1. See introduction at `base_init_noinit_alt4::A::autoinit`.
index d75b874..bdec82b 100644 (file)
@@ -1 +1,27 @@
-alt/base_init_super_call2_alt3.nit:38,2--5: Error: cannot do an implicit constructor call to `base_init_super_call2_alt3$A$init(i: Int)`. Expected at least `1` arguments.
+1
+2
+3
+4
+0
+6
+6
+7
+7
+true
+8
+9
+9
+10
+10
+true
+11
+12
+12
+13
+13
+true
+14
+15
+15
+16
+16
index a920abb..ae5b7bd 100644 (file)
@@ -1,4 +1,27 @@
-alt/base_init_super_call2_alt6.nit:91,2--5: Error: cannot do an implicit constructor call to `base_init_super_call2_alt6$A$init(i: Int)`. Expected at least `1` arguments.
-alt/base_init_super_call2_alt6.nit:99,2--5: Error: cannot do an implicit constructor call to `base_init_super_call2_alt6$A$init(i: Int)`. Expected at least `1` arguments.
-alt/base_init_super_call2_alt6.nit:107,2--5: Error: cannot do an implicit constructor call to `base_init_super_call2_alt6$A$init(i: Int)`. Expected at least `1` arguments.
-alt/base_init_super_call2_alt6.nit:123,2--5: Error: cannot do an implicit constructor call to `base_init_super_call2_alt6$A$init(i: Int)`. Expected at least `1` arguments.
+1
+2
+3
+4
+5
+6
+6
+7
+7
+true
+8
+9
+9
+10
+10
+true
+11
+12
+0
+13
+0
+true
+0
+15
+15
+16
+0
index 8189994..1326dca 100644 (file)
@@ -1,3 +1,3 @@
-alt/base_vararg_mult_alt1.nit:40,5--7: Error: expected at least 1 argument(s) for `init(ints: Int...)`; got 0. See introduction at `core::Object::init`.
-alt/base_vararg_mult_alt1.nit:47,5--7: Error: expected 2 argument(s) for `init(ints: Int..., objs: Object...)`; got 3. See introduction at `core::Object::init`.
+alt/base_vararg_mult_alt1.nit:40,5--7: Error: expected at least 1 argument(s) for `autoinit(ints: Int...)`; got 0. See introduction at `base_vararg_mult_alt1::A::autoinit`.
+alt/base_vararg_mult_alt1.nit:47,5--7: Error: expected 2 argument(s) for `autoinit(ints: Int..., objs: Object...)`; got 3. See introduction at `base_vararg_mult_alt1::B::autoinit`.
 alt/base_vararg_mult_alt1.nit:48,11--18: Type Error: expected `Int`, got `Array[Int]`. Is an ellipsis `...` missing on the argument?
index 85a7e8e..e69de29 100644 (file)
@@ -1 +0,0 @@
-alt/error_defs_init_1alt1_alt2.nit:27,2--5: Error: a property `init` is already defined in class `A` at line 18.
index d0f5aa7..e69de29 100644 (file)
@@ -1 +0,0 @@
-alt/error_defs_init_1alt2_alt1.nit:26,2--5: Error: a property `init` is already defined in class `A` at line 18.
index c9e3a71..dc81300 100644 (file)
@@ -1 +1 @@
-alt/error_defs_init_1alt2_alt2.nit:27,2--5: Error: a property `init` is already defined in class `A` at line 18.
+alt/error_defs_init_1alt2_alt2.nit:27,2--5: Error: a property `autoinit` is already defined in class `A` at line 18.
index a466472..33413fe 100644 (file)
@@ -1,4 +1,4 @@
-error_init_auto.nit:34,5--7: Error: expected 1 argument(s) for `init(x: Int)`; got 0. See introduction at `core::Object::init`.
-error_init_auto.nit:36,5--7: Error: expected 1 argument(s) for `init(x: Int)`; got 2. See introduction at `core::Object::init`.
-error_init_auto.nit:37,5--7: Error: expected 1 argument(s) for `init(x: Int)`; got 3. See introduction at `core::Object::init`.
+error_init_auto.nit:34,5--7: Error: expected 1 argument(s) for `autoinit(x: Int)`; got 0. See introduction at `error_init_auto::A::autoinit`.
+error_init_auto.nit:36,5--7: Error: expected 1 argument(s) for `autoinit(x: Int)`; got 2. See introduction at `error_init_auto::A::autoinit`.
+error_init_auto.nit:37,5--7: Error: expected 1 argument(s) for `autoinit(x: Int)`; got 3. See introduction at `error_init_auto::A::autoinit`.
 error_init_auto.nit:38,11--13: Error: method `foo` does not exists in `A`.
index 3356259..2041c75 100644 (file)
@@ -1,4 +1,4 @@
-alt/error_init_auto_alt1.nit:35,5--7: Error: expected 0 argument(s) for `init`; got 1. See introduction at `core::Object::init`.
-alt/error_init_auto_alt1.nit:36,5--7: Error: expected 0 argument(s) for `init`; got 2. See introduction at `core::Object::init`.
-alt/error_init_auto_alt1.nit:37,5--7: Error: expected 0 argument(s) for `init`; got 3. See introduction at `core::Object::init`.
+alt/error_init_auto_alt1.nit:35,5--7: Error: expected 0 argument(s) for `autoinit`; got 1. See introduction at `error_init_auto_alt1::A::autoinit`.
+alt/error_init_auto_alt1.nit:36,5--7: Error: expected 0 argument(s) for `autoinit`; got 2. See introduction at `error_init_auto_alt1::A::autoinit`.
+alt/error_init_auto_alt1.nit:37,5--7: Error: expected 0 argument(s) for `autoinit`; got 3. See introduction at `error_init_auto_alt1::A::autoinit`.
 alt/error_init_auto_alt1.nit:38,11--13: Error: method `foo` does not exists in `A`.
index 16c9ed4..6026026 100644 (file)
@@ -1,4 +1,4 @@
-alt/error_init_auto_alt2.nit:34,5--7: Error: expected 2 argument(s) for `init(x, y: Int)`; got 0. See introduction at `core::Object::init`.
-alt/error_init_auto_alt2.nit:35,5--7: Error: expected 2 argument(s) for `init(x, y: Int)`; got 1. See introduction at `core::Object::init`.
-alt/error_init_auto_alt2.nit:37,5--7: Error: expected 2 argument(s) for `init(x, y: Int)`; got 3. See introduction at `core::Object::init`.
+alt/error_init_auto_alt2.nit:34,5--7: Error: expected 2 argument(s) for `autoinit(x, y: Int)`; got 0. See introduction at `error_init_auto_alt2::A::autoinit`.
+alt/error_init_auto_alt2.nit:35,5--7: Error: expected 2 argument(s) for `autoinit(x, y: Int)`; got 1. See introduction at `error_init_auto_alt2::A::autoinit`.
+alt/error_init_auto_alt2.nit:37,5--7: Error: expected 2 argument(s) for `autoinit(x, y: Int)`; got 3. See introduction at `error_init_auto_alt2::A::autoinit`.
 alt/error_init_auto_alt2.nit:38,11--13: Error: method `foo` does not exists in `A`.
index 61e44f6..a1a8ba6 100644 (file)
@@ -1,4 +1,4 @@
-alt/error_init_auto_alt3.nit:34,5--7: Error: expected 1 argument(s) for `init(xx: Int)`; got 0. See introduction at `error_init_auto_alt3::A::init`.
-alt/error_init_auto_alt3.nit:36,5--7: Error: expected 1 argument(s) for `init(xx: Int)`; got 2. See introduction at `error_init_auto_alt3::A::init`.
-alt/error_init_auto_alt3.nit:37,5--7: Error: expected 1 argument(s) for `init(xx: Int)`; got 3. See introduction at `error_init_auto_alt3::A::init`.
+alt/error_init_auto_alt3.nit:34,5--7: Error: expected 1 argument(s) for `autoinit(xx: Int)`; got 0. See introduction at `error_init_auto_alt3::A::autoinit`.
+alt/error_init_auto_alt3.nit:36,5--7: Error: expected 1 argument(s) for `autoinit(xx: Int)`; got 2. See introduction at `error_init_auto_alt3::A::autoinit`.
+alt/error_init_auto_alt3.nit:37,5--7: Error: expected 1 argument(s) for `autoinit(xx: Int)`; got 3. See introduction at `error_init_auto_alt3::A::autoinit`.
 alt/error_init_auto_alt3.nit:38,11--13: Error: method `foo` does not exists in `A`.
index 1e2a53a..d625cd9 100644 (file)
@@ -1,3 +1,3 @@
-alt/error_init_auto_alt4.nit:34,5--7: Error: expected 1 argument(s) for `init(x: Int)`; got 0. See introduction at `core::Object::init`.
-alt/error_init_auto_alt4.nit:36,5--7: Error: expected 1 argument(s) for `init(x: Int)`; got 2. See introduction at `core::Object::init`.
-alt/error_init_auto_alt4.nit:37,5--7: Error: expected 1 argument(s) for `init(x: Int)`; got 3. See introduction at `core::Object::init`.
+alt/error_init_auto_alt4.nit:34,5--7: Error: expected 1 argument(s) for `autoinit(x: Int)`; got 0. See introduction at `error_init_auto_alt4::A::autoinit`.
+alt/error_init_auto_alt4.nit:36,5--7: Error: expected 1 argument(s) for `autoinit(x: Int)`; got 2. See introduction at `error_init_auto_alt4::A::autoinit`.
+alt/error_init_auto_alt4.nit:37,5--7: Error: expected 1 argument(s) for `autoinit(x: Int)`; got 3. See introduction at `error_init_auto_alt4::A::autoinit`.
index 139d036..4d641a6 100644 (file)
@@ -221,23 +221,23 @@ Number of refined classes: 0 (0.00%)
 Average number of class refinments by classes: 0.00
 Average number of class refinments by refined classes: na
 
-Number of properties: 18
-  Number of MAttribute: 3 (16.66%)
-  Number of MMethod: 15 (83.33%)
+Number of properties: 23
+  Number of MAttribute: 3 (13.04%)
+  Number of MMethod: 20 (86.95%)
 
-Number of property definitions: 20
-Number of redefined properties: 1 (5.55%)
-Average number of property redefinitions by property: 0.11
-Average number of property redefinitions by redefined property: 2.00
+Number of property definitions: 24
+Number of redefined properties: 1 (4.34%)
+Average number of property redefinitions by property: 0.04
+Average number of property redefinitions by redefined property: 1.00
 --- Explicit vs. Implicit Self ---
 Total number of self: 5
 Total number of implicit self: 4 (80.00%)
 --- Construction of tables ---
 Number of runtime classes: 6 (excluding interfaces and abstract classes)
 Average number of composing class definition by runtime class: 2.00
-Total size of tables (classes and instances): 23 (not including stuff like info for subtyping or call-next-method)
-Average size of table by runtime class: 3.83
-Values never redefined: 17 (73.91%)
+Total size of tables (classes and instances): 33 (not including stuff like info for subtyping or call-next-method)
+Average size of table by runtime class: 5.50
+Values never redefined: 27 (81.81%)
 generating package_hierarchy.dot
 generating module_hierarchy.dot
 --- Metrics of the explitic static types ---
@@ -292,11 +292,11 @@ Statistics of type usage:
          std: 0.926
          sum: 6
        cnbp: number of accessible properties (inherited + local)
-         avg: 3.0
-         max: C (7)
-         min: Object (1)
-         std: 2.36
-         sum: 24
+         avg: 5.0
+         max: C (9)
+         min: Object (2)
+         std: 2.268
+         sum: 35
        cnba: number of accessible attributes (inherited + local)
          avg: 0.0
          max: C (2)
@@ -322,23 +322,23 @@ Statistics of type usage:
          std: 0.0
          sum: 0
        cnbip: number of introduced properties
-         avg: 2.0
-         max: C (6)
-         min: Bool (0)
-         std: 2.268
-         sum: 18
+         avg: 3.0
+         max: C (7)
+         min: Bool (1)
+         std: 2.0
+         sum: 23
        cnbrp: number of redefined properties
          avg: 0.0
          max: A (1)
          min: Object (0)
-         std: 0.535
-         sum: 2
+         std: 0.378
+         sum: 1
        cnbhp: number of inherited properties
-         avg: 0.0
-         max: Bool (1)
+         avg: 1.0
+         max: Bool (2)
          min: Object (0)
-         std: 0.926
-         sum: 6
+         std: 1.0
+         sum: 12
 
  ## global metrics
        cnoa: number of ancestor classes
@@ -372,11 +372,11 @@ Statistics of type usage:
          std: 0.926
          sum: 6
        cnbp: number of accessible properties (inherited + local)
-         avg: 3.0
-         max: C (7)
-         min: Object (1)
-         std: 2.36
-         sum: 24
+         avg: 5.0
+         max: C (9)
+         min: Object (2)
+         std: 2.268
+         sum: 35
        cnba: number of accessible attributes (inherited + local)
          avg: 0.0
          max: C (2)
@@ -402,23 +402,23 @@ Statistics of type usage:
          std: 0.0
          sum: 0
        cnbip: number of introduced properties
-         avg: 2.0
-         max: C (6)
-         min: Bool (0)
-         std: 2.268
-         sum: 18
+         avg: 3.0
+         max: C (7)
+         min: Bool (1)
+         std: 2.0
+         sum: 23
        cnbrp: number of redefined properties
          avg: 0.0
          max: A (1)
          min: Object (0)
-         std: 0.535
-         sum: 2
+         std: 0.378
+         sum: 1
        cnbhp: number of inherited properties
-         avg: 0.0
-         max: Bool (1)
+         avg: 1.0
+         max: Bool (2)
          min: Object (0)
-         std: 0.926
-         sum: 6
+         std: 1.0
+         sum: 12
 
 # MModules metrics
 
@@ -738,13 +738,12 @@ Warning: no source file for `base_simple3`
          sum: 0.143
 
 # Mendel metrics
-       large mclasses (threshold: 3.915)
+       large mclasses (threshold: 4.354)
           C: 5
-          B: 4
-          Sys: 4
-       budding mclasses (threshold: 5.033)
-       blooming mclasses (threshold: 21.874)
-          C: 25.0
+       budding mclasses (threshold: 3.207)
+          C: 3.5
+       blooming mclasses (threshold: 14.316)
+          C: 17.5
 --- Detection of the usage of covariance static type conformance ---
 -- Total --
 - Kinds of the subtype -
@@ -848,17 +847,17 @@ Number of buggy sends (cannot determine the type of the receiver): 0 (0.00%)
          std: 0.0
          sum: 17
        mnlm: number of live methods in a mmodule
-         avg: 14.0
-         max: base_simple3 (14)
-         min: base_simple3 (14)
-         std: 0.0
-         sum: 14
-       mnlmd: number of live method definitions in a mmodule
          avg: 16.0
          max: base_simple3 (16)
          min: base_simple3 (16)
          std: 0.0
          sum: 16
+       mnlmd: number of live method definitions in a mmodule
+         avg: 17.0
+         max: base_simple3 (17)
+         min: base_simple3 (17)
+         std: 0.0
+         sum: 17
        mnldd: number of dead method definitions in a mmodule
          avg: 0.0
          max: base_simple3 (0)
@@ -918,11 +917,11 @@ MMethodDef locally designated (by number of CallSites)
   base_simple3$Object$init: 1 (4.34%)
   base_simple3$C$val2: 1 (4.34%)
   ...
-  base_simple3$A$init: 1 (4.34%)
+  base_simple3$A$autoinit: 1 (4.34%)
   base_simple3$Sys$baz: 1 (4.34%)
   base_simple3$Sys$bar: 1 (4.34%)
   base_simple3$Sys$foo: 1 (4.34%)
-  base_simple3$C$init: 1 (4.34%)
+  base_simple3$C$autoinit: 1 (4.34%)
 MMethodDef possibly invoked at runtime (by number of CallSites)
  population: 14
  minimum value: 1
@@ -939,11 +938,11 @@ MMethodDef possibly invoked at runtime (by number of CallSites)
   base_simple3$Object$init: 1 (4.34%)
   base_simple3$C$val2: 1 (4.34%)
   ...
-  base_simple3$A$init: 1 (4.34%)
+  base_simple3$A$autoinit: 1 (4.34%)
   base_simple3$Sys$baz: 1 (4.34%)
   base_simple3$Sys$bar: 1 (4.34%)
   base_simple3$Sys$foo: 1 (4.34%)
-  base_simple3$C$init: 1 (4.34%)
+  base_simple3$C$autoinit: 1 (4.34%)
 class_hierarchy.dot
 classdef_hierarchy.dot
 inheritance/
index ecae7b8..019d380 100644 (file)
@@ -13,10 +13,10 @@ digraph G {
 subgraph clusterbase_prot_sig2 {
 label = "base_prot_sig2"
 base_prot_sig2C [
-       label = "{C|- _vpriA: nullable A\l- _vpriA2: A\l|- priA(a: A)\l- vpriA(): nullable A\l- vpriA=(vpriA: nullable A)\l- vpriA2(): A\l- vpriA2=(vpriA2: A)\l+ init()\l}"color="#58B26A"
+       label = "{C|- _vpriA: nullable A\l- _vpriA2: A\l|- priA(a: A)\l- vpriA(): nullable A\l- vpriA=(vpriA: nullable A)\l- vpriA2(): A\l- vpriA2=(vpriA2: A)\l+ init()\l+ autoinit()\l}"color="#58B26A"
 ]
 base_prot_sig2D [
-       label = "{D|- _vpubA: nullable A\l- _vpriA: nullable A\l- _vpubA2: A\l- _vpriA2: A\l|- pubA(a: A)\l- priA(a: A)\l- vpubA(): nullable A\l- vpubA=(vpubA: nullable A)\l- vpriA(): nullable A\l- vpriA=(vpriA: nullable A)\l- vpubA2(): A\l- vpubA2=(vpubA2: A)\l- vpriA2(): A\l- vpriA2=(vpriA2: A)\l+ init()\l}"color="#58B26A"
+       label = "{D|- _vpubA: nullable A\l- _vpriA: nullable A\l- _vpubA2: A\l- _vpriA2: A\l|- pubA(a: A)\l- priA(a: A)\l- vpubA(): nullable A\l- vpubA=(vpubA: nullable A)\l- vpriA(): nullable A\l- vpriA=(vpriA: nullable A)\l- vpubA2(): A\l- vpubA2=(vpubA2: A)\l- vpriA2(): A\l- vpriA2=(vpriA2: A)\l+ init()\l+ autoinit()\l}"color="#58B26A"
 ]
 }
 }
index 5a9488d..97b0b32 100644 (file)
@@ -13,7 +13,7 @@ digraph G {
 subgraph clusterbase_prot_sig2 {
 label = "base_prot_sig2"
 base_prot_sig2C [
-       label = "{C||+ init()\l}"color="#58B26A"
+       label = "{C||+ init()\l+ autoinit()\l}"color="#58B26A"
 ]
 }
 }
index a5a027f..4e62b3e 100644 (file)
@@ -12,88 +12,88 @@ digraph G {
                                        fontsize = 8
                                ]
 Object [
- label = "{interface\nObject||+ object_id(): Int\l+ is_same_type(other: Object): Bool\l+ is_same_instance(other: nullable Object): Bool\l+ ==(other: nullable Object): Bool\l+ !=(other: nullable Object): Bool\l+ output()\l+ output_class_name()\l+ hash(): Int\l+ sys(): Sys\l+ init()\l}"
+ label = "{interface\nObject||+ object_id(): Int\l+ is_same_type(other: Object): Bool\l+ is_same_instance(other: nullable Object): Bool\l+ ==(other: nullable Object): Bool\l+ !=(other: nullable Object): Bool\l+ output()\l+ output_class_name()\l+ hash(): Int\l+ sys(): Sys\l+ init()\l+ autoinit()\l}"
 ]
 
 Sys [
- label = "{Sys||+ main()\l+ run()\l+ errno(): Int\l+ exit(exit_value: Int)\l+ is_windows(): Bool\l}"
+ label = "{Sys||+ main()\l+ run()\l+ errno(): Int\l+ exit(exit_value: Int)\l+ autoinit()\l}"
 ]
 Object -> Sys [dir=back arrowtail=open style=dashed];
 
 Comparable [
- label = "{interface\nComparable||+ \<(other: OTHER): Bool\l+ \<=(other: OTHER): Bool\l+ \>=(other: OTHER): Bool\l+ \>(other: OTHER): Bool\l+ \<=\>(other: OTHER): Int\l+ is_between(c: OTHER, d: OTHER): Bool\l+ max(other: OTHER): OTHER\l+ min(c: OTHER): OTHER\l}"
+ label = "{interface\nComparable||+ \<(other: OTHER): Bool\l+ \<=(other: OTHER): Bool\l+ \>=(other: OTHER): Bool\l+ \>(other: OTHER): Bool\l+ \<=\>(other: OTHER): Int\l+ is_between(c: OTHER, d: OTHER): Bool\l+ max(other: OTHER): OTHER\l+ min(c: OTHER): OTHER\l+ autoinit()\l}"
 ]
 Object -> Comparable [dir=back arrowtail=open style=dashed];
 
 Discrete [
- label = "{interface\nDiscrete||+ successor(i: Int): OTHER\l+ predecessor(i: Int): OTHER\l+ distance(d: OTHER): Int\l}"
+ label = "{interface\nDiscrete||+ successor(i: Int): OTHER\l+ predecessor(i: Int): OTHER\l+ distance(d: OTHER): Int\l+ autoinit()\l}"
 ]
 Comparable -> Discrete [dir=back arrowtail=open style=dashed];
 
 Cloneable [
- label = "{interface\nCloneable||+ clone(): SELF\l}"
+ label = "{interface\nCloneable||+ clone(): SELF\l+ autoinit()\l}"
 ]
 Object -> Cloneable [dir=back arrowtail=open style=dashed];
 
 Numeric [
- label = "{interface\nNumeric||+ +(i: OTHER): OTHER\l+ -(i: OTHER): OTHER\l+ unary -(): OTHER\l+ *(i: OTHER): OTHER\l+ /(i: OTHER): OTHER\l+ to_i(): Int\l+ to_f(): Float\l+ to_b(): Byte\l+ is_zero(): Bool\l+ zero(): OTHER\l+ value_of(val: Numeric): OTHER\l}"
+ label = "{interface\nNumeric||+ +(i: OTHER): OTHER\l+ -(i: OTHER): OTHER\l+ unary -(): OTHER\l+ *(i: OTHER): OTHER\l+ /(i: OTHER): OTHER\l+ to_i(): Int\l+ to_f(): Float\l+ to_b(): Byte\l+ is_zero(): Bool\l+ zero(): OTHER\l+ value_of(val: Numeric): OTHER\l+ autoinit()\l}"
 ]
 Comparable -> Numeric [dir=back arrowtail=open style=dashed];
 
 Bool [
- label = "{Bool||+ to_i(): Int\l}"
+ label = "{Bool||+ to_i(): Int\l+ autoinit()\l}"
 ]
 Object -> Bool [dir=back arrowtail=open style=dashed];
 
 Float [
- label = "{Float||+ is_approx(other: Float, precision: Float): Bool\l}"
+ label = "{Float||+ is_approx(other: Float, precision: Float): Bool\l+ autoinit()\l}"
 ]
 Numeric -> Float [dir=back arrowtail=open style=dashed];
 
 Byte [
- label = "{Byte||+ %(i: Byte): Byte\l+ \<\<(i: Int): Byte\l+ \>\>(i: Int): Byte\l+ is_whitespace(): Bool\l}"
+ label = "{Byte||+ %(i: Byte): Byte\l+ \<\<(i: Int): Byte\l+ \>\>(i: Int): Byte\l+ ascii(): Char\l+ is_whitespace(): Bool\l+ autoinit()\l}"
 ]
 Discrete -> Byte [dir=back arrowtail=open style=dashed];
 Numeric -> Byte [dir=back arrowtail=open style=dashed];
 
 Int [
- label = "{Int||+ %(i: Int): Int\l+ \<\<(i: Int): Int\l+ \>\>(i: Int): Int\l+ code_point(): Char\l+ digit_count(b: Int): Int\l+ digit_count_base_10(): Int\l+ to_c(): Char\l+ abs(): Int\l+ is_whitespace(): Bool\l}"
+ label = "{Int||+ %(i: Int): Int\l+ \<\<(i: Int): Int\l+ \>\>(i: Int): Int\l+ code_point(): Char\l+ digit_count(b: Int): Int\l+ digit_count_base_10(): Int\l+ to_c(): Char\l+ abs(): Int\l+ autoinit()\l}"
 ]
 Discrete -> Int [dir=back arrowtail=open style=dashed];
 Numeric -> Int [dir=back arrowtail=open style=dashed];
 
 Char [
- label = "{Char||+ +(i: Int): Char\l+ -(i: Int): Char\l+ to_i(): Int\l+ code_point(): Int\l+ is_ascii(): Bool\l+ to_lower(): Char\l+ to_upper(): Char\l+ is_digit(): Bool\l+ is_lower(): Bool\l+ is_upper(): Bool\l+ is_letter(): Bool\l+ is_whitespace(): Bool\l}"
+ label = "{Char||+ to_i(): Int\l+ ascii(): Byte\l+ code_point(): Int\l+ is_ascii(): Bool\l+ to_lower(): Char\l+ to_upper(): Char\l+ is_digit(): Bool\l+ is_lower(): Bool\l+ is_upper(): Bool\l+ is_letter(): Bool\l+ is_whitespace(): Bool\l+ autoinit()\l}"
 ]
 Discrete -> Char [dir=back arrowtail=open style=dashed];
 
 Pointer [
- label = "{Pointer||+ nul(): Pointer\l+ address_is_null(): Bool\l+ free()\l- native_equals(o: Pointer): Bool\l}"
+ label = "{Pointer||+ address_is_null(): Bool\l+ free()\l+ autoinit()\l}"
 ]
 Object -> Pointer [dir=back arrowtail=open style=dashed];
 
 Task [
- label = "{interface\nTask||+ main()\l}"
+ label = "{interface\nTask||+ main()\l+ autoinit()\l}"
 ]
 Object -> Task [dir=back arrowtail=open style=dashed];
 
 A [
- label = "{A|- _vpubA: nullable A\l- _vproA: nullable A\l- _vpriA: nullable A\l- _vpubA2: A\l- _vproA2: A\l- _vpriA2: A\l- _vpriB: nullable B\l- _vpriB2: B\l|+ pubA(a: A)\l# proA(a: A)\l- priA(a: A)\l+ pubA2(): A\l# proA2(): A\l- priA2(): A\l+ vpubA(): nullable A\l+ vpubA=(vpubA: nullable A)\l# vproA(): nullable A\l# vproA=(vproA: nullable A)\l- vpriA(): nullable A\l- vpriA=(vpriA: nullable A)\l+ vpubA2(): A\l+ vpubA2=(vpubA2: A)\l# vproA2(): A\l# vproA2=(vproA2: A)\l- vpriA2(): A\l- vpriA2=(vpriA2: A)\l- priB(a: B)\l- priB2(): B\l- vpriB(): nullable B\l- vpriB=(vpriB: nullable B)\l- vpriB2(): B\l- vpriB2=(vpriB2: B)\l}"
+ label = "{A|- _vpubA: nullable A\l- _vproA: nullable A\l- _vpriA: nullable A\l- _vpubA2: A\l- _vproA2: A\l- _vpriA2: A\l- _vpriB: nullable B\l- _vpriB2: B\l|+ pubA(a: A)\l# proA(a: A)\l- priA(a: A)\l+ pubA2(): A\l# proA2(): A\l- priA2(): A\l+ vpubA(): nullable A\l+ vpubA=(vpubA: nullable A)\l# vproA(): nullable A\l# vproA=(vproA: nullable A)\l- vpriA(): nullable A\l- vpriA=(vpriA: nullable A)\l+ vpubA2(): A\l+ vpubA2=(vpubA2: A)\l# vproA2(): A\l# vproA2=(vproA2: A)\l- vpriA2(): A\l- vpriA2=(vpriA2: A)\l- priB(a: B)\l- priB2(): B\l- vpriB(): nullable B\l- vpriB=(vpriB: nullable B)\l- vpriB2(): B\l- vpriB2=(vpriB2: B)\l+ autoinit()\l}"
 ]
 Object -> A [dir=back arrowtail=open style=dashed];
 
 B [
- label = "{B|- _vpubA: nullable A\l- _vpriA: nullable A\l- _vpubA2: A\l- _vpriA2: A\l- _vpubB: nullable B\l- _vpriB: nullable B\l- _vpubB2: B\l- _vpriB2: B\l|- pubA(a: A)\l- priA(a: A)\l- vpubA(): nullable A\l- vpubA=(vpubA: nullable A)\l- vpriA(): nullable A\l- vpriA=(vpriA: nullable A)\l- vpubA2(): A\l- vpubA2=(vpubA2: A)\l- vpriA2(): A\l- vpriA2=(vpriA2: A)\l- pubB(a: B)\l- priB(a: B)\l- vpubB(): nullable B\l- vpubB=(vpubB: nullable B)\l- vpriB(): nullable B\l- vpriB=(vpriB: nullable B)\l- vpubB2(): B\l- vpubB2=(vpubB2: B)\l- vpriB2(): B\l- vpriB2=(vpriB2: B)\l}"
+ label = "{B|- _vpubA: nullable A\l- _vpriA: nullable A\l- _vpubA2: A\l- _vpriA2: A\l- _vpubB: nullable B\l- _vpriB: nullable B\l- _vpubB2: B\l- _vpriB2: B\l|- pubA(a: A)\l- priA(a: A)\l- vpubA(): nullable A\l- vpubA=(vpubA: nullable A)\l- vpriA(): nullable A\l- vpriA=(vpriA: nullable A)\l- vpubA2(): A\l- vpubA2=(vpubA2: A)\l- vpriA2(): A\l- vpriA2=(vpriA2: A)\l- pubB(a: B)\l- priB(a: B)\l- vpubB(): nullable B\l- vpubB=(vpubB: nullable B)\l- vpriB(): nullable B\l- vpriB=(vpriB: nullable B)\l- vpubB2(): B\l- vpubB2=(vpubB2: B)\l- vpriB2(): B\l- vpriB2=(vpriB2: B)\l+ autoinit()\l}"
 ]
 Object -> B [dir=back arrowtail=open style=dashed];
 
 C [
- label = "{C|- _vpriA: nullable A\l- _vpriA2: A\l|- priA(a: A)\l- vpriA(): nullable A\l- vpriA=(vpriA: nullable A)\l- vpriA2(): A\l- vpriA2=(vpriA2: A)\l}"
+ label = "{C|- _vpriA: nullable A\l- _vpriA2: A\l|- priA(a: A)\l- vpriA(): nullable A\l- vpriA=(vpriA: nullable A)\l- vpriA2(): A\l- vpriA2=(vpriA2: A)\l+ autoinit()\l}"
 ]
 Object -> C [dir=back arrowtail=open style=dashed];
 
 D [
- label = "{D|- _vpubA: nullable A\l- _vpriA: nullable A\l- _vpubA2: A\l- _vpriA2: A\l|- pubA(a: A)\l- priA(a: A)\l- vpubA(): nullable A\l- vpubA=(vpubA: nullable A)\l- vpriA(): nullable A\l- vpriA=(vpriA: nullable A)\l- vpubA2(): A\l- vpubA2=(vpubA2: A)\l- vpriA2(): A\l- vpriA2=(vpriA2: A)\l}"
+ label = "{D|- _vpubA: nullable A\l- _vpriA: nullable A\l- _vpubA2: A\l- _vpriA2: A\l|- pubA(a: A)\l- priA(a: A)\l- vpubA(): nullable A\l- vpubA=(vpubA: nullable A)\l- vpriA(): nullable A\l- vpriA=(vpriA: nullable A)\l- vpubA2(): A\l- vpubA2=(vpubA2: A)\l- vpriA2(): A\l- vpriA2=(vpriA2: A)\l+ autoinit()\l}"
 ]
 Object -> D [dir=back arrowtail=open style=dashed];
 
index f03123a..c79556c 100644 (file)
@@ -12,78 +12,78 @@ digraph G {
                                        fontsize = 8
                                ]
 Object [
- label = "{interface\nObject||+ object_id(): Int\l+ is_same_type(other: Object): Bool\l+ is_same_instance(other: nullable Object): Bool\l+ ==(other: nullable Object): Bool\l+ !=(other: nullable Object): Bool\l+ output()\l+ output_class_name()\l+ hash(): Int\l+ sys(): Sys\l+ init()\l}"
+ label = "{interface\nObject||+ object_id(): Int\l+ is_same_type(other: Object): Bool\l+ is_same_instance(other: nullable Object): Bool\l+ ==(other: nullable Object): Bool\l+ !=(other: nullable Object): Bool\l+ output()\l+ output_class_name()\l+ hash(): Int\l+ sys(): Sys\l+ init()\l+ autoinit()\l}"
 ]
 
 Sys [
- label = "{Sys||+ main()\l+ run()\l+ errno(): Int\l+ exit(exit_value: Int)\l+ is_windows(): Bool\l}"
+ label = "{Sys||+ main()\l+ run()\l+ errno(): Int\l+ exit(exit_value: Int)\l+ autoinit()\l}"
 ]
 Object -> Sys [dir=back arrowtail=open style=dashed];
 
 Comparable [
- label = "{interface\nComparable||+ \<(other: OTHER): Bool\l+ \<=(other: OTHER): Bool\l+ \>=(other: OTHER): Bool\l+ \>(other: OTHER): Bool\l+ \<=\>(other: OTHER): Int\l+ is_between(c: OTHER, d: OTHER): Bool\l+ max(other: OTHER): OTHER\l+ min(c: OTHER): OTHER\l}"
+ label = "{interface\nComparable||+ \<(other: OTHER): Bool\l+ \<=(other: OTHER): Bool\l+ \>=(other: OTHER): Bool\l+ \>(other: OTHER): Bool\l+ \<=\>(other: OTHER): Int\l+ is_between(c: OTHER, d: OTHER): Bool\l+ max(other: OTHER): OTHER\l+ min(c: OTHER): OTHER\l+ autoinit()\l}"
 ]
 Object -> Comparable [dir=back arrowtail=open style=dashed];
 
 Discrete [
- label = "{interface\nDiscrete||+ successor(i: Int): OTHER\l+ predecessor(i: Int): OTHER\l+ distance(d: OTHER): Int\l}"
+ label = "{interface\nDiscrete||+ successor(i: Int): OTHER\l+ predecessor(i: Int): OTHER\l+ distance(d: OTHER): Int\l+ autoinit()\l}"
 ]
 Comparable -> Discrete [dir=back arrowtail=open style=dashed];
 
 Cloneable [
- label = "{interface\nCloneable||+ clone(): SELF\l}"
+ label = "{interface\nCloneable||+ clone(): SELF\l+ autoinit()\l}"
 ]
 Object -> Cloneable [dir=back arrowtail=open style=dashed];
 
 Numeric [
- label = "{interface\nNumeric||+ +(i: OTHER): OTHER\l+ -(i: OTHER): OTHER\l+ unary -(): OTHER\l+ *(i: OTHER): OTHER\l+ /(i: OTHER): OTHER\l+ to_i(): Int\l+ to_f(): Float\l+ to_b(): Byte\l+ is_zero(): Bool\l+ zero(): OTHER\l+ value_of(val: Numeric): OTHER\l}"
+ label = "{interface\nNumeric||+ +(i: OTHER): OTHER\l+ -(i: OTHER): OTHER\l+ unary -(): OTHER\l+ *(i: OTHER): OTHER\l+ /(i: OTHER): OTHER\l+ to_i(): Int\l+ to_f(): Float\l+ to_b(): Byte\l+ is_zero(): Bool\l+ zero(): OTHER\l+ value_of(val: Numeric): OTHER\l+ autoinit()\l}"
 ]
 Comparable -> Numeric [dir=back arrowtail=open style=dashed];
 
 Bool [
- label = "{Bool||+ to_i(): Int\l}"
+ label = "{Bool||+ to_i(): Int\l+ autoinit()\l}"
 ]
 Object -> Bool [dir=back arrowtail=open style=dashed];
 
 Float [
- label = "{Float||+ is_approx(other: Float, precision: Float): Bool\l}"
+ label = "{Float||+ is_approx(other: Float, precision: Float): Bool\l+ autoinit()\l}"
 ]
 Numeric -> Float [dir=back arrowtail=open style=dashed];
 
 Byte [
- label = "{Byte||+ %(i: Byte): Byte\l+ \<\<(i: Int): Byte\l+ \>\>(i: Int): Byte\l+ is_whitespace(): Bool\l}"
+ label = "{Byte||+ %(i: Byte): Byte\l+ \<\<(i: Int): Byte\l+ \>\>(i: Int): Byte\l+ ascii(): Char\l+ is_whitespace(): Bool\l+ autoinit()\l}"
 ]
 Discrete -> Byte [dir=back arrowtail=open style=dashed];
 Numeric -> Byte [dir=back arrowtail=open style=dashed];
 
 Int [
- label = "{Int||+ %(i: Int): Int\l+ \<\<(i: Int): Int\l+ \>\>(i: Int): Int\l+ code_point(): Char\l+ digit_count(b: Int): Int\l+ digit_count_base_10(): Int\l+ to_c(): Char\l+ abs(): Int\l+ is_whitespace(): Bool\l}"
+ label = "{Int||+ %(i: Int): Int\l+ \<\<(i: Int): Int\l+ \>\>(i: Int): Int\l+ code_point(): Char\l+ digit_count(b: Int): Int\l+ digit_count_base_10(): Int\l+ to_c(): Char\l+ abs(): Int\l+ autoinit()\l}"
 ]
 Discrete -> Int [dir=back arrowtail=open style=dashed];
 Numeric -> Int [dir=back arrowtail=open style=dashed];
 
 Char [
- label = "{Char||+ +(i: Int): Char\l+ -(i: Int): Char\l+ to_i(): Int\l+ code_point(): Int\l+ is_ascii(): Bool\l+ to_lower(): Char\l+ to_upper(): Char\l+ is_digit(): Bool\l+ is_lower(): Bool\l+ is_upper(): Bool\l+ is_letter(): Bool\l+ is_whitespace(): Bool\l}"
+ label = "{Char||+ to_i(): Int\l+ ascii(): Byte\l+ code_point(): Int\l+ is_ascii(): Bool\l+ to_lower(): Char\l+ to_upper(): Char\l+ is_digit(): Bool\l+ is_lower(): Bool\l+ is_upper(): Bool\l+ is_letter(): Bool\l+ is_whitespace(): Bool\l+ autoinit()\l}"
 ]
 Discrete -> Char [dir=back arrowtail=open style=dashed];
 
 Pointer [
- label = "{Pointer||+ nul(): Pointer\l+ address_is_null(): Bool\l+ free()\l}"
+ label = "{Pointer||+ address_is_null(): Bool\l+ free()\l+ autoinit()\l}"
 ]
 Object -> Pointer [dir=back arrowtail=open style=dashed];
 
 Task [
- label = "{interface\nTask||+ main()\l}"
+ label = "{interface\nTask||+ main()\l+ autoinit()\l}"
 ]
 Object -> Task [dir=back arrowtail=open style=dashed];
 
 A [
- label = "{A||+ pubA(a: A)\l# proA(a: A)\l+ pubA2(): A\l# proA2(): A\l+ vpubA(): nullable A\l+ vpubA=(vpubA: nullable A)\l# vproA(): nullable A\l# vproA=(vproA: nullable A)\l+ vpubA2(): A\l+ vpubA2=(vpubA2: A)\l# vproA2(): A\l# vproA2=(vproA2: A)\l}"
+ label = "{A||+ pubA(a: A)\l# proA(a: A)\l+ pubA2(): A\l# proA2(): A\l+ vpubA(): nullable A\l+ vpubA=(vpubA: nullable A)\l# vproA(): nullable A\l# vproA=(vproA: nullable A)\l+ vpubA2(): A\l+ vpubA2=(vpubA2: A)\l# vproA2(): A\l# vproA2=(vproA2: A)\l+ autoinit()\l}"
 ]
 Object -> A [dir=back arrowtail=open style=dashed];
 
 C [
- label = "{C||}"
+ label = "{C||+ autoinit()\l}"
 ]
 Object -> C [dir=back arrowtail=open style=dashed];
 
index c9cc4e2..0253287 100644 (file)
@@ -52,9 +52,9 @@
 <h1 id="base_simple3___base_simple3__B___val">base_simple3$B$val</h1>
 <pre><code><span class="nitcode"><span class="nc_pdef foldable" id="base_simple3$B$_val"><a id="base_simple3$B$val"></a><a id="base_simple3$B$val="></a><span class="line" id="L35">   <span class="nc_k">var</span> <span class="nc_i nc_def popupable" title="base_simple3$B$val" data-title="&lt;a href=&#34;#base_simple3___base_simple3__B___val&#34;&gt;base_simple3$B$val&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;fun&lt;&#47;b&gt; &lt;span&gt;val&lt;span&gt;: &lt;a href=&#34;#base_simple3___base_simple3__Int&#34;&gt;base_simple3$Int&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">val</span><span>:</span> <span class="nc_t popupable" title="Int" data-title="&lt;a href=&#34;#base_simple3___base_simple3__Int&#34;&gt;Int&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;class&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__Int&#34;&gt;base_simple3$Int&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">Int</span></span></span></span></code></pre>
 <h1 id="base_simple3___base_simple3__B___val_61d">base_simple3$B$val=</h1>
-<pre><code><span class="nitcode"><span class="nc_pdef foldable" id="base_simple3$B$_val"><a id="base_simple3$B$val"></a><a id="base_simple3$B$val="></a><span class="line" id="L35">   <span class="nc_k">var</span> <span class="nc_i nc_def popupable" title="base_simple3$B$val" data-title="&lt;a href=&#34;#base_simple3___base_simple3__B___val&#34;&gt;base_simple3$B$val&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;fun&lt;&#47;b&gt; &lt;span&gt;val&lt;span&gt;: &lt;a href=&#34;#base_simple3___base_simple3__Int&#34;&gt;base_simple3$Int&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">val</span><span>:</span> <span class="nc_t popupable" title="Int" data-title="&lt;a href=&#34;#base_simple3___base_simple3__Int&#34;&gt;Int&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;class&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__Int&#34;&gt;base_simple3$Int&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">Int</span></span></span></span></code></pre>
-<h1 id="base_simple3___base_simple3__B___init">base_simple3$B$init</h1>
-<pre><code><span class="nitcode"><span class="nc_pdef foldable" id="base_simple3$B$init"><span class="line" id="L36">  <span class="nc_k popupable" style="border-bottom: solid 2px red" title="Messages" data-content="&lt;div&gt;&lt;div class=&#34;dropdown&#34;&gt; &lt;a data-toggle=&#34;dropdown&#34; href=&#34;#&#34;&gt;&lt;b&gt;1 message(s)&lt;&#47;b&gt; &lt;span class=&#34;caret&#34;&gt;&lt;&#47;span&gt;&lt;&#47;a&gt;&lt;ul class=&#34;dropdown-menu&#34; role=&#34;menu&#34; aria-labelledby=&#34;dLabel&#34;&gt;&lt;li&gt;Warning: init with signature in base_simple3$B&lt;&#47;li&gt;&lt;&#47;ul&gt;&lt;&#47;div&gt;&lt;&#47;div&gt;" data-toggle="popover">init</span><span>(</span><span class="nc_i nc_v popupable" title="v: Int" data-content="&lt;div&gt;&lt;b&gt;local var&lt;&#47;b&gt; &lt;span&gt;v:&lt;a href=&#34;#base_simple3___base_simple3__Int&#34;&gt;base_simple3$Int&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">v</span><span>:</span> <span class="nc_t popupable" title="Int" data-title="&lt;a href=&#34;#base_simple3___base_simple3__Int&#34;&gt;Int&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;class&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__Int&#34;&gt;base_simple3$Int&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">Int</span><span>)</span>
+<pre><code><span class="nitcode"><span class="nc_pdef foldable" id="base_simple3$B$_val"><a id="base_simple3$B$val"></a><a id="base_simple3$B$val="></a><span class="line" id="L35">   <span class="nc_k">var</span> <span class="nc_i nc_def popupable" title="base_simple3$B$val" data-title="&lt;a href=&#34;#base_simple3___base_simple3__B___val&#34;&gt;base_simple3$B$val&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;fun&lt;&#47;b&gt; &lt;span&gt;val&lt;span&gt;: &lt;a href=&#34;#base_simple3___base_simple3__Int&#34;&gt;base_simple3$Int&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">val</span><span>:</span> <span class="nc_t popupable" title="Int" data-title="&lt;a href=&#34;#base_simple3__Int&#34;&gt;Int&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;class&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__Int&#34;&gt;base_simple3$Int&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">Int</span></span></span></span></code></pre>
+<h1 id="base_simple3___base_simple3__B___autoinit">base_simple3$B$autoinit</h1>
+<pre><code><span class="nitcode"><span class="nc_pdef foldable" id="base_simple3$B$autoinit"><span class="line" id="L36">      <span class="nc_k popupable" style="border-bottom: solid 2px red" title="Messages" data-content="&lt;div&gt;&lt;div class=&#34;dropdown&#34;&gt; &lt;a data-toggle=&#34;dropdown&#34; href=&#34;#&#34;&gt;&lt;b&gt;1 message(s)&lt;&#47;b&gt; &lt;span class=&#34;caret&#34;&gt;&lt;&#47;span&gt;&lt;&#47;a&gt;&lt;ul class=&#34;dropdown-menu&#34; role=&#34;menu&#34; aria-labelledby=&#34;dLabel&#34;&gt;&lt;li&gt;Warning: init with signature in base_simple3$B&lt;&#47;li&gt;&lt;&#47;ul&gt;&lt;&#47;div&gt;&lt;&#47;div&gt;" data-toggle="popover">init</span><span>(</span><span class="nc_i nc_v popupable" title="v: Int" data-content="&lt;div&gt;&lt;b&gt;local var&lt;&#47;b&gt; &lt;span&gt;v:&lt;a href=&#34;#base_simple3___base_simple3__Int&#34;&gt;base_simple3$Int&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">v</span><span>:</span> <span class="nc_t popupable" title="Int" data-title="&lt;a href=&#34;#base_simple3__Int&#34;&gt;Int&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;class&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__Int&#34;&gt;base_simple3$Int&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">Int</span><span>)</span>
 </span><span class="line" id="L37">    <span class="nc_k">do</span>
 </span><span class="line" id="L38">            <span class="nc_l popupable" title="Int" data-title="&lt;a href=&#34;#base_simple3___base_simple3__Int&#34;&gt;Int&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;class&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__Int&#34;&gt;base_simple3$Int&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">7</span><span class="popupable" title="call base_simple3$Int$output" data-title="&lt;a href=&#34;#base_simple3___base_simple3__Int___output&#34;&gt;call base_simple3$Int$output&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;call&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__Int___output&#34;&gt;base_simple3$Int$output&lt;&#47;a&gt;&lt;span&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">.</span><span class="nc_i popupable" title="call base_simple3$Int$output" data-title="&lt;a href=&#34;#base_simple3___base_simple3__Int___output&#34;&gt;call base_simple3$Int$output&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;call&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__Int___output&#34;&gt;base_simple3$Int$output&lt;&#47;a&gt;&lt;span&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">output</span>
 </span><span class="line" id="L39">            <span class="nc_k popupable" title="B" data-title="&lt;a href=&#34;#base_simple3___base_simple3__B&#34;&gt;B&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;class&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__B&#34;&gt;base_simple3$B&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">self</span><span class="popupable" title="call base_simple3$B$val=" data-title="&lt;a href=&#34;#base_simple3___base_simple3__B___val_61d&#34;&gt;call base_simple3$B$val=&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;call&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__B___val_61d&#34;&gt;base_simple3$B$val=&lt;&#47;a&gt;&lt;span&gt;(val: &lt;a href=&#34;#base_simple3___base_simple3__Int&#34;&gt;base_simple3$Int&lt;&#47;a&gt;)&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">.</span><span class="nc_i popupable" title="call base_simple3$B$val=" data-title="&lt;a href=&#34;#base_simple3___base_simple3__B___val_61d&#34;&gt;call base_simple3$B$val=&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;call&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__B___val_61d&#34;&gt;base_simple3$B$val=&lt;&#47;a&gt;&lt;span&gt;(val: &lt;a href=&#34;#base_simple3___base_simple3__Int&#34;&gt;base_simple3$Int&lt;&#47;a&gt;)&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">val</span> <span class="popupable" title="call base_simple3$B$val=" data-title="&lt;a href=&#34;#base_simple3___base_simple3__B___val_61d&#34;&gt;call base_simple3$B$val=&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;call&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__B___val_61d&#34;&gt;base_simple3$B$val=&lt;&#47;a&gt;&lt;span&gt;(val: &lt;a href=&#34;#base_simple3___base_simple3__Int&#34;&gt;base_simple3$Int&lt;&#47;a&gt;)&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">=</span> <span class="nc_i nc_v popupable" title="v: Int" data-content="&lt;div&gt;&lt;b&gt;local var&lt;&#47;b&gt; &lt;span&gt;v:&lt;a href=&#34;#base_simple3___base_simple3__Int&#34;&gt;base_simple3$Int&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">v</span>
 </span><span class="line" id="L55"><span class="nc_i popupable" title="call base_simple3$Sys$bar" data-title="&lt;a href=&#34;#base_simple3___base_simple3__Sys___bar&#34;&gt;call base_simple3$Sys$bar&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;call&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__Sys___bar&#34;&gt;base_simple3$Sys$bar&lt;&#47;a&gt;&lt;span&gt;(i: &lt;a href=&#34;#base_simple3___base_simple3__Int&#34;&gt;base_simple3$Int&lt;&#47;a&gt;)&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">bar</span><span>(</span><span class="nc_l popupable" title="Int" data-title="&lt;a href=&#34;#base_simple3___base_simple3__Int&#34;&gt;Int&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;class&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__Int&#34;&gt;base_simple3$Int&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">3</span><span>)</span>
 </span><span class="line" id="L56"><span class="nc_i popupable" title="call base_simple3$Sys$baz" data-title="&lt;a href=&#34;#base_simple3___base_simple3__Sys___baz&#34;&gt;call base_simple3$Sys$baz&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;call&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__Sys___baz&#34;&gt;base_simple3$Sys$baz&lt;&#47;a&gt;&lt;span&gt;: &lt;a href=&#34;#base_simple3___base_simple3__Int&#34;&gt;base_simple3$Int&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">baz</span><span class="popupable" title="call base_simple3$Int$output" data-title="&lt;a href=&#34;#base_simple3___base_simple3__Int___output&#34;&gt;call base_simple3$Int$output&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;call&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__Int___output&#34;&gt;base_simple3$Int$output&lt;&#47;a&gt;&lt;span&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">.</span><span class="nc_i popupable" title="call base_simple3$Int$output" data-title="&lt;a href=&#34;#base_simple3___base_simple3__Int___output&#34;&gt;call base_simple3$Int$output&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;call&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__Int___output&#34;&gt;base_simple3$Int$output&lt;&#47;a&gt;&lt;span&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">output</span>
 </span><span class="line" id="L57">
-</span><span class="line" id="L58"><span class="nc_k">var</span> <span class="nc_i nc_v popupable" title="a: A" data-content="&lt;div&gt;&lt;b&gt;local var&lt;&#47;b&gt; &lt;span&gt;a:&lt;a href=&#34;#base_simple3___base_simple3__A&#34;&gt;base_simple3$A&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">a</span> <span>=</span> <span class="nc_k popupable" title="call base_simple3$A$init" data-title="&lt;a href=&#34;#base_simple3___base_simple3__A___Object__init&#34;&gt;call base_simple3$A$init&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;call&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__A___Object__init&#34;&gt;base_simple3$A$init&lt;&#47;a&gt;&lt;span&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;b&gt;intro&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__Object___init&#34;&gt;in base_simple3$Object&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">new</span> <span class="nc_t popupable" title="A" data-title="&lt;a href=&#34;#base_simple3___base_simple3__A&#34;&gt;A&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;class&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__A&#34;&gt;base_simple3$A&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">A</span>
+</span><span class="line" id="L58"><span class="nc_k">var</span> <span class="nc_i nc_v popupable" title="a: A" data-content="&lt;div&gt;&lt;b&gt;local var&lt;&#47;b&gt; &lt;span&gt;a:&lt;a href=&#34;#base_simple3___base_simple3__A&#34;&gt;base_simple3$A&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">a</span> <span>=</span> <span class="nc_k popupable" title="call base_simple3$A$autoinit" data-title="&lt;a href=&#34;#base_simple3___base_simple3__A___autoinit&#34;&gt;call base_simple3$A$autoinit&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;call&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__A___autoinit&#34;&gt;base_simple3$A$autoinit&lt;&#47;a&gt;&lt;span&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">new</span> <span class="nc_t popupable" title="A" data-title="&lt;a href=&#34;#base_simple3__A&#34;&gt;A&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;class&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__A&#34;&gt;base_simple3$A&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">A</span>
 </span><span class="line" id="L59"><span class="nc_i nc_v popupable" title="a: A" data-content="&lt;div&gt;&lt;b&gt;local var&lt;&#47;b&gt; &lt;span&gt;a:&lt;a href=&#34;#base_simple3___base_simple3__A&#34;&gt;base_simple3$A&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">a</span><span class="popupable" title="call base_simple3$A$run" data-title="&lt;a href=&#34;#base_simple3___base_simple3__A___run&#34;&gt;call base_simple3$A$run&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;call&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__A___run&#34;&gt;base_simple3$A$run&lt;&#47;a&gt;&lt;span&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">.</span><span class="nc_i popupable" title="call base_simple3$A$run" data-title="&lt;a href=&#34;#base_simple3___base_simple3__A___run&#34;&gt;call base_simple3$A$run&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;call&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__A___run&#34;&gt;base_simple3$A$run&lt;&#47;a&gt;&lt;span&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">run</span>
 </span><span class="line" id="L60">
-</span><span class="line" id="L61"><span class="nc_k">var</span> <span class="nc_i nc_v popupable" title="b: B" data-content="&lt;div&gt;&lt;b&gt;local var&lt;&#47;b&gt; &lt;span&gt;b:&lt;a href=&#34;#base_simple3___base_simple3__B&#34;&gt;base_simple3$B&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">b</span> <span>=</span> <span class="nc_k popupable" title="call base_simple3$B$init" data-title="&lt;a href=&#34;#base_simple3___base_simple3__B___init&#34;&gt;call base_simple3$B$init&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;call&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__B___init&#34;&gt;base_simple3$B$init&lt;&#47;a&gt;&lt;span&gt;(v: &lt;a href=&#34;#base_simple3___base_simple3__Int&#34;&gt;base_simple3$Int&lt;&#47;a&gt;)&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">new</span> <span class="nc_t popupable" title="B" data-title="&lt;a href=&#34;#base_simple3___base_simple3__B&#34;&gt;B&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;class&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__B&#34;&gt;base_simple3$B&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">B</span><span>(</span><span class="nc_l popupable" title="Int" data-title="&lt;a href=&#34;#base_simple3___base_simple3__Int&#34;&gt;Int&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;class&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__Int&#34;&gt;base_simple3$Int&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">8</span><span>)</span>
+</span><span class="line" id="L61"><span class="nc_k">var</span> <span class="nc_i nc_v popupable" title="b: B" data-content="&lt;div&gt;&lt;b&gt;local var&lt;&#47;b&gt; &lt;span&gt;b:&lt;a href=&#34;#base_simple3___base_simple3__B&#34;&gt;base_simple3$B&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">b</span> <span>=</span> <span class="nc_k popupable" title="call base_simple3$B$autoinit" data-title="&lt;a href=&#34;#base_simple3___base_simple3__B___autoinit&#34;&gt;call base_simple3$B$autoinit&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;call&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__B___autoinit&#34;&gt;base_simple3$B$autoinit&lt;&#47;a&gt;&lt;span&gt;(v: &lt;a href=&#34;#base_simple3___base_simple3__Int&#34;&gt;base_simple3$Int&lt;&#47;a&gt;)&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">new</span> <span class="nc_t popupable" title="B" data-title="&lt;a href=&#34;#base_simple3__B&#34;&gt;B&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;class&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__B&#34;&gt;base_simple3$B&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">B</span><span>(</span><span class="nc_l popupable" title="Int" data-title="&lt;a href=&#34;#base_simple3__Int&#34;&gt;Int&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;class&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__Int&#34;&gt;base_simple3$Int&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">8</span><span>)</span>
 </span><span class="line" id="L62"><span class="nc_i nc_v popupable" title="b: B" data-content="&lt;div&gt;&lt;b&gt;local var&lt;&#47;b&gt; &lt;span&gt;b:&lt;a href=&#34;#base_simple3___base_simple3__B&#34;&gt;base_simple3$B&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">b</span><span class="popupable" title="call base_simple3$B$run" data-title="&lt;a href=&#34;#base_simple3___base_simple3__B___run&#34;&gt;call base_simple3$B$run&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;call&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__B___run&#34;&gt;base_simple3$B$run&lt;&#47;a&gt;&lt;span&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">.</span><span class="nc_i popupable" title="call base_simple3$B$run" data-title="&lt;a href=&#34;#base_simple3___base_simple3__B___run&#34;&gt;call base_simple3$B$run&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;call&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__B___run&#34;&gt;base_simple3$B$run&lt;&#47;a&gt;&lt;span&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">run</span>
 </span><span class="line" id="L63">
-</span><span class="line" id="L64"><span class="nc_k">var</span> <span class="nc_i nc_v popupable" title="c: C" data-content="&lt;div&gt;&lt;b&gt;local var&lt;&#47;b&gt; &lt;span&gt;c:&lt;a href=&#34;#base_simple3___base_simple3__C&#34;&gt;base_simple3$C&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">c</span> <span>=</span> <span class="nc_k popupable" title="call base_simple3$C$init" data-title="&lt;a href=&#34;#base_simple3___base_simple3__C___Object__init&#34;&gt;call base_simple3$C$init&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;call&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__C___Object__init&#34;&gt;base_simple3$C$init&lt;&#47;a&gt;&lt;span&gt;(val1: &lt;a href=&#34;#base_simple3___base_simple3__Int&#34;&gt;base_simple3$Int&lt;&#47;a&gt;)&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;b&gt;intro&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__Object___init&#34;&gt;in base_simple3$Object&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">new</span> <span class="nc_t popupable" title="C" data-title="&lt;a href=&#34;#base_simple3___base_simple3__C&#34;&gt;C&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;class&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__C&#34;&gt;base_simple3$C&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">C</span><span>(</span><span class="nc_l popupable" title="Int" data-title="&lt;a href=&#34;#base_simple3___base_simple3__Int&#34;&gt;Int&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;class&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__Int&#34;&gt;base_simple3$Int&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">9</span><span>)</span>
+</span><span class="line" id="L64"><span class="nc_k">var</span> <span class="nc_i nc_v popupable" title="c: C" data-content="&lt;div&gt;&lt;b&gt;local var&lt;&#47;b&gt; &lt;span&gt;c:&lt;a href=&#34;#base_simple3___base_simple3__C&#34;&gt;base_simple3$C&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">c</span> <span>=</span> <span class="nc_k popupable" title="call base_simple3$C$autoinit" data-title="&lt;a href=&#34;#base_simple3___base_simple3__C___autoinit&#34;&gt;call base_simple3$C$autoinit&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;call&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__C___autoinit&#34;&gt;base_simple3$C$autoinit&lt;&#47;a&gt;&lt;span&gt;(val1: &lt;a href=&#34;#base_simple3___base_simple3__Int&#34;&gt;base_simple3$Int&lt;&#47;a&gt;)&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">new</span> <span class="nc_t popupable" title="C" data-title="&lt;a href=&#34;#base_simple3__C&#34;&gt;C&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;class&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__C&#34;&gt;base_simple3$C&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">C</span><span>(</span><span class="nc_l popupable" title="Int" data-title="&lt;a href=&#34;#base_simple3__Int&#34;&gt;Int&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;class&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__Int&#34;&gt;base_simple3$Int&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">9</span><span>)</span>
 </span><span class="line" id="L65"><span class="nc_i nc_v popupable" title="c: C" data-content="&lt;div&gt;&lt;b&gt;local var&lt;&#47;b&gt; &lt;span&gt;c:&lt;a href=&#34;#base_simple3___base_simple3__C&#34;&gt;base_simple3$C&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">c</span><span class="popupable" title="call base_simple3$C$val1" data-title="&lt;a href=&#34;#base_simple3___base_simple3__C___val1&#34;&gt;call base_simple3$C$val1&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;call&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__C___val1&#34;&gt;base_simple3$C$val1&lt;&#47;a&gt;&lt;span&gt;: &lt;a href=&#34;#base_simple3___base_simple3__Int&#34;&gt;base_simple3$Int&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">.</span><span class="nc_i popupable" title="call base_simple3$C$val1" data-title="&lt;a href=&#34;#base_simple3___base_simple3__C___val1&#34;&gt;call base_simple3$C$val1&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;call&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__C___val1&#34;&gt;base_simple3$C$val1&lt;&#47;a&gt;&lt;span&gt;: &lt;a href=&#34;#base_simple3___base_simple3__Int&#34;&gt;base_simple3$Int&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">val1</span><span class="popupable" title="call base_simple3$Int$output" data-title="&lt;a href=&#34;#base_simple3___base_simple3__Int___output&#34;&gt;call base_simple3$Int$output&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;call&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__Int___output&#34;&gt;base_simple3$Int$output&lt;&#47;a&gt;&lt;span&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">.</span><span class="nc_i popupable" title="call base_simple3$Int$output" data-title="&lt;a href=&#34;#base_simple3___base_simple3__Int___output&#34;&gt;call base_simple3$Int$output&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;call&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__Int___output&#34;&gt;base_simple3$Int$output&lt;&#47;a&gt;&lt;span&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">output</span>
 </span><span class="line" id="L66"><span class="nc_i nc_v popupable" title="c: C" data-content="&lt;div&gt;&lt;b&gt;local var&lt;&#47;b&gt; &lt;span&gt;c:&lt;a href=&#34;#base_simple3___base_simple3__C&#34;&gt;base_simple3$C&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">c</span><span class="popupable" title="call base_simple3$C$val2" data-title="&lt;a href=&#34;#base_simple3___base_simple3__C___val2&#34;&gt;call base_simple3$C$val2&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;call&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__C___val2&#34;&gt;base_simple3$C$val2&lt;&#47;a&gt;&lt;span&gt;: &lt;a href=&#34;#base_simple3___base_simple3__Int&#34;&gt;base_simple3$Int&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">.</span><span class="nc_i popupable" title="call base_simple3$C$val2" data-title="&lt;a href=&#34;#base_simple3___base_simple3__C___val2&#34;&gt;call base_simple3$C$val2&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;call&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__C___val2&#34;&gt;base_simple3$C$val2&lt;&#47;a&gt;&lt;span&gt;: &lt;a href=&#34;#base_simple3___base_simple3__Int&#34;&gt;base_simple3$Int&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">val2</span><span class="popupable" title="call base_simple3$Int$output" data-title="&lt;a href=&#34;#base_simple3___base_simple3__Int___output&#34;&gt;call base_simple3$Int$output&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;call&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__Int___output&#34;&gt;base_simple3$Int$output&lt;&#47;a&gt;&lt;span&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">.</span><span class="nc_i popupable" title="call base_simple3$Int$output" data-title="&lt;a href=&#34;#base_simple3___base_simple3__Int___output&#34;&gt;call base_simple3$Int$output&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;call&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__Int___output&#34;&gt;base_simple3$Int$output&lt;&#47;a&gt;&lt;span&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">output</span></span></span></span></code></pre>
 <h2>AST node: AModule at base_simple3.nit:17,1--66,13</h2>
 </span></span><span class="line" id="L32"><span class="nc_k">end</span>
 </span></span><span class="line" id="L33">
 </span><span class="nc_cdef foldable" id="base_simple3$B"><span class="line" id="L34"><span class="nc_k">class</span> <span class="nc_t nc_def popupable" title="class B" data-title="&lt;a href=&#34;#base_simple3___base_simple3__B&#34;&gt;class B&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;class&lt;&#47;b&gt; &lt;span&gt;B&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;div class=&#34;dropdown&#34;&gt; &lt;a data-toggle=&#34;dropdown&#34; href=&#34;#&#34;&gt;&lt;b&gt;hier&lt;&#47;b&gt; super-classes&lt;span class=&#34;caret&#34;&gt;&lt;&#47;span&gt;&lt;&#47;a&gt;&lt;ul class=&#34;dropdown-menu&#34; role=&#34;menu&#34; aria-labelledby=&#34;dLabel&#34;&gt;&lt;li&gt;&lt;a href=&#34;#base_simple3___base_simple3__Object&#34;&gt;base_simple3$Object&lt;&#47;a&gt;&lt;&#47;li&gt;&lt;&#47;ul&gt;&lt;&#47;div&gt;&lt;&#47;div&gt;" data-toggle="popover">B</span>
-</span><span class="nc_pdef foldable" id="base_simple3$B$_val"><a id="base_simple3$B$val"></a><a id="base_simple3$B$val="></a><span class="line" id="L35">     <span class="nc_k">var</span> <span class="nc_i nc_def popupable" title="base_simple3$B$val" data-title="&lt;a href=&#34;#base_simple3___base_simple3__B___val&#34;&gt;base_simple3$B$val&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;fun&lt;&#47;b&gt; &lt;span&gt;val&lt;span&gt;: &lt;a href=&#34;#base_simple3___base_simple3__Int&#34;&gt;base_simple3$Int&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">val</span><span>:</span> <span class="nc_t popupable" title="Int" data-title="&lt;a href=&#34;#base_simple3___base_simple3__Int&#34;&gt;Int&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;class&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__Int&#34;&gt;base_simple3$Int&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">Int</span>
-</span></span><span class="nc_pdef foldable" id="base_simple3$B$init"><span class="line" id="L36">     <span class="nc_k popupable" style="border-bottom: solid 2px red" title="Messages" data-content="&lt;div&gt;&lt;div class=&#34;dropdown&#34;&gt; &lt;a data-toggle=&#34;dropdown&#34; href=&#34;#&#34;&gt;&lt;b&gt;1 message(s)&lt;&#47;b&gt; &lt;span class=&#34;caret&#34;&gt;&lt;&#47;span&gt;&lt;&#47;a&gt;&lt;ul class=&#34;dropdown-menu&#34; role=&#34;menu&#34; aria-labelledby=&#34;dLabel&#34;&gt;&lt;li&gt;Warning: init with signature in base_simple3$B&lt;&#47;li&gt;&lt;&#47;ul&gt;&lt;&#47;div&gt;&lt;&#47;div&gt;" data-toggle="popover">init</span><span>(</span><span class="nc_i nc_v popupable" title="v: Int" data-content="&lt;div&gt;&lt;b&gt;local var&lt;&#47;b&gt; &lt;span&gt;v:&lt;a href=&#34;#base_simple3___base_simple3__Int&#34;&gt;base_simple3$Int&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">v</span><span>:</span> <span class="nc_t popupable" title="Int" data-title="&lt;a href=&#34;#base_simple3___base_simple3__Int&#34;&gt;Int&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;class&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__Int&#34;&gt;base_simple3$Int&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">Int</span><span>)</span>
+</span><span class="nc_pdef foldable" id="base_simple3$B$_val"><a id="base_simple3$B$val"></a><a id="base_simple3$B$val="></a><span class="line" id="L35">     <span class="nc_k">var</span> <span class="nc_i nc_def popupable" title="base_simple3$B$val" data-title="&lt;a href=&#34;#base_simple3___base_simple3__B___val&#34;&gt;base_simple3$B$val&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;fun&lt;&#47;b&gt; &lt;span&gt;val&lt;span&gt;: &lt;a href=&#34;#base_simple3___base_simple3__Int&#34;&gt;base_simple3$Int&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">val</span><span>:</span> <span class="nc_t popupable" title="Int" data-title="&lt;a href=&#34;#base_simple3__Int&#34;&gt;Int&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;class&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__Int&#34;&gt;base_simple3$Int&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">Int</span>
+</span></span><span class="nc_pdef foldable" id="base_simple3$B$autoinit"><span class="line" id="L36"> <span class="nc_k popupable" style="border-bottom: solid 2px red" title="Messages" data-content="&lt;div&gt;&lt;div class=&#34;dropdown&#34;&gt; &lt;a data-toggle=&#34;dropdown&#34; href=&#34;#&#34;&gt;&lt;b&gt;1 message(s)&lt;&#47;b&gt; &lt;span class=&#34;caret&#34;&gt;&lt;&#47;span&gt;&lt;&#47;a&gt;&lt;ul class=&#34;dropdown-menu&#34; role=&#34;menu&#34; aria-labelledby=&#34;dLabel&#34;&gt;&lt;li&gt;Warning: init with signature in base_simple3$B&lt;&#47;li&gt;&lt;&#47;ul&gt;&lt;&#47;div&gt;&lt;&#47;div&gt;" data-toggle="popover">init</span><span>(</span><span class="nc_i nc_v popupable" title="v: Int" data-content="&lt;div&gt;&lt;b&gt;local var&lt;&#47;b&gt; &lt;span&gt;v:&lt;a href=&#34;#base_simple3___base_simple3__Int&#34;&gt;base_simple3$Int&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">v</span><span>:</span> <span class="nc_t popupable" title="Int" data-title="&lt;a href=&#34;#base_simple3__Int&#34;&gt;Int&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;class&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__Int&#34;&gt;base_simple3$Int&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">Int</span><span>)</span>
 </span><span class="line" id="L37">    <span class="nc_k">do</span>
 </span><span class="line" id="L38">            <span class="nc_l popupable" title="Int" data-title="&lt;a href=&#34;#base_simple3___base_simple3__Int&#34;&gt;Int&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;class&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__Int&#34;&gt;base_simple3$Int&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">7</span><span class="popupable" title="call base_simple3$Int$output" data-title="&lt;a href=&#34;#base_simple3___base_simple3__Int___output&#34;&gt;call base_simple3$Int$output&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;call&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__Int___output&#34;&gt;base_simple3$Int$output&lt;&#47;a&gt;&lt;span&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">.</span><span class="nc_i popupable" title="call base_simple3$Int$output" data-title="&lt;a href=&#34;#base_simple3___base_simple3__Int___output&#34;&gt;call base_simple3$Int$output&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;call&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__Int___output&#34;&gt;base_simple3$Int$output&lt;&#47;a&gt;&lt;span&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">output</span>
 </span><span class="line" id="L39">            <span class="nc_k popupable" title="B" data-title="&lt;a href=&#34;#base_simple3___base_simple3__B&#34;&gt;B&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;class&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__B&#34;&gt;base_simple3$B&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">self</span><span class="popupable" title="call base_simple3$B$val=" data-title="&lt;a href=&#34;#base_simple3___base_simple3__B___val_61d&#34;&gt;call base_simple3$B$val=&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;call&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__B___val_61d&#34;&gt;base_simple3$B$val=&lt;&#47;a&gt;&lt;span&gt;(val: &lt;a href=&#34;#base_simple3___base_simple3__Int&#34;&gt;base_simple3$Int&lt;&#47;a&gt;)&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">.</span><span class="nc_i popupable" title="call base_simple3$B$val=" data-title="&lt;a href=&#34;#base_simple3___base_simple3__B___val_61d&#34;&gt;call base_simple3$B$val=&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;call&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__B___val_61d&#34;&gt;base_simple3$B$val=&lt;&#47;a&gt;&lt;span&gt;(val: &lt;a href=&#34;#base_simple3___base_simple3__Int&#34;&gt;base_simple3$Int&lt;&#47;a&gt;)&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">val</span> <span class="popupable" title="call base_simple3$B$val=" data-title="&lt;a href=&#34;#base_simple3___base_simple3__B___val_61d&#34;&gt;call base_simple3$B$val=&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;call&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__B___val_61d&#34;&gt;base_simple3$B$val=&lt;&#47;a&gt;&lt;span&gt;(val: &lt;a href=&#34;#base_simple3___base_simple3__Int&#34;&gt;base_simple3$Int&lt;&#47;a&gt;)&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">=</span> <span class="nc_i nc_v popupable" title="v: Int" data-content="&lt;div&gt;&lt;b&gt;local var&lt;&#47;b&gt; &lt;span&gt;v:&lt;a href=&#34;#base_simple3___base_simple3__Int&#34;&gt;base_simple3$Int&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">v</span>
 </span><span class="line" id="L55"><span class="nc_i popupable" title="call base_simple3$Sys$bar" data-title="&lt;a href=&#34;#base_simple3___base_simple3__Sys___bar&#34;&gt;call base_simple3$Sys$bar&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;call&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__Sys___bar&#34;&gt;base_simple3$Sys$bar&lt;&#47;a&gt;&lt;span&gt;(i: &lt;a href=&#34;#base_simple3___base_simple3__Int&#34;&gt;base_simple3$Int&lt;&#47;a&gt;)&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">bar</span><span>(</span><span class="nc_l popupable" title="Int" data-title="&lt;a href=&#34;#base_simple3___base_simple3__Int&#34;&gt;Int&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;class&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__Int&#34;&gt;base_simple3$Int&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">3</span><span>)</span>
 </span><span class="line" id="L56"><span class="nc_i popupable" title="call base_simple3$Sys$baz" data-title="&lt;a href=&#34;#base_simple3___base_simple3__Sys___baz&#34;&gt;call base_simple3$Sys$baz&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;call&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__Sys___baz&#34;&gt;base_simple3$Sys$baz&lt;&#47;a&gt;&lt;span&gt;: &lt;a href=&#34;#base_simple3___base_simple3__Int&#34;&gt;base_simple3$Int&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">baz</span><span class="popupable" title="call base_simple3$Int$output" data-title="&lt;a href=&#34;#base_simple3___base_simple3__Int___output&#34;&gt;call base_simple3$Int$output&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;call&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__Int___output&#34;&gt;base_simple3$Int$output&lt;&#47;a&gt;&lt;span&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">.</span><span class="nc_i popupable" title="call base_simple3$Int$output" data-title="&lt;a href=&#34;#base_simple3___base_simple3__Int___output&#34;&gt;call base_simple3$Int$output&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;call&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__Int___output&#34;&gt;base_simple3$Int$output&lt;&#47;a&gt;&lt;span&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">output</span>
 </span><span class="line" id="L57">
-</span><span class="line" id="L58"><span class="nc_k">var</span> <span class="nc_i nc_v popupable" title="a: A" data-content="&lt;div&gt;&lt;b&gt;local var&lt;&#47;b&gt; &lt;span&gt;a:&lt;a href=&#34;#base_simple3___base_simple3__A&#34;&gt;base_simple3$A&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">a</span> <span>=</span> <span class="nc_k popupable" title="call base_simple3$A$init" data-title="&lt;a href=&#34;#base_simple3___base_simple3__A___Object__init&#34;&gt;call base_simple3$A$init&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;call&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__A___Object__init&#34;&gt;base_simple3$A$init&lt;&#47;a&gt;&lt;span&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;b&gt;intro&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__Object___init&#34;&gt;in base_simple3$Object&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">new</span> <span class="nc_t popupable" title="A" data-title="&lt;a href=&#34;#base_simple3___base_simple3__A&#34;&gt;A&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;class&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__A&#34;&gt;base_simple3$A&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">A</span>
+</span><span class="line" id="L58"><span class="nc_k">var</span> <span class="nc_i nc_v popupable" title="a: A" data-content="&lt;div&gt;&lt;b&gt;local var&lt;&#47;b&gt; &lt;span&gt;a:&lt;a href=&#34;#base_simple3___base_simple3__A&#34;&gt;base_simple3$A&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">a</span> <span>=</span> <span class="nc_k popupable" title="call base_simple3$A$autoinit" data-title="&lt;a href=&#34;#base_simple3___base_simple3__A___autoinit&#34;&gt;call base_simple3$A$autoinit&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;call&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__A___autoinit&#34;&gt;base_simple3$A$autoinit&lt;&#47;a&gt;&lt;span&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">new</span> <span class="nc_t popupable" title="A" data-title="&lt;a href=&#34;#base_simple3__A&#34;&gt;A&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;class&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__A&#34;&gt;base_simple3$A&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">A</span>
 </span><span class="line" id="L59"><span class="nc_i nc_v popupable" title="a: A" data-content="&lt;div&gt;&lt;b&gt;local var&lt;&#47;b&gt; &lt;span&gt;a:&lt;a href=&#34;#base_simple3___base_simple3__A&#34;&gt;base_simple3$A&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">a</span><span class="popupable" title="call base_simple3$A$run" data-title="&lt;a href=&#34;#base_simple3___base_simple3__A___run&#34;&gt;call base_simple3$A$run&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;call&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__A___run&#34;&gt;base_simple3$A$run&lt;&#47;a&gt;&lt;span&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">.</span><span class="nc_i popupable" title="call base_simple3$A$run" data-title="&lt;a href=&#34;#base_simple3___base_simple3__A___run&#34;&gt;call base_simple3$A$run&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;call&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__A___run&#34;&gt;base_simple3$A$run&lt;&#47;a&gt;&lt;span&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">run</span>
 </span><span class="line" id="L60">
-</span><span class="line" id="L61"><span class="nc_k">var</span> <span class="nc_i nc_v popupable" title="b: B" data-content="&lt;div&gt;&lt;b&gt;local var&lt;&#47;b&gt; &lt;span&gt;b:&lt;a href=&#34;#base_simple3___base_simple3__B&#34;&gt;base_simple3$B&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">b</span> <span>=</span> <span class="nc_k popupable" title="call base_simple3$B$init" data-title="&lt;a href=&#34;#base_simple3___base_simple3__B___init&#34;&gt;call base_simple3$B$init&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;call&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__B___init&#34;&gt;base_simple3$B$init&lt;&#47;a&gt;&lt;span&gt;(v: &lt;a href=&#34;#base_simple3___base_simple3__Int&#34;&gt;base_simple3$Int&lt;&#47;a&gt;)&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">new</span> <span class="nc_t popupable" title="B" data-title="&lt;a href=&#34;#base_simple3___base_simple3__B&#34;&gt;B&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;class&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__B&#34;&gt;base_simple3$B&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">B</span><span>(</span><span class="nc_l popupable" title="Int" data-title="&lt;a href=&#34;#base_simple3___base_simple3__Int&#34;&gt;Int&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;class&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__Int&#34;&gt;base_simple3$Int&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">8</span><span>)</span>
+</span><span class="line" id="L61"><span class="nc_k">var</span> <span class="nc_i nc_v popupable" title="b: B" data-content="&lt;div&gt;&lt;b&gt;local var&lt;&#47;b&gt; &lt;span&gt;b:&lt;a href=&#34;#base_simple3___base_simple3__B&#34;&gt;base_simple3$B&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">b</span> <span>=</span> <span class="nc_k popupable" title="call base_simple3$B$autoinit" data-title="&lt;a href=&#34;#base_simple3___base_simple3__B___autoinit&#34;&gt;call base_simple3$B$autoinit&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;call&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__B___autoinit&#34;&gt;base_simple3$B$autoinit&lt;&#47;a&gt;&lt;span&gt;(v: &lt;a href=&#34;#base_simple3___base_simple3__Int&#34;&gt;base_simple3$Int&lt;&#47;a&gt;)&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">new</span> <span class="nc_t popupable" title="B" data-title="&lt;a href=&#34;#base_simple3__B&#34;&gt;B&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;class&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__B&#34;&gt;base_simple3$B&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">B</span><span>(</span><span class="nc_l popupable" title="Int" data-title="&lt;a href=&#34;#base_simple3__Int&#34;&gt;Int&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;class&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__Int&#34;&gt;base_simple3$Int&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">8</span><span>)</span>
 </span><span class="line" id="L62"><span class="nc_i nc_v popupable" title="b: B" data-content="&lt;div&gt;&lt;b&gt;local var&lt;&#47;b&gt; &lt;span&gt;b:&lt;a href=&#34;#base_simple3___base_simple3__B&#34;&gt;base_simple3$B&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">b</span><span class="popupable" title="call base_simple3$B$run" data-title="&lt;a href=&#34;#base_simple3___base_simple3__B___run&#34;&gt;call base_simple3$B$run&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;call&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__B___run&#34;&gt;base_simple3$B$run&lt;&#47;a&gt;&lt;span&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">.</span><span class="nc_i popupable" title="call base_simple3$B$run" data-title="&lt;a href=&#34;#base_simple3___base_simple3__B___run&#34;&gt;call base_simple3$B$run&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;call&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__B___run&#34;&gt;base_simple3$B$run&lt;&#47;a&gt;&lt;span&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">run</span>
 </span><span class="line" id="L63">
-</span><span class="line" id="L64"><span class="nc_k">var</span> <span class="nc_i nc_v popupable" title="c: C" data-content="&lt;div&gt;&lt;b&gt;local var&lt;&#47;b&gt; &lt;span&gt;c:&lt;a href=&#34;#base_simple3___base_simple3__C&#34;&gt;base_simple3$C&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">c</span> <span>=</span> <span class="nc_k popupable" title="call base_simple3$C$init" data-title="&lt;a href=&#34;#base_simple3___base_simple3__C___Object__init&#34;&gt;call base_simple3$C$init&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;call&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__C___Object__init&#34;&gt;base_simple3$C$init&lt;&#47;a&gt;&lt;span&gt;(val1: &lt;a href=&#34;#base_simple3___base_simple3__Int&#34;&gt;base_simple3$Int&lt;&#47;a&gt;)&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;b&gt;intro&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__Object___init&#34;&gt;in base_simple3$Object&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">new</span> <span class="nc_t popupable" title="C" data-title="&lt;a href=&#34;#base_simple3___base_simple3__C&#34;&gt;C&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;class&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__C&#34;&gt;base_simple3$C&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">C</span><span>(</span><span class="nc_l popupable" title="Int" data-title="&lt;a href=&#34;#base_simple3___base_simple3__Int&#34;&gt;Int&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;class&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__Int&#34;&gt;base_simple3$Int&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">9</span><span>)</span>
+</span><span class="line" id="L64"><span class="nc_k">var</span> <span class="nc_i nc_v popupable" title="c: C" data-content="&lt;div&gt;&lt;b&gt;local var&lt;&#47;b&gt; &lt;span&gt;c:&lt;a href=&#34;#base_simple3___base_simple3__C&#34;&gt;base_simple3$C&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">c</span> <span>=</span> <span class="nc_k popupable" title="call base_simple3$C$autoinit" data-title="&lt;a href=&#34;#base_simple3___base_simple3__C___autoinit&#34;&gt;call base_simple3$C$autoinit&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;call&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__C___autoinit&#34;&gt;base_simple3$C$autoinit&lt;&#47;a&gt;&lt;span&gt;(val1: &lt;a href=&#34;#base_simple3___base_simple3__Int&#34;&gt;base_simple3$Int&lt;&#47;a&gt;)&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">new</span> <span class="nc_t popupable" title="C" data-title="&lt;a href=&#34;#base_simple3__C&#34;&gt;C&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;class&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__C&#34;&gt;base_simple3$C&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">C</span><span>(</span><span class="nc_l popupable" title="Int" data-title="&lt;a href=&#34;#base_simple3__Int&#34;&gt;Int&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;class&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__Int&#34;&gt;base_simple3$Int&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">9</span><span>)</span>
 </span><span class="line" id="L65"><span class="nc_i nc_v popupable" title="c: C" data-content="&lt;div&gt;&lt;b&gt;local var&lt;&#47;b&gt; &lt;span&gt;c:&lt;a href=&#34;#base_simple3___base_simple3__C&#34;&gt;base_simple3$C&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">c</span><span class="popupable" title="call base_simple3$C$val1" data-title="&lt;a href=&#34;#base_simple3___base_simple3__C___val1&#34;&gt;call base_simple3$C$val1&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;call&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__C___val1&#34;&gt;base_simple3$C$val1&lt;&#47;a&gt;&lt;span&gt;: &lt;a href=&#34;#base_simple3___base_simple3__Int&#34;&gt;base_simple3$Int&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">.</span><span class="nc_i popupable" title="call base_simple3$C$val1" data-title="&lt;a href=&#34;#base_simple3___base_simple3__C___val1&#34;&gt;call base_simple3$C$val1&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;call&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__C___val1&#34;&gt;base_simple3$C$val1&lt;&#47;a&gt;&lt;span&gt;: &lt;a href=&#34;#base_simple3___base_simple3__Int&#34;&gt;base_simple3$Int&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">val1</span><span class="popupable" title="call base_simple3$Int$output" data-title="&lt;a href=&#34;#base_simple3___base_simple3__Int___output&#34;&gt;call base_simple3$Int$output&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;call&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__Int___output&#34;&gt;base_simple3$Int$output&lt;&#47;a&gt;&lt;span&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">.</span><span class="nc_i popupable" title="call base_simple3$Int$output" data-title="&lt;a href=&#34;#base_simple3___base_simple3__Int___output&#34;&gt;call base_simple3$Int$output&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;call&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__Int___output&#34;&gt;base_simple3$Int$output&lt;&#47;a&gt;&lt;span&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">output</span>
 </span><span class="line" id="L66"><span class="nc_i nc_v popupable" title="c: C" data-content="&lt;div&gt;&lt;b&gt;local var&lt;&#47;b&gt; &lt;span&gt;c:&lt;a href=&#34;#base_simple3___base_simple3__C&#34;&gt;base_simple3$C&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">c</span><span class="popupable" title="call base_simple3$C$val2" data-title="&lt;a href=&#34;#base_simple3___base_simple3__C___val2&#34;&gt;call base_simple3$C$val2&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;call&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__C___val2&#34;&gt;base_simple3$C$val2&lt;&#47;a&gt;&lt;span&gt;: &lt;a href=&#34;#base_simple3___base_simple3__Int&#34;&gt;base_simple3$Int&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">.</span><span class="nc_i popupable" title="call base_simple3$C$val2" data-title="&lt;a href=&#34;#base_simple3___base_simple3__C___val2&#34;&gt;call base_simple3$C$val2&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;call&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__C___val2&#34;&gt;base_simple3$C$val2&lt;&#47;a&gt;&lt;span&gt;: &lt;a href=&#34;#base_simple3___base_simple3__Int&#34;&gt;base_simple3$Int&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">val2</span><span class="popupable" title="call base_simple3$Int$output" data-title="&lt;a href=&#34;#base_simple3___base_simple3__Int___output&#34;&gt;call base_simple3$Int$output&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;call&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__Int___output&#34;&gt;base_simple3$Int$output&lt;&#47;a&gt;&lt;span&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">.</span><span class="nc_i popupable" title="call base_simple3$Int$output" data-title="&lt;a href=&#34;#base_simple3___base_simple3__Int___output&#34;&gt;call base_simple3$Int$output&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;call&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__Int___output&#34;&gt;base_simple3$Int$output&lt;&#47;a&gt;&lt;span&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">output</span></span></span></span></code></pre>
 <h2>AST node: ANoImport at base_simple3.nit:17,1--10</h2>
 <pre><code><span class="nitcode"><span class="line" id="L26"> <span class="nc_k">is</span></span></span></code></pre>
 <h2>AST node: AAnnotation at base_simple3.nit:26,16--21</h2>
 <pre><code><span class="nitcode"><span class="line" id="L26"> <span class="nc_i">intern</span></span></span></code></pre>
-<h2>AST node: AIdAtid at bas***TRUNCATED***
+<h2>AST node: AIdAtid at base_simple3.nit:26,16--21</h2>
+<pre><code><span class="nitcode"><span class="line" id="L26"> <span class="nc_i">intern</span></span></span></code></pre>
+<h2>AST node: AConcreteClasskind at base_simple3.nit:29,1--5</h2>
+<pre><code><span class="nitcode"><span class="line" id="L29"><span class="nc_k">class</span></span></span></code></pre>
+<h2>AST node: TKwclass at base_simple3.nit:29,1--5</h2>
+<pre><code><span class="nitcode"><span class="line" id="L29"><span class="nc_k">class</span></span></span></code></pre>
+<h2>AST node: TKwinit at base_simple3.nit:30,2--5</h2>
+<pre><code><span class="nc_pdef foldable" id="base_simple3$A$init"><span class="line" id="L30">        <span class="nc_k">init</span></span></span></code></pre>
+<h2>AST node: TKwdo at base_simple3.nit:30,7--8</h2>
+<pre><code><span class="nitcode"><span class="line" id="L30"> <span class="nc_k">do</span></span></span></code></pre>
+<h2>AST node: ACallExpr at base_simple3.nit:30,10--17</h2>
+<pre><code><span class="nitcode"><span class="line" id="L30"> <span class="nc_l popupable" title="Int" data-title="&lt;a href=&#34;#base_simple3__Int&#34;&gt;Int&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;class&lt;&#47;b&gt; &lt;span&gt;&lt;a href=&#34;#base_simple3___base_simple3__Int&#34;&gt;base_simple3$Int&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover">5</span><span class="popupable***TRUNCATED***
index fb0ab9b..327b4a6 100644 (file)
@@ -1,52 +1,52 @@
 All entities, including fictive ones:
  list:
-  MMethodDef: 17 (30.35%)
-  MMethod: 15 (26.78%)
-  MClassDef: 7 (12.50%)
-  MClass: 7 (12.50%)
-  MAttributeDef: 3 (5.35%)
-  MAttribute: 3 (5.35%)
-  Model: 1 (1.78%)
-  MGroup: 1 (1.78%)
-  MPackage: 1 (1.78%)
-  MModule: 1 (1.78%)
+  MMethodDef: 21 (32.30%)
+  MMethod: 20 (30.76%)
+  MClassDef: 7 (10.76%)
+  MClass: 7 (10.76%)
+  MAttributeDef: 3 (4.61%)
+  MAttribute: 3 (4.61%)
+  Model: 1 (1.53%)
+  MGroup: 1 (1.53%)
+  MPackage: 1 (1.53%)
+  MModule: 1 (1.53%)
 All entities:
  list:
-  MMethodDef: 17 (30.35%)
-  MMethod: 15 (26.78%)
-  MClassDef: 7 (12.50%)
-  MClass: 7 (12.50%)
-  MAttributeDef: 3 (5.35%)
-  MAttribute: 3 (5.35%)
-  Model: 1 (1.78%)
-  MGroup: 1 (1.78%)
-  MPackage: 1 (1.78%)
-  MModule: 1 (1.78%)
+  MMethodDef: 21 (32.30%)
+  MMethod: 20 (30.76%)
+  MClassDef: 7 (10.76%)
+  MClass: 7 (10.76%)
+  MAttributeDef: 3 (4.61%)
+  MAttribute: 3 (4.61%)
+  Model: 1 (1.53%)
+  MGroup: 1 (1.53%)
+  MPackage: 1 (1.53%)
+  MModule: 1 (1.53%)
 
 All non-private entities:
  list:
-  MMethodDef: 17 (34.00%)
-  MMethod: 15 (30.00%)
-  MClassDef: 7 (14.00%)
-  MClass: 7 (14.00%)
-  MModule: 1 (2.00%)
-  MGroup: 1 (2.00%)
-  MPackage: 1 (2.00%)
-  Model: 1 (2.00%)
+  MMethodDef: 21 (35.59%)
+  MMethod: 20 (33.89%)
+  MClassDef: 7 (11.86%)
+  MClass: 7 (11.86%)
+  MModule: 1 (1.69%)
+  MGroup: 1 (1.69%)
+  MPackage: 1 (1.69%)
+  Model: 1 (1.69%)
 
 All documented non-private entities:
  list:
 
 All public entities:
  list:
-  MMethodDef: 14 (31.81%)
-  MMethod: 12 (27.27%)
-  MClassDef: 7 (15.90%)
-  MClass: 7 (15.90%)
-  MModule: 1 (2.27%)
-  MGroup: 1 (2.27%)
-  MPackage: 1 (2.27%)
-  Model: 1 (2.27%)
+  MMethodDef: 18 (33.96%)
+  MMethod: 17 (32.07%)
+  MClassDef: 7 (13.20%)
+  MClass: 7 (13.20%)
+  MModule: 1 (1.88%)
+  MGroup: 1 (1.88%)
+  MPackage: 1 (1.88%)
+  Model: 1 (1.88%)
 
 All documented public entities:
  list:
index aa04d7f..0a5697f 100644 (file)
@@ -3,5 +3,5 @@ I have 1 packages
 I have 2 modules
 I have 7 classes
 For 7 definitions of classes
-I have 15 methods
-For 17 definitions of methods
+I have 20 methods
+For 21 definitions of methods