Merge remote-tracking branch 'origin/master' into init_auto
authorJean Privat <jean@pryen.org>
Sat, 23 Apr 2016 01:48:13 +0000 (21:48 -0400)
committerJean Privat <jean@pryen.org>
Sat, 23 Apr 2016 01:48:13 +0000 (21:48 -0400)
46 files changed:
lib/nitcorn/http_request.nit
src/compiler/abstract_compiler.nit
src/compiler/java_compiler.nit
src/doc/console_templates/console_model.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
src/web/model_html.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_class_glob.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/nitdoc_args1.res
tests/sav/nitdoc_args2.res
tests/sav/nitdoc_args3.res
tests/sav/nitdoc_args4.res
tests/sav/nitlight_args1.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 9e94493..0d12c04 100644 (file)
@@ -24,7 +24,7 @@ import core
 
 # A request received over HTTP, is build by `HttpRequestParser`
 class HttpRequest
-       private init do end
+       private init is old_style_init do end
 
        # HTTP protocol version
        var http_version: String
index 31dfcc4..7d2f983 100644 (file)
@@ -1180,29 +1180,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
 
@@ -1225,7 +1202,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)
 
@@ -3228,6 +3205,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 ec759a2..66115be 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 96b1a40..7e9487f 100644 (file)
@@ -484,16 +484,10 @@ redef class MMethodDef
        end
 
        redef fun cs_short_signature do
-               if mproperty.is_root_init then
-                       return new_msignature.cs_short_signature
-               end
                return msignature.cs_short_signature
        end
 
        redef fun cs_signature do
-               if mproperty.is_root_init then
-                       return new_msignature.cs_signature
-               end
                return msignature.cs_signature
        end
 
index 0028df4..7389e2e 100644 (file)
@@ -450,7 +450,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)
 
@@ -582,28 +582,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
 
@@ -1573,6 +1551,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 3115286..8207bf0 100644 (file)
@@ -706,6 +706,9 @@ class MClassDef
 
        # All property definitions in the class (introductions and redefinitions)
        var mpropdefs = new Array[MPropDef]
+
+       # The special autoinit constructor
+       var auto_init: nullable MMethodDef = null is writable
 end
 
 # A global static type
@@ -2354,19 +2357,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 df8f8bd..8c167c6 100644 (file)
@@ -55,10 +55,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
 
@@ -151,11 +150,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?
@@ -166,12 +163,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
@@ -228,10 +229,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
@@ -285,13 +288,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
@@ -324,41 +345,27 @@ 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", 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.root_init = mpropdef
+                       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`.
@@ -492,11 +499,15 @@ 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
+
+       # The base init of the class.
+       #
+       # 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
@@ -780,6 +791,9 @@ redef class AMethPropdef
                        else 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
@@ -812,7 +826,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
@@ -859,6 +873,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)
 
@@ -883,7 +905,6 @@ redef class AMethPropdef
                        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
index 823f624..4543308 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 42a757b..5da1494 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
@@ -259,9 +258,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 69329f9..5f4c2dc 100644 (file)
@@ -318,8 +318,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
@@ -378,7 +382,7 @@ private class TypeVisitor
                end
 
 
-               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)
 
@@ -1636,7 +1640,7 @@ redef class ARangeExpr
                # get the constructor
                var callsite
                if self isa ACrangeExpr then
-                       callsite = v.get_method(self, mtype, "init", false)
+                       callsite = v.get_method(self, mtype, "autoinit", false)
                else if self isa AOrangeExpr then
                        callsite = v.get_method(self, mtype, "without_last", false)
                else
@@ -1967,7 +1971,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
@@ -2067,7 +2071,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 2b49b9e..2d47728 100644 (file)
@@ -500,18 +500,10 @@ redef class MMethodDef
        end
 
        redef fun html_short_signature do
-               var new_msignature = self.new_msignature
-               if mproperty.is_root_init and new_msignature != null then
-                       return new_msignature.html_short_signature
-               end
                return msignature.as(not null).html_short_signature
        end
 
        redef fun html_signature do
-               var new_msignature = self.new_msignature
-               if mproperty.is_root_init and new_msignature != null then
-                       return new_msignature.html_signature
-               end
                return msignature.as(not null).html_signature
        end
 end
index b865616..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: nullable Int, 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: nullable Int, 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: nullable Int, 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: nullable Int, 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: Int, 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: Int, 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: Int, 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 90f67d3..d856b64 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 e73cdca..028bbf0 100644 (file)
@@ -1 +1 @@
-alt/base_init_basic_alt5.nit:79,9--11: Error: expected 2 argument(s) for `init(c: Int, 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 23bd9f9..65cf7fb 100644 (file)
@@ -1 +1 @@
-alt/base_init_combine_alt1.nit:59,9--11: Error: expected 2 argument(s) for `init(i: Int, 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 f52de9b..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 3c79f1c..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 2f12bb8..656253d 100644 (file)
@@ -1,13 +1,2 @@
-../lib/core/kernel.nit:32,1--225,3: Error: `kernel#Object` does not specialize `module_0#Object`. Possible duplication of the root class `Object`?
-../lib/core/kernel.nit:227,1--300,3: Error: `kernel#Sys` does not specialize `module_0#Object`. Possible duplication of the root class `Object`?
-../lib/core/kernel.nit:313,1--371,3: Error: `kernel#Comparable` does not specialize `module_0#Object`. Possible duplication of the root class `Object`?
-../lib/core/kernel.nit:373,1--410,3: Error: `kernel#Discrete` does not specialize `module_0#Object`. Possible duplication of the root class `Object`?
-../lib/core/kernel.nit:412,1--429,3: Error: `kernel#Cloneable` does not specialize `module_0#Object`. Possible duplication of the root class `Object`?
-../lib/core/kernel.nit:431,1--486,3: Error: `kernel#Numeric` does not specialize `module_0#Object`. Possible duplication of the root class `Object`?
-../lib/core/kernel.nit:492,1--515,3: Error: `kernel#Bool` does not specialize `module_0#Object`. Possible duplication of the root class `Object`?
-../lib/core/kernel.nit:517,1--599,3: Error: `kernel#Float` does not specialize `module_0#Object`. Possible duplication of the root class `Object`?
-../lib/core/kernel.nit:601,1--702,3: Error: `kernel#Byte` does not specialize `module_0#Object`. Possible duplication of the root class `Object`?
-../lib/core/kernel.nit:704,1--882,3: Error: `kernel#Int` does not specialize `module_0#Object`. Possible duplication of the root class `Object`?
-../lib/core/kernel.nit:884,1--1052,3: Error: `kernel#Char` does not specialize `module_0#Object`. Possible duplication of the root class `Object`?
-../lib/core/kernel.nit:1054,1--1061,3: Error: `kernel#Pointer` does not specialize `module_0#Object`. Possible duplication of the root class `Object`?
-../lib/core/kernel.nit:1063,1--1072,3: Error: `kernel#Task` does not specialize `module_0#Object`. Possible duplication of the root class `Object`?
+../lib/core/collection/hash_collection.nit:275,3--6: Error: method or variable `init` unknown in `HashMap[K, V]`.
+../lib/core/collection/hash_collection.nit:473,3--6: Error: method or variable `init` unknown in `HashSet[E]`.
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 af18d0c..b7ab4a1 100644 (file)
@@ -1,4 +1,4 @@
-alt/error_init_auto_alt2.nit:34,5--7: Error: expected 2 argument(s) for `init(x: Int, 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: Int, 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: Int, 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: Int, 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: Int, 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: Int, 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 5fea655..8c5b14e 100644 (file)
@@ -21,16 +21,21 @@ js/
 less/
 module_module_95d0-.html
 module_module_95d1-.html
+property_module_95d0-__Int__autoinit.html
+property_module_95d0-__Object__autoinit.html
 property_module_95d0-__Object__init.html
 property_module_95d0-__Object__output.html
 property_module_95d0-__Object__print.html
+property_module_95d0-__Sys__autoinit.html
 property_module_95d0-__Sys__main.html
 property_module_95d1-__A__a1.html
 property_module_95d1-__A__a12.html
 property_module_95d1-__A__a123.html
 property_module_95d1-__A__a13.html
+property_module_95d1-__A__autoinit.html
 property_module_95d1-__B__all2.html
 property_module_95d1-__B__all25.html
+property_module_95d1-__B__autoinit.html
 quicksearch-list.js
 resources/
 search.html
index fd347db..550631c 100644 (file)
@@ -23,19 +23,24 @@ less/
 module_base_attr_nullable-.html
 property_base_attr_nullable-__Bar__a3.html
 property_base_attr_nullable-__Bar__a3_61d.html
+property_base_attr_nullable-__Bar__autoinit.html
+property_base_attr_nullable-__Bool__autoinit.html
 property_base_attr_nullable-__Foo__a1.html
 property_base_attr_nullable-__Foo__a1_61d.html
 property_base_attr_nullable-__Foo__a2.html
 property_base_attr_nullable-__Foo__a2_61d.html
+property_base_attr_nullable-__Foo__autoinit.html
 property_base_attr_nullable-__Foo__nop.html
 property_base_attr_nullable-__Foo__run.html
 property_base_attr_nullable-__Foo__run_other.html
 property_base_attr_nullable-__Int___43d.html
+property_base_attr_nullable-__Int__autoinit.html
 property_base_attr_nullable-__Int__output.html
-property_base_attr_nullable-__Integer__init.html
+property_base_attr_nullable-__Integer__autoinit.html
 property_base_attr_nullable-__Integer__output.html
 property_base_attr_nullable-__Integer__val.html
 property_base_attr_nullable-__Integer__val_61d.html
+property_base_attr_nullable-__Object__autoinit.html
 property_base_attr_nullable-__Object__init.html
 property_base_attr_nullable-__Sys__main.html
 quicksearch-list.js
index fd347db..550631c 100644 (file)
@@ -23,19 +23,24 @@ less/
 module_base_attr_nullable-.html
 property_base_attr_nullable-__Bar__a3.html
 property_base_attr_nullable-__Bar__a3_61d.html
+property_base_attr_nullable-__Bar__autoinit.html
+property_base_attr_nullable-__Bool__autoinit.html
 property_base_attr_nullable-__Foo__a1.html
 property_base_attr_nullable-__Foo__a1_61d.html
 property_base_attr_nullable-__Foo__a2.html
 property_base_attr_nullable-__Foo__a2_61d.html
+property_base_attr_nullable-__Foo__autoinit.html
 property_base_attr_nullable-__Foo__nop.html
 property_base_attr_nullable-__Foo__run.html
 property_base_attr_nullable-__Foo__run_other.html
 property_base_attr_nullable-__Int___43d.html
+property_base_attr_nullable-__Int__autoinit.html
 property_base_attr_nullable-__Int__output.html
-property_base_attr_nullable-__Integer__init.html
+property_base_attr_nullable-__Integer__autoinit.html
 property_base_attr_nullable-__Integer__output.html
 property_base_attr_nullable-__Integer__val.html
 property_base_attr_nullable-__Integer__val_61d.html
+property_base_attr_nullable-__Object__autoinit.html
 property_base_attr_nullable-__Object__init.html
 property_base_attr_nullable-__Sys__main.html
 quicksearch-list.js
index 01782ba..c1ed475 100644 (file)
@@ -67,13 +67,17 @@ MClassPage Starter
                                #### test_prog-__Starter.children
                                #### test_prog-__Starter.descendants
                ## test_prog-__Starter.constructors
-                       ### test_prog__platform-__Object__init.definition
+                       ### test_prog-__Starter__autoinit.definition
                ## test_prog-__Starter.concerns
                ## test_prog.concern
                ## test_prog.concern
                ## test_prog-.concern
                        ### test_prog-__Starter__start.definition
 
+MPropertyPage autoinit
+       # autoinit.section
+               ## test_prog-__Starter__autoinit.intro
+
 MPropertyPage start
        # start.section
                ## test_prog-__Starter__start.intro
@@ -144,7 +148,7 @@ MClassPage Game
                                #### test_prog__game-__Game.children
                                #### test_prog__game-__Game.descendants
                ## test_prog__game-__Game.constructors
-                       ### test_prog__platform-__Object__init.definition
+                       ### test_prog__game-__Game__autoinit.definition
                ## test_prog__game-__Game.concerns
                ## test_prog.concern
                ## test_prog.concern
@@ -156,6 +160,10 @@ MClassPage Game
                        ### test_prog__game-__Game__start_game.definition
                        ### test_prog__game-__Game__stop_game.definition
 
+MPropertyPage autoinit
+       # autoinit.section
+               ## test_prog__game-__Game__autoinit.intro
+
 MPropertyPage computer_characters
        # computer_characters.section
                ## test_prog__game-__Game__computer_characters.intro
@@ -250,6 +258,17 @@ MClassPage Bool
                                #### test_prog__platform-__Bool.ancestors
                                #### test_prog__platform-__Bool.children
                                #### test_prog__platform-__Bool.descendants
+               ## test_prog__platform-__Bool.constructors
+                       ### test_prog__platform-__Bool__autoinit.definition
+               ## test_prog__platform-__Bool.concerns
+               ## test_prog.concern
+               ## test_prog.concern
+               ## test_prog__platform.concern
+               ## test_prog__platform-.concern
+
+MPropertyPage autoinit
+       # autoinit.section
+               ## test_prog__platform-__Bool__autoinit.intro
 
 MClassPage Float
        # Float.section
@@ -262,7 +281,7 @@ MClassPage Float
                                #### test_prog__platform-__Float.children
                                #### test_prog__platform-__Float.descendants
                ## test_prog__platform-__Float.constructors
-                       ### test_prog__platform-__Object__init.definition
+                       ### test_prog__platform-__Float__autoinit.definition
                ## test_prog__platform-__Float.concerns
                ## test_prog.concern
                ## test_prog.concern
@@ -294,6 +313,10 @@ MPropertyPage &gt;
        # &gt;.section
                ## test_prog__platform-__Float___62d.intro
 
+MPropertyPage autoinit
+       # autoinit.section
+               ## test_prog__platform-__Float__autoinit.intro
+
 MClassPage Int
        # Int.section
                ## test_prog__platform-__Int.intro
@@ -305,7 +328,7 @@ MClassPage Int
                                #### test_prog__platform-__Int.children
                                #### test_prog__platform-__Int.descendants
                ## test_prog__platform-__Int.constructors
-                       ### test_prog__platform-__Object__init.definition
+                       ### test_prog__platform-__Int__autoinit.definition
                ## test_prog__platform-__Int.concerns
                ## test_prog.concern
                ## test_prog.concern
@@ -339,6 +362,10 @@ MPropertyPage &gt;
        # &gt;.section
                ## test_prog__platform-__Int___62d.intro
 
+MPropertyPage autoinit
+       # autoinit.section
+               ## test_prog__platform-__Int__autoinit.intro
+
 MPropertyPage to_f
        # to_f.section
                ## test_prog__platform-__Int__to_f.intro
@@ -357,6 +384,17 @@ MClassPage List
                                #### test_prog__platform-__List.ancestors
                                #### test_prog__platform-__List.children
                                #### test_prog__platform-__List.descendants
+               ## test_prog__platform-__List.constructors
+                       ### test_prog__platform-__List__autoinit.definition
+               ## test_prog__platform-__List.concerns
+               ## test_prog.concern
+               ## test_prog.concern
+               ## test_prog__platform.concern
+               ## test_prog__platform-.concern
+
+MPropertyPage autoinit
+       # autoinit.section
+               ## test_prog__platform-__List__autoinit.intro
 
 MClassPage Object
        # Object.section
@@ -369,6 +407,7 @@ MClassPage Object
                                #### test_prog__platform-__Object.children
                                #### test_prog__platform-__Object.descendants
                ## test_prog__platform-__Object.constructors
+                       ### test_prog__platform-__Object__autoinit.definition
                        ### test_prog__platform-__Object__init.definition
                ## test_prog__platform-__Object.concerns
                ## test_prog.concern
@@ -391,6 +430,10 @@ MPropertyPage ==
        # ==.section
                ## test_prog__platform-__Object___61d_61d.intro
 
+MPropertyPage autoinit
+       # autoinit.section
+               ## test_prog__platform-__Object__autoinit.intro
+
 MPropertyPage init
        # init.section
                ## test_prog__platform-__Object__init.intro
@@ -408,8 +451,6 @@ MPropertyPage init
                        ### test_prog__rpg__races__Human__init.definition
                        ### test_prog__rpg__races__Dwarf__init.definition
                        ### test_prog__rpg__races__Elf__init.definition
-               ## test_prog__rpg__character.concern
-                       ### test_prog__rpg__character__Character__init.definition
 
 MClassPage String
        # String.section
@@ -421,6 +462,17 @@ MClassPage String
                                #### test_prog__platform-__String.ancestors
                                #### test_prog__platform-__String.children
                                #### test_prog__platform-__String.descendants
+               ## test_prog__platform-__String.constructors
+                       ### test_prog__platform-__String__autoinit.definition
+               ## test_prog__platform-__String.concerns
+               ## test_prog.concern
+               ## test_prog.concern
+               ## test_prog__platform.concern
+               ## test_prog__platform-.concern
+
+MPropertyPage autoinit
+       # autoinit.section
+               ## test_prog__platform-__String__autoinit.intro
 
 MGroupPage rpg
        # rpg.section
@@ -509,6 +561,7 @@ MClassPage Alcoholic
                                #### test_prog__rpg__careers__Alcoholic.children
                                #### test_prog__rpg__careers__Alcoholic.descendants
                ## test_prog__rpg__careers__Alcoholic.constructors
+                       ### test_prog__rpg__careers__Alcoholic__autoinit.definition
                        ### test_prog__rpg__careers__Alcoholic__init.definition
                                #### test_prog__rpg__careers__Alcoholic__init.lin
                ## test_prog__rpg__careers__Alcoholic.concerns
@@ -517,6 +570,10 @@ MClassPage Alcoholic
                ## test_prog__rpg.concern
                ## test_prog__rpg__careers.concern
 
+MPropertyPage autoinit
+       # autoinit.section
+               ## test_prog__rpg__careers__Alcoholic__autoinit.intro
+
 MClassPage Career
        # Career.section
                ## test_prog__rpg__careers__Career.intro
@@ -528,6 +585,7 @@ MClassPage Career
                                #### test_prog__rpg__careers__Career.children
                                #### test_prog__rpg__careers__Career.descendants
                ## test_prog__rpg__careers__Career.constructors
+                       ### test_prog__rpg__careers__Career__autoinit.definition
                        ### test_prog__rpg__careers__Career__init.definition
                                #### test_prog__rpg__careers__Career__init.lin
                ## test_prog__rpg__careers__Career.concerns
@@ -542,6 +600,10 @@ MClassPage Career
                        ### test_prog__rpg__careers__Career__strength_bonus.definition
                        ### test_prog__rpg__careers__Career__strength_bonus_61d.definition
 
+MPropertyPage autoinit
+       # autoinit.section
+               ## test_prog__rpg__careers__Career__autoinit.intro
+
 MPropertyPage endurance_bonus
        # endurance_bonus.section
                ## test_prog__rpg__careers__Career__endurance_bonus.intro
@@ -577,6 +639,7 @@ MClassPage Magician
                                #### test_prog__rpg__careers__Magician.children
                                #### test_prog__rpg__careers__Magician.descendants
                ## test_prog__rpg__careers__Magician.constructors
+                       ### test_prog__rpg__careers__Magician__autoinit.definition
                        ### test_prog__rpg__careers__Magician__init.definition
                                #### test_prog__rpg__careers__Magician__init.lin
                ## test_prog__rpg__careers__Magician.concerns
@@ -585,6 +648,10 @@ MClassPage Magician
                ## test_prog__rpg.concern
                ## test_prog__rpg__careers.concern
 
+MPropertyPage autoinit
+       # autoinit.section
+               ## test_prog__rpg__careers__Magician__autoinit.intro
+
 MClassPage Warrior
        # Warrior.section
                ## test_prog__rpg__careers__Warrior.intro
@@ -596,6 +663,7 @@ MClassPage Warrior
                                #### test_prog__rpg__careers__Warrior.children
                                #### test_prog__rpg__careers__Warrior.descendants
                ## test_prog__rpg__careers__Warrior.constructors
+                       ### test_prog__rpg__careers__Warrior__autoinit.definition
                        ### test_prog__rpg__careers__Warrior__init.definition
                                #### test_prog__rpg__careers__Warrior__init.lin
                ## test_prog__rpg__careers__Warrior.concerns
@@ -604,6 +672,10 @@ MClassPage Warrior
                ## test_prog__rpg.concern
                ## test_prog__rpg__careers.concern
 
+MPropertyPage autoinit
+       # autoinit.section
+               ## test_prog__rpg__careers__Warrior__autoinit.intro
+
 MModulePage character
        # character.section
                ## test_prog__rpg__character.intro
@@ -635,8 +707,7 @@ MClassPage Character
                                #### test_prog__rpg__character__Character.children
                                #### test_prog__rpg__character__Character.descendants
                ## test_prog__rpg__character__Character.constructors
-                       ### test_prog__rpg__character__Character__init.definition
-                               #### test_prog__rpg__character__Character__init.lin
+                       ### test_prog__rpg__character__Character__autoinit.definition
                ## test_prog__rpg__character__Character.concerns
                ## test_prog.concern
                ## test_prog.concern
@@ -671,6 +742,10 @@ MPropertyPage age=
        # age=.section
                ## test_prog__rpg__character__Character__age_61d.intro
 
+MPropertyPage autoinit
+       # autoinit.section
+               ## test_prog__rpg__character__Character__autoinit.intro
+
 MPropertyPage career
        # career.section
                ## test_prog__rpg__character__Character__career.intro
@@ -784,7 +859,7 @@ MClassPage Combatable
                                #### test_prog__rpg__combat__Combatable.children
                                #### test_prog__rpg__combat__Combatable.descendants
                ## test_prog__rpg__combat__Combatable.constructors
-                       ### test_prog__platform-__Object__init.definition
+                       ### test_prog__rpg__combat__Combatable__autoinit.definition
                ## test_prog__rpg__combat__Combatable.concerns
                ## test_prog.concern
                ## test_prog.concern
@@ -800,6 +875,10 @@ MPropertyPage attack
        # attack.section
                ## test_prog__rpg__combat__Combatable__attack.intro
 
+MPropertyPage autoinit
+       # autoinit.section
+               ## test_prog__rpg__combat__Combatable__autoinit.intro
+
 MPropertyPage defend
        # defend.section
                ## test_prog__rpg__combat__Combatable__defend.intro
@@ -833,7 +912,7 @@ MClassPage Weapon
                                #### test_prog__rpg__combat__Weapon.children
                                #### test_prog__rpg__combat__Weapon.descendants
                ## test_prog__rpg__combat__Weapon.constructors
-                       ### test_prog__platform-__Object__init.definition
+                       ### test_prog__rpg__combat__Weapon__autoinit.definition
                ## test_prog__rpg__combat__Weapon.concerns
                ## test_prog.concern
                ## test_prog.concern
@@ -841,6 +920,10 @@ MClassPage Weapon
                ## test_prog__rpg__combat.concern
                        ### test_prog__rpg__combat__Weapon__dps.definition
 
+MPropertyPage autoinit
+       # autoinit.section
+               ## test_prog__rpg__combat__Weapon__autoinit.intro
+
 MPropertyPage dps
        # dps.section
                ## test_prog__rpg__combat__Weapon__dps.intro
@@ -900,6 +983,7 @@ MClassPage Dwarf
                                #### test_prog__rpg__races__Dwarf.children
                                #### test_prog__rpg__races__Dwarf.descendants
                ## test_prog__rpg__races__Dwarf.constructors
+                       ### test_prog__rpg__races__Dwarf__autoinit.definition
                        ### test_prog__rpg__races__Dwarf__init.definition
                                #### test_prog__rpg__races__Dwarf__init.lin
                ## test_prog__rpg__races__Dwarf.concerns
@@ -911,6 +995,10 @@ MClassPage Dwarf
                        ### test_prog__rpg__combat__Dwarf__dps.definition
                                #### test_prog__rpg__combat__Dwarf__dps.lin
 
+MPropertyPage autoinit
+       # autoinit.section
+               ## test_prog__rpg__races__Dwarf__autoinit.intro
+
 MClassPage Elf
        # Elf.section
                ## test_prog__rpg__races__Elf.intro
@@ -922,6 +1010,7 @@ MClassPage Elf
                                #### test_prog__rpg__races__Elf.children
                                #### test_prog__rpg__races__Elf.descendants
                ## test_prog__rpg__races__Elf.constructors
+                       ### test_prog__rpg__races__Elf__autoinit.definition
                        ### test_prog__rpg__races__Elf__init.definition
                                #### test_prog__rpg__races__Elf__init.lin
                ## test_prog__rpg__races__Elf.concerns
@@ -930,6 +1019,10 @@ MClassPage Elf
                ## test_prog__rpg.concern
                ## test_prog__rpg__races.concern
 
+MPropertyPage autoinit
+       # autoinit.section
+               ## test_prog__rpg__races__Elf__autoinit.intro
+
 MClassPage Human
        # Human.section
                ## test_prog__rpg__races__Human.intro
@@ -941,6 +1034,7 @@ MClassPage Human
                                #### test_prog__rpg__races__Human.children
                                #### test_prog__rpg__races__Human.descendants
                ## test_prog__rpg__races__Human.constructors
+                       ### test_prog__rpg__races__Human__autoinit.definition
                        ### test_prog__rpg__races__Human__init.definition
                                #### test_prog__rpg__races__Human__init.lin
                ## test_prog__rpg__races__Human.concerns
@@ -949,6 +1043,10 @@ MClassPage Human
                ## test_prog__rpg.concern
                ## test_prog__rpg__races.concern
 
+MPropertyPage autoinit
+       # autoinit.section
+               ## test_prog__rpg__races__Human__autoinit.intro
+
 MClassPage Race
        # Race.section
                ## test_prog__rpg__races__Race.intro
@@ -960,6 +1058,7 @@ MClassPage Race
                                #### test_prog__rpg__races__Race.children
                                #### test_prog__rpg__races__Race.descendants
                ## test_prog__rpg__races__Race.constructors
+                       ### test_prog__rpg__races__Race__autoinit.definition
                        ### test_prog__rpg__races__Race__init.definition
                                #### test_prog__rpg__races__Race__init.lin
                ## test_prog__rpg__races__Race.concerns
@@ -974,6 +1073,10 @@ MClassPage Race
                        ### test_prog__rpg__races__Race__base_strength.definition
                        ### test_prog__rpg__races__Race__base_strength_61d.definition
 
+MPropertyPage autoinit
+       # autoinit.section
+               ## test_prog__rpg__races__Race__autoinit.intro
+
 MPropertyPage base_endurance
        # base_endurance.section
                ## test_prog__rpg__races__Race__base_endurance.intro
@@ -1007,24 +1110,24 @@ MModulePage rpg
                                #### test_prog__rpg__rpg.imports
                                #### test_prog__rpg__rpg.clients
 
-Generated 96 pages
+Generated 115 pages
  list:
-  MPropertyPage: 58 (60.41%)
-  MClassPage: 20 (20.83%)
-  MModulePage: 8 (8.33%)
-  MGroupPage: 4 (4.16%)
-  ReadmePage: 4 (4.16%)
-  SearchPage: 1 (1.04%)
-  OverviewPage: 1 (1.04%)
-Found 182 mentities
+  MPropertyPage: 77 (66.95%)
+  MClassPage: 20 (17.39%)
+  MModulePage: 8 (6.95%)
+  MGroupPage: 4 (3.47%)
+  ReadmePage: 4 (3.47%)
+  SearchPage: 1 (0.86%)
+  OverviewPage: 1 (0.86%)
+Found 219 mentities
  list:
-  MMethodDef: 68 (37.36%)
-  MMethod: 57 (31.31%)
-  MClassDef: 22 (12.08%)
-  MClass: 20 (10.98%)
-  MModule: 8 (4.39%)
-  MGroup: 4 (2.19%)
-  MVirtualTypeDef: 1 (0.54%)
-  MVirtualTypeProp: 1 (0.54%)
-  MPackage: 1 (0.54%)
+  MMethodDef: 86 (39.26%)
+  MMethod: 76 (34.70%)
+  MClassDef: 22 (10.04%)
+  MClass: 20 (9.13%)
+  MModule: 8 (3.65%)
+  MGroup: 4 (1.82%)
+  MVirtualTypeDef: 1 (0.45%)
+  MVirtualTypeProp: 1 (0.45%)
+  MPackage: 1 (0.45%)
 quicksearch-list.js
index 57a7829..4a24924 100644 (file)
@@ -33,7 +33,7 @@
 </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">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_def nc_i">val</span><span>:</span> <span class="nc_t">Int</span>
-</span></span><span class="nc_pdef foldable" id="base_simple3#B#init"><span class="line" id="L36">     <span class="nc_k">init</span><span>(</span><span class="nc_v nc_i">v</span><span>:</span> <span class="nc_t">Int</span><span>)</span>
+</span></span><span class="nc_pdef foldable" id="base_simple3#B#autoinit"><span class="line" id="L36"> <span class="nc_k">init</span><span>(</span><span class="nc_v nc_i">v</span><span>:</span> <span class="nc_t">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">7</span><span>.</span><span class="nc_i">output</span>
 </span><span class="line" id="L39">            <span class="nc_k">self</span><span>.</span><span class="nc_i">val</span> <span>=</span> <span class="nc_v nc_i">v</span>
index 12430c7..f6ad37b 100644 (file)
@@ -344,23 +344,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
 
@@ -399,11 +399,11 @@ generating module_hierarchy.dot
          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)
@@ -411,23 +411,23 @@ generating module_hierarchy.dot
          std: 0.845
          sum: 3
        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
@@ -461,11 +461,11 @@ generating module_hierarchy.dot
          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)
@@ -473,23 +473,23 @@ generating module_hierarchy.dot
          std: 0.845
          sum: 3
        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
 
 # Inheritance metrics
 
@@ -695,13 +695,12 @@ Statistics of type usage:
   A: 1 (11.11%)
 
 # 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 -
@@ -805,17 +804,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)
@@ -875,11 +874,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
@@ -896,11 +895,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 9f86235..338a3d9 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}"
+ 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+ ascii(): Char\l}"
+ label = "{Byte||+ %(i: Byte): Byte\l+ \<\<(i: Int): Byte\l+ \>\>(i: Int): Byte\l+ ascii(): Char\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}"
+ 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||+ 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}"
+ 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||+ 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|- _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 181046e..de63dda 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}"
+ 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+ ascii(): Char\l}"
+ label = "{Byte||+ %(i: Byte): Byte\l+ \<\<(i: Int): Byte\l+ \>\>(i: Int): Byte\l+ ascii(): Char\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}"
+ 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||+ 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}"
+ 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||+ 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 0bd1e66..6919258 100644 (file)
@@ -52,8 +52,8 @@
 <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_def nc_i">val</span><span>:</span> <span class="nc_t">Int</span></span></span></span></code></pre>
 <h1>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_def nc_i">val</span><span>:</span> <span class="nc_t">Int</span></span></span></span></code></pre>
-<h1>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">init</span><span>(</span><span class="nc_v nc_i">v</span><span>:</span> <span class="nc_t">Int</span><span>)</span>
+<h1>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">init</span><span>(</span><span class="nc_v nc_i">v</span><span>:</span> <span class="nc_t">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">7</span><span>.</span><span class="nc_i">output</span>
 </span><span class="line" id="L39">            <span class="nc_k">self</span><span>.</span><span class="nc_i">val</span> <span>=</span> <span class="nc_v nc_i">v</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">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_def nc_i">val</span><span>:</span> <span class="nc_t">Int</span>
-</span></span><span class="nc_pdef foldable" id="base_simple3#B#init"><span class="line" id="L36">     <span class="nc_k">init</span><span>(</span><span class="nc_v nc_i">v</span><span>:</span> <span class="nc_t">Int</span><span>)</span>
+</span></span><span class="nc_pdef foldable" id="base_simple3#B#autoinit"><span class="line" id="L36"> <span class="nc_k">init</span><span>(</span><span class="nc_v nc_i">v</span><span>:</span> <span class="nc_t">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">7</span><span>.</span><span class="nc_i">output</span>
 </span><span class="line" id="L39">            <span class="nc_k">self</span><span>.</span><span class="nc_i">val</span> <span>=</span> <span class="nc_v nc_i">v</span>
index b058aab..78cc43f 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 03cf44d..18ca63d 100644 (file)
@@ -3,5 +3,5 @@ I have 1 packages
 I have 1 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