Merge: Better Entity::full_name
authorJean Privat <jean@pryen.org>
Thu, 28 Apr 2016 23:04:51 +0000 (19:04 -0400)
committerJean Privat <jean@pryen.org>
Thu, 28 Apr 2016 23:04:51 +0000 (19:04 -0400)
This PR is a continuation of previous work on packages, model entities and namespaces. See #1069, #1092 or #1032 for the history.

The point of `full_name` is to offer the simpler canonical names possible that is:

* global. i.e. based on the package name.
* stable on modifications. i.e. the name of an entity does not change if other entities are added.
* human readable. i.e. some encoding but not binary.
* scalable. i.e. simple entities have simple names, complex entities have more complex names.

This PR add the following:

* no name collision on distinct kind of entities (packages, root groups, and default modules conflict no more).
* do not use characters that have a special semantic in URL (no more `#` and `/`).
* some bugfixes and simplifications.
* a complex test case with a lot of rare entity constructions (so complex names).
* a extended `test_model_visitor` that check and count names.

## Proposed full_name policy

### Common public entities

They are those you might look for in a doc.
They can appear in error messages.
In case of name conflict in programs, you might also use them to disambiguate things (in the future)

* packages have a simple name.
  e.g. `core` or `nitcorn` (unchanged)
* groups, are separated by `>` (instead of `/`) and terminated by a trailing `>` (to distinguish them)
  e.g. `core>` or `core>collection>`
* modules are just prefixed by their package, even the default module
  e.g. `core::kernel` or `core::core`
* public classes are prefixed by their packages
  e.g. `core::Object` or `core::Buffer` (unchanged)
* public global properties without refinement, are prefixed by their package and class
  e.g. `core::Object::==` or `core::Buffer::add` (unchanged)

Because of modules and class refinement, things unusual in other languages must have a full_name:

Public global properties introduced by a refinement, require the module (between the package and the class)
e.g. `core::file::Sys::print`
Currently, the compiler allows that a same package refines a public class in two distinct modules, with two homonym properties.
I'm not sure this is a good idea, but the rare uses force us to accept them.
The most infamous are `nitc::nitc::ToolContext::opt_dir` and `nitc::nitdoc::ToolContext::opt_dir`.

Private classes and properties are only visible by their module, thus the module name is required in their full_name.
e.g. `core::hash_collection::HashNode` or `core::hash_collection::HashNode::key` (unchanged)

### Definitions

As you know, class definitions (introductions and refinements) and property definitions are distinguished from their global counterpart.
Most of the time, we try to avoid referring specifically to them when the global thing is sufficient.

Class definitions combine the information of a class and a module.
Property definitions combine the information of a class definition and a property.
Therefore, the quantity of information for the worst case of property definition can be quite large.

A `$` is used to separate the information (it was `#` previously).
A single `$` means a class definition and two `$` means a property definition.

Introductions (without refinement nor redefinition) are designated like global properties (`::` are just replaced by `$`).

* `core$Object` is the definition that introduces of `core::Object`
* `core$Buffer$add` is the definition that introduces `core::Buffer::add`
* `core::hash_collection$HashNode$key` is the definition that introduces `core::hash_collection::HashNode::key`.

For refinements of classes, the class part is prefixed by package and module information when they are needed.
As requested, the full_name of the refinement of a public class in the same package is more simple than the refinement of a private class in a different package.

* `core::file$Sys` is the refinement of Sys in `core::file`. `Sys` is unambiguously `core::Sys`
* `counter::counter$core::Collection` is the refinement of `core::Collection` in the module `counter::counter`
* `hash_debug::hash_debug$core::hash_collection::HashCollection` is the refinement of `HashCollection` (it's a private class) in `hash_debug`
* `pthreads::extra$::pthreads::NativePthread` is the refinement of the private class `NativePthread` in an extra module in the same package (`$::` means that the package name is the same).

For redefinitions of properties, the full_name for the class definition is used (see above), then the property part contains whatever package, module or class information is required.

* `core$Array$SimpleCollection::add` the redefinition of `SimpleCollection::add` into `Array`
* `core$String$::abstract_text::Text::substrings` the redefinition of the private method `Text::substrings` in `String`

For simple method refinements (refinement of the introduction), most of the information is already given by the module or the class, the property part is thus simple.

* `hash_debug::hash_debug$core::hash_collection::HashCollection$store` is the refinement of the private method `HashCollection::store` in the useful package `has_debug`.

Complex method redefinition of private things provide the worst full_name (3 package names, 3 module names, 2 class names and a property name).

* `ropes_debug::ropes_debug$core::ropes::Concat$::ropes_debug::Text::internal_to_dot` is the redefinition of `ropes_debug::ropes_debug::Text::internal_to_dot` in the class `core::ropes::Concat` by the module `ropes_debug::ropes_debug`.

Pull-Request: #2041
Reviewed-by: Alexis Laferrière <alexis.laf@xymus.net>

39 files changed:
lib/android/ui/native_ui.nit
src/model/mmodule.nit
src/model/model.nit
src/model/mpackage.nit
src/nitls.nit
src/test_model_visitor.nit
tests/names/README.md [new file with mode: 0644]
tests/names/n0.nit [new file with mode: 0644]
tests/names/n1.nit [new file with mode: 0644]
tests/names/n2.nit [new file with mode: 0644]
tests/names/n3.nit [new file with mode: 0644]
tests/names/package.ini [new file with mode: 0644]
tests/sav/base_init_basic_alt3.res
tests/sav/base_init_super_call2_alt3.res
tests/sav/base_init_super_call2_alt6.res
tests/sav/base_vararg_alt1.res
tests/sav/base_vararg_alt2.res
tests/sav/base_vararg_alt3.res
tests/sav/base_vararg_alt4.res
tests/sav/base_vararg_alt5.res
tests/sav/base_vararg_alt6.res
tests/sav/base_vararg_alt7.res
tests/sav/base_vararg_alt8.res
tests/sav/error_class_glob.res
tests/sav/error_prop_loc_alt1.res
tests/sav/error_unk_class2.res
tests/sav/nitlight_args1.res
tests/sav/nitls_args4.res
tests/sav/nitmetrics_args1.res
tests/sav/nitunit_args1.res
tests/sav/nitunit_args4.res
tests/sav/nitunit_args5.res
tests/sav/nitunit_args6.res
tests/sav/nitunit_args8.res
tests/sav/nitunit_args9.res
tests/sav/test_highlight_args1.res
tests/sav/test_model_visitor_args1.res
tests/sav/test_model_visitor_args2.res [new file with mode: 0644]
tests/test_model_visitor.args

index e4dd670..b1b45f2 100644 (file)
@@ -175,8 +175,6 @@ end
 extern class NativeEditText in "Java" `{ android.widget.EditText `}
        super NativeTextView
 
-       redef type SELF: NativeEditText
-
        new (context: NativeActivity) in "Java" `{ return new android.widget.EditText(context); `}
 
        fun width=(val: Int) in "Java" `{ self.setWidth((int)val); `}
@@ -193,8 +191,6 @@ end
 extern class NativeButton in "Java" `{ android.widget.Button `}
        super NativeTextView
 
-       redef type SELF: NativeButton
-
        redef fun new_global_ref import sys, Sys.jni_env `{
                Sys sys = NativeButton_sys(self);
                JNIEnv *env = Sys_jni_env(sys);
index 7710bb2..8927f8c 100644 (file)
@@ -109,11 +109,13 @@ class MModule
        # It is usually the `name` prefixed by the package's name.
        # Example: `"package::name"`
        #
-       # If both names are the same (of if the module is package-less), then
-       # the short-name is used alone.
+       # Default modules use a doubled name to distinguish them from the package name.
+       # E.g.: `"core::core"`
+       #
+       # If the module is package-less, then the short-name is used alone.
        redef var full_name is lazy do
                var mgroup = self.mgroup
-               if mgroup == null or mgroup.mpackage.name == self.name then
+               if mgroup == null then
                        return self.name
                else
                        return "{mgroup.mpackage.name}::{self.name}"
index 3115286..6c8798b 100644 (file)
@@ -592,7 +592,7 @@ class MClassDef
        var location: Location
 
        # Internal name combining the module and the class
-       # Example: "mymodule#MyClass"
+       # Example: "mymodule$MyClass"
        redef var to_s is noinit
 
        init
@@ -604,34 +604,34 @@ class MClassDef
                        assert not isset mclass._intro
                        mclass.intro = self
                end
-               self.to_s = "{mmodule}#{mclass}"
+               self.to_s = "{mmodule}${mclass}"
        end
 
        # Actually the name of the `mclass`
        redef fun name do return mclass.name
 
-       # The module and class name separated by a '#'.
+       # The module and class name separated by a '$'.
        #
        # The short-name of the class is used for introduction.
-       # Example: "my_module#MyClass"
+       # Example: "my_module$MyClass"
        #
        # The full-name of the class is used for refinement.
-       # Example: "my_module#intro_module::MyClass"
+       # Example: "my_module$intro_module::MyClass"
        redef var full_name is lazy do
                if is_intro then
-                       # public gives 'p#A'
-                       # private gives 'p::m#A'
-                       return "{mmodule.namespace_for(mclass.visibility)}#{mclass.name}"
+                       # public gives 'p$A'
+                       # private gives 'p::m$A'
+                       return "{mmodule.namespace_for(mclass.visibility)}${mclass.name}"
                else if mclass.intro_mmodule.mpackage != mmodule.mpackage then
-                       # public gives 'q::n#p::A'
-                       # private gives 'q::n#p::m::A'
-                       return "{mmodule.full_name}#{mclass.full_name}"
+                       # public gives 'q::n$p::A'
+                       # private gives 'q::n$p::m::A'
+                       return "{mmodule.full_name}${mclass.full_name}"
                else if mclass.visibility > private_visibility then
-                       # public gives 'p::n#A'
-                       return "{mmodule.full_name}#{mclass.name}"
+                       # public gives 'p::n$A'
+                       return "{mmodule.full_name}${mclass.name}"
                else
-                       # private gives 'p::n#::m::A' (redundant p is omitted)
-                       return "{mmodule.full_name}#::{mclass.intro_mmodule.name}::{mclass.name}"
+                       # private gives 'p::n$::m::A' (redundant p is omitted)
+                       return "{mmodule.full_name}$::{mclass.intro_mmodule.name}::{mclass.name}"
                end
        end
 
@@ -1953,10 +1953,21 @@ abstract class MProperty
 
        # The canonical name of the property.
        #
-       # It is the short-`name` prefixed by the short-name of the class and the full-name of the module.
+       # It is currently the short-`name` prefixed by the short-name of the class and the full-name of the module.
        # Example: "my_package::my_module::MyClass::my_method"
+       #
+       # The full-name of the module is needed because two distinct modules of the same package can
+       # still refine the same class and introduce homonym properties.
+       #
+       # For public properties not introduced by refinement, the module name is not used.
+       #
+       # Example: `my_package::MyClass::My_method`
        redef var full_name is lazy do
-               return "{intro_mclassdef.mmodule.namespace_for(visibility)}::{intro_mclassdef.mclass.name}::{name}"
+               if intro_mclassdef.is_intro then
+                       return "{intro_mclassdef.mmodule.namespace_for(visibility)}::{intro_mclassdef.mclass.name}::{name}"
+               else
+                       return "{intro_mclassdef.mmodule.full_name}::{intro_mclassdef.mclass.name}::{name}"
+               end
        end
 
        redef var c_name is lazy do
@@ -2241,7 +2252,7 @@ abstract class MPropDef
                        assert not isset mproperty._intro
                        mproperty.intro = self
                end
-               self.to_s = "{mclassdef}#{mproperty}"
+               self.to_s = "{mclassdef}${mproperty}"
        end
 
        # Actually the name of the `mproperty`
@@ -2255,17 +2266,17 @@ abstract class MPropDef
        #  * a property "p::m::A::x"
        #  * redefined in a refinement of a class "q::n::B"
        #  * in a module "r::o"
-       #  * so "r::o#q::n::B#p::m::A::x"
+       #  * so "r::o$q::n::B$p::m::A::x"
        #
        # Fortunately, the full-name is simplified when entities are repeated.
-       # For the previous case, the simplest form is "p#A#x".
+       # For the previous case, the simplest form is "p$A$x".
        redef var full_name is lazy do
                var res = new FlatBuffer
 
-               # The first part is the mclassdef. Worst case is "r::o#q::n::B"
+               # The first part is the mclassdef. Worst case is "r::o$q::n::B"
                res.append mclassdef.full_name
 
-               res.append "#"
+               res.append "$"
 
                if mclassdef.mclass == mproperty.intro_mclassdef.mclass then
                        # intro are unambiguous in a class
@@ -2274,7 +2285,7 @@ abstract class MPropDef
                        # Just try to simplify each part
                        if mclassdef.mmodule.mpackage != mproperty.intro_mclassdef.mmodule.mpackage then
                                # precise "p::m" only if "p" != "r"
-                               res.append mproperty.intro_mclassdef.mmodule.full_name
+                               res.append mproperty.intro_mclassdef.mmodule.namespace_for(mproperty.visibility)
                                res.append "::"
                        else if mproperty.visibility <= private_visibility then
                                # Same package ("p"=="q"), but private visibility,
@@ -2319,7 +2330,7 @@ abstract class MPropDef
        redef fun model do return mclassdef.model
 
        # Internal name combining the module, the class and the property
-       # Example: "mymodule#MyClass#mymethod"
+       # Example: "mymodule$MyClass$mymethod"
        redef var to_s is noinit
 
        # Is self the definition that introduce the property?
index c1625ee..1771938 100644 (file)
@@ -74,12 +74,15 @@ class MGroup
        var parent: nullable MGroup
 
        # Fully qualified name.
-       # It includes each parent group separated by `/`
+       # It includes each parent group separated by `>`.
+       # The full_name is terminated by `>` to avoid collision with other entities.
+       #
+       # E.g. `core>` and `core>collection>`
        redef fun full_name
        do
                var p = parent
-               if p == null then return name
-               return "{p.full_name}/{name}"
+               if p == null then return "{name}>"
+               return "{p.full_name}{name}>"
        end
 
        # The group is the group tree on the package (`mpackage.mgroups`)
index f8fa778..f875083 100644 (file)
@@ -196,7 +196,7 @@ if opt_source.value then
                if opt_paths.value then
                        print mp.filepath.as(not null)
                else
-                       print "{mp.mgroup.full_name}/{ot.display(mp)}"
+                       print "{mp.mgroup.full_name}{ot.display(mp)}"
                end
        end
 end
index 3569400..b46af5c 100644 (file)
@@ -26,11 +26,25 @@ class TestModelVisitor
 
        redef fun visit(e) do
                cpt.inc(e.class_name)
+
+               if not e isa Model then
+                       var name = e.full_name
+                       var old = names.get_or_null(name)
+                       if old != null then
+                               names[name + "!CONFLICT!" + old.class_name] = old
+                               name = name + "!CONFLICT!" + e.class_name
+                       end
+                       names[name] = e
+               end
+
                e.visit_all(self)
        end
 
        # Counter of visited entities (by classnames)
        var cpt = new Counter[String]
+
+       # Dictionary of full_names
+       var names = new Map[String, MEntity]
 end
 
 # The body of the specific work.
@@ -46,6 +60,7 @@ do
        v.include_fictive = true
        v.enter_visit(model)
        v.cpt.print_elements(10)
+       var names = v.names
 
        print "All entities:"
        v = new TestModelVisitor
@@ -79,4 +94,29 @@ do
        v.enter_visit(model)
        v.cpt.print_elements(10)
 
+       print "\nNames:"
+       print "\n# Classes of entities"
+       var cpt
+       cpt = new Counter[String]
+       for n, e in names do
+               cpt.inc(e.class_name)
+       end
+       cpt.print_summary
+       cpt.print_elements(10)
+
+       print "\n# Name length of entities"
+       cpt = new Counter[String]
+       for n, e in names do
+               cpt[n] = n.length
+       end
+       cpt.print_summary
+       cpt.print_elements(10)
+
+       print "\n# All entities"
+       for n, e in names do
+               var c = ""
+               var d = e.mdoc_or_fallback
+               if d != null and d.content.not_empty then c = d.content.first
+               print "{n}\t{e.class_name}\t{c}"
+       end
 end
diff --git a/tests/names/README.md b/tests/names/README.md
new file mode 100644 (file)
index 0000000..9ddf943
--- /dev/null
@@ -0,0 +1 @@
+Group of modules used to test various full_name configurations and conflicts.
diff --git a/tests/names/n0.nit b/tests/names/n0.nit
new file mode 100644 (file)
index 0000000..02008bb
--- /dev/null
@@ -0,0 +1,67 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Root module
+module n0
+
+import end
+
+# Root interface
+interface Object
+end
+
+# A public class
+class A
+       # A public method in a public class
+       fun a do end
+
+       # A private method in a public class
+       private fun z do end
+end
+
+# A public subclass in the same module
+class A0
+       super A
+       super P
+
+       # Redefinition it the same module of a public method
+       redef fun a do end
+
+       # Redefinition it the same module of a private method
+       redef fun z do end
+
+       # Redefinition it the same module of a private method
+       redef fun p do end
+end
+
+# A private class
+private class P
+       # A private method in a private class
+       fun p do end
+end
+
+# A private subclass introduced in the same module
+private class P0
+       super A
+       super P
+
+       # Redefinition it the same module of a public method
+       redef fun a do end
+
+       # Redefinition it the same module of a private method
+       redef fun z do end
+
+       # Redefinition it the same module of a private method
+       redef fun p do end
+end
diff --git a/tests/names/n1.nit b/tests/names/n1.nit
new file mode 100644 (file)
index 0000000..7cfb359
--- /dev/null
@@ -0,0 +1,90 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Second module
+module n1
+
+intrude import n0
+
+# A refinement of a class
+redef class A
+       # A refinement in the same class
+       redef fun a do end
+
+       # A refinement in the same class
+       redef fun z do end
+
+       # A public method introduced in a refinement
+       fun b do end
+end
+
+# A refinement of a subclass
+redef class A0
+       # A refinement+redefinition
+       redef fun a do end
+
+       # A refinement+redefinition
+       redef fun z do end
+
+       # A refinement+redefinition
+       redef fun p do end
+end
+
+# A subclass introduced in a submodule
+class A1
+       super A
+       super P
+
+       # A redefinition in a subclass from a different module
+       redef fun a do end
+
+       # A redefinition in a subclass from a different module
+       redef fun z do end
+
+       # A redefinition in a subclass from a different module
+       redef fun p do end
+end
+
+# A refinement of a class
+redef class P
+       # A refinement in the same class
+       redef fun p do end
+end
+
+# A refinement of a subclass
+redef class P0
+       # A refinement+redefinition
+       redef fun a do end
+
+       # A refinement+redefinition
+       redef fun z do end
+
+       # A refinement+redefinition
+       redef fun p do end
+end
+
+# A private subclass introduced in a different module
+private class P1
+       super A
+       super P
+
+       # A redefinition in a subclass from a different module
+       redef fun a do end
+
+       # A redefinition in a subclass from a different module
+       redef fun z do end
+
+       # A redefinition in a subclass from a different module
+       redef fun p do end
+end
diff --git a/tests/names/n2.nit b/tests/names/n2.nit
new file mode 100644 (file)
index 0000000..96486e2
--- /dev/null
@@ -0,0 +1,33 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# A alternative second module, used to make name conflicts
+module n2
+
+import n0
+
+# A refinement of a class
+redef class A
+       # Name conflict? A second public method
+       fun b do end
+
+       # Name conflict? A second private method
+       fun z do end
+end
+
+# Name conflict? A second private class
+private class P
+       # Name conflict? A private method in an homonym class.
+       fun p do end
+end
diff --git a/tests/names/n3.nit b/tests/names/n3.nit
new file mode 100644 (file)
index 0000000..85310c8
--- /dev/null
@@ -0,0 +1,35 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# The bottom module
+module n3
+
+intrude import n1
+import n2
+
+# a refinement of a subclass in a submodule
+redef class A1
+       # a refinement (3 distinct modules)
+       redef fun a do end
+       # a refinement (3 distinct modules)
+       redef fun p do end
+end
+
+# a refinement of a subclass in a submodule
+redef class P1
+       # a refinement (3 distinct modules)
+       redef fun a do end
+       # a refinement (3 distinct modules)
+       redef fun p do end
+end
diff --git a/tests/names/package.ini b/tests/names/package.ini
new file mode 100644 (file)
index 0000000..e69de29
index 90f67d3..84d579c 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$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=`
index f52de9b..d75b874 100644 (file)
@@ -1 +1 @@
-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.
+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.
index 3c79f1c..a920abb 100644 (file)
@@ -1,4 +1,4 @@
-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.
+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.
index 05e617f..6bc9d3f 100644 (file)
@@ -1 +1 @@
-alt/base_vararg_alt1.nit:51,1--3: Error: expected at least 1 argument(s) for `foo(a: Char...)`; got 0. See introduction at `base_vararg_alt1::Sys::foo`.
+alt/base_vararg_alt1.nit:51,1--3: Error: expected at least 1 argument(s) for `foo(a: Char...)`; got 0. See introduction at `base_vararg_alt1::base_vararg_alt1::Sys::foo`.
index d953dc6..2550be0 100644 (file)
@@ -1 +1 @@
-alt/base_vararg_alt2.nit:54,1--3: Error: expected at least 2 argument(s) for `bar(b: Char, a: Char...)`; got 0. See introduction at `base_vararg_alt2::Sys::bar`.
+alt/base_vararg_alt2.nit:54,1--3: Error: expected at least 2 argument(s) for `bar(b: Char, a: Char...)`; got 0. See introduction at `base_vararg_alt2::base_vararg_alt2::Sys::bar`.
index 7f5e21c..e7bc17f 100644 (file)
@@ -1 +1 @@
-alt/base_vararg_alt3.nit:55,1--3: Error: expected at least 2 argument(s) for `bar(b: Char, a: Char...)`; got 1. See introduction at `base_vararg_alt3::Sys::bar`.
+alt/base_vararg_alt3.nit:55,1--3: Error: expected at least 2 argument(s) for `bar(b: Char, a: Char...)`; got 1. See introduction at `base_vararg_alt3::base_vararg_alt3::Sys::bar`.
index bcd893b..82fd929 100644 (file)
@@ -1 +1 @@
-alt/base_vararg_alt4.nit:58,1--3: Error: expected at least 2 argument(s) for `baz(a: Char..., b: Char)`; got 0. See introduction at `base_vararg_alt4::Sys::baz`.
+alt/base_vararg_alt4.nit:58,1--3: Error: expected at least 2 argument(s) for `baz(a: Char..., b: Char)`; got 0. See introduction at `base_vararg_alt4::base_vararg_alt4::Sys::baz`.
index 011c15e..dd90331 100644 (file)
@@ -1 +1 @@
-alt/base_vararg_alt5.nit:59,1--3: Error: expected at least 2 argument(s) for `baz(a: Char..., b: Char)`; got 1. See introduction at `base_vararg_alt5::Sys::baz`.
+alt/base_vararg_alt5.nit:59,1--3: Error: expected at least 2 argument(s) for `baz(a: Char..., b: Char)`; got 1. See introduction at `base_vararg_alt5::base_vararg_alt5::Sys::baz`.
index cbe6263..ece6a22 100644 (file)
@@ -1 +1 @@
-alt/base_vararg_alt6.nit:62,1--6: Error: expected at least 3 argument(s) for `foobar(b: Char, a: Char..., c: Char)`; got 0. See introduction at `base_vararg_alt6::Sys::foobar`.
+alt/base_vararg_alt6.nit:62,1--6: Error: expected at least 3 argument(s) for `foobar(b: Char, a: Char..., c: Char)`; got 0. See introduction at `base_vararg_alt6::base_vararg_alt6::Sys::foobar`.
index da46a05..f2baff5 100644 (file)
@@ -1 +1 @@
-alt/base_vararg_alt7.nit:63,1--6: Error: expected at least 3 argument(s) for `foobar(b: Char, a: Char..., c: Char)`; got 1. See introduction at `base_vararg_alt7::Sys::foobar`.
+alt/base_vararg_alt7.nit:63,1--6: Error: expected at least 3 argument(s) for `foobar(b: Char, a: Char..., c: Char)`; got 1. See introduction at `base_vararg_alt7::base_vararg_alt7::Sys::foobar`.
index d6e8a87..d3d6f38 100644 (file)
@@ -1 +1 @@
-alt/base_vararg_alt8.nit:64,1--6: Error: expected at least 3 argument(s) for `foobar(b: Char, a: Char..., c: Char)`; got 2. See introduction at `base_vararg_alt8::Sys::foobar`.
+alt/base_vararg_alt8.nit:64,1--6: Error: expected at least 3 argument(s) for `foobar(b: Char, a: Char..., c: Char)`; got 2. See introduction at `base_vararg_alt8::base_vararg_alt8::Sys::foobar`.
index 2f12bb8..47669fd 100644 (file)
@@ -1,13 +1,13 @@
-../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/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`?
index e07af9a..d45e94d 100644 (file)
@@ -1,4 +1,4 @@
-alt/error_prop_loc_alt1.nit:38,9--12: Warning: conflicting property definitions for property `toto` in `D`: error_prop_loc_alt1#B#toto error_prop_loc_alt1#C#toto
+alt/error_prop_loc_alt1.nit:38,9--12: Warning: conflicting property definitions for property `toto` in `D`: error_prop_loc_alt1$B$toto error_prop_loc_alt1$C$toto
 1
 2
 3
index 6b89188..668ab56 100644 (file)
@@ -1,4 +1,4 @@
 error_unk_class.nit:16,9--12: Error: class `Fail` not found in module `error_unk_class`.
 error_unk_class.nit:17,9--15: Error: class `Boolean` not found in module `error_unk_class`. Did you mean `Bool`?
 error_unk_class.nit:18,9--16: Error: class `core::list::ListNode` not visible in module `error_unk_class`.
-error_unk_class.nit:19,9--13: Error: class `POSet` not found in module `error_unk_class`. Maybe import `poset`?
+error_unk_class.nit:19,9--13: Error: class `POSet` not found in module `error_unk_class`. Maybe import `poset::poset`?
index 57a7829..20d487e 100644 (file)
 </span></span><span class="line" id="L16">
 </span><span class="line" id="L17"><span class="nc_k">import</span> <span class="nc_k">end</span>
 </span><span class="line" id="L18">
-</span><span class="nc_cdef foldable" id="base_simple3#Object"><span class="line" id="L19"><span class="nc_k">interface</span> <span class="nc_t">Object</span>
+</span><span class="nc_cdef foldable" id="base_simple3$Object"><span class="line" id="L19"><span class="nc_k">interface</span> <span class="nc_t">Object</span>
 </span><span class="line" id="L20"><span class="nc_k">end</span>
 </span></span><span class="line" id="L21">
-</span><span class="nc_cdef foldable" id="base_simple3#Bool"><span class="line" id="L22"><span class="nc_k">enum</span> <span class="nc_t">Bool</span>
+</span><span class="nc_cdef foldable" id="base_simple3$Bool"><span class="line" id="L22"><span class="nc_k">enum</span> <span class="nc_t">Bool</span>
 </span><span class="line" id="L23"><span class="nc_k">end</span>
 </span></span><span class="line" id="L24">
-</span><span class="nc_cdef foldable" id="base_simple3#Int"><span class="line" id="L25"><span class="nc_k">enum</span> <span class="nc_t">Int</span>
-</span><span class="nc_pdef foldable" id="base_simple3#Int#output"><span class="line" id="L26">        <span class="nc_k">fun</span> <span class="nc_def popupable" title="base_simple3#Int#output" data-title="&lt;a href=&#34;base_simple3.html#base_simple3#Int#output&#34;&gt;base_simple3#Int#output&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;fun&lt;&#47;b&gt; &lt;span&gt;output&lt;span&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover"><span class="nc_i">output</span></span> <span class="nc_k">is</span> <span class="nc_i">intern</span>
+</span><span class="nc_cdef foldable" id="base_simple3$Int"><span class="line" id="L25"><span class="nc_k">enum</span> <span class="nc_t">Int</span>
+</span><span class="nc_pdef foldable" id="base_simple3$Int$output"><span class="line" id="L26">        <span class="nc_k">fun</span> <span class="nc_def popupable" title="base_simple3$Int$output" data-title="&lt;a href=&#34;base_simple3.html#base_simple3$Int$output&#34;&gt;base_simple3$Int$output&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;fun&lt;&#47;b&gt; &lt;span&gt;output&lt;span&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover"><span class="nc_i">output</span></span> <span class="nc_k">is</span> <span class="nc_i">intern</span>
 </span></span><span class="line" id="L27"><span class="nc_k">end</span>
 </span></span><span class="line" id="L28">
-</span><span class="nc_cdef foldable" id="base_simple3#A"><span class="line" id="L29"><span class="nc_k">class</span> <span class="nc_t">A</span>
-</span><span class="nc_pdef foldable" id="base_simple3#A#init"><span class="line" id="L30">    <span class="nc_k">init</span> <span class="nc_k">do</span> <span class="nc_l">5</span><span>.</span><span class="nc_i">output</span>
-</span></span><span class="nc_pdef foldable" id="base_simple3#A#run"><span class="line" id="L31">      <span class="nc_k">fun</span> <span class="nc_def popupable" title="base_simple3#A#run" data-title="&lt;a href=&#34;base_simple3.html#base_simple3#A#run&#34;&gt;base_simple3#A#run&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;fun&lt;&#47;b&gt; &lt;span&gt;run&lt;span&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover"><span class="nc_i">run</span></span> <span class="nc_k">do</span> <span class="nc_l">6</span><span>.</span><span class="nc_i">output</span>
+</span><span class="nc_cdef foldable" id="base_simple3$A"><span class="line" id="L29"><span class="nc_k">class</span> <span class="nc_t">A</span>
+</span><span class="nc_pdef foldable" id="base_simple3$A$init"><span class="line" id="L30">    <span class="nc_k">init</span> <span class="nc_k">do</span> <span class="nc_l">5</span><span>.</span><span class="nc_i">output</span>
+</span></span><span class="nc_pdef foldable" id="base_simple3$A$run"><span class="line" id="L31">      <span class="nc_k">fun</span> <span class="nc_def popupable" title="base_simple3$A$run" data-title="&lt;a href=&#34;base_simple3.html#base_simple3$A$run&#34;&gt;base_simple3$A$run&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;fun&lt;&#47;b&gt; &lt;span&gt;run&lt;span&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover"><span class="nc_i">run</span></span> <span class="nc_k">do</span> <span class="nc_l">6</span><span>.</span><span class="nc_i">output</span>
 </span></span><span class="line" id="L32"><span class="nc_k">end</span>
 </span></span><span class="line" id="L33">
-</span><span class="nc_cdef foldable" id="base_simple3#B"><span class="line" id="L34"><span class="nc_k">class</span> <span class="nc_t">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 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 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 class="line" id="L40">    <span class="nc_k">end</span>
-</span></span><span class="nc_pdef foldable" id="base_simple3#B#run"><span class="line" id="L41">      <span class="nc_k">fun</span> <span class="nc_def popupable" title="base_simple3#B#run" data-title="&lt;a href=&#34;base_simple3.html#base_simple3#B#run&#34;&gt;base_simple3#B#run&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;fun&lt;&#47;b&gt; &lt;span&gt;run&lt;span&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover"><span class="nc_i">run</span></span> <span class="nc_k">do</span> <span class="nc_i">val</span><span>.</span><span class="nc_i">output</span>
+</span></span><span class="nc_pdef foldable" id="base_simple3$B$run"><span class="line" id="L41">      <span class="nc_k">fun</span> <span class="nc_def popupable" title="base_simple3$B$run" data-title="&lt;a href=&#34;base_simple3.html#base_simple3$B$run&#34;&gt;base_simple3$B$run&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;fun&lt;&#47;b&gt; &lt;span&gt;run&lt;span&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover"><span class="nc_i">run</span></span> <span class="nc_k">do</span> <span class="nc_i">val</span><span>.</span><span class="nc_i">output</span>
 </span></span><span class="line" id="L42"><span class="nc_k">end</span>
 </span></span><span class="line" id="L43">
-</span><span class="nc_cdef foldable" id="base_simple3#C"><span class="line" id="L44"><span class="nc_k">class</span> <span class="nc_t">C</span>
-</span><span class="nc_pdef foldable" id="base_simple3#C#_val1"><a id="base_simple3#C#val1"></a><a id="base_simple3#C#val1="></a><span class="line" id="L45">  <span class="nc_k">var</span> <span class="nc_def nc_i">val1</span><span>:</span> <span class="nc_t">Int</span>
-</span></span><span class="nc_pdef foldable" id="base_simple3#C#_val2"><a id="base_simple3#C#val2"></a><a id="base_simple3#C#val2="></a><span class="line" id="L46">   <span class="nc_k">var</span> <span class="nc_def nc_i">val2</span><span>:</span> <span class="nc_t">Int</span> <span>=</span> <span class="nc_l">10</span>
+</span><span class="nc_cdef foldable" id="base_simple3$C"><span class="line" id="L44"><span class="nc_k">class</span> <span class="nc_t">C</span>
+</span><span class="nc_pdef foldable" id="base_simple3$C$_val1"><a id="base_simple3$C$val1"></a><a id="base_simple3$C$val1="></a><span class="line" id="L45">  <span class="nc_k">var</span> <span class="nc_def nc_i">val1</span><span>:</span> <span class="nc_t">Int</span>
+</span></span><span class="nc_pdef foldable" id="base_simple3$C$_val2"><a id="base_simple3$C$val2"></a><a id="base_simple3$C$val2="></a><span class="line" id="L46">   <span class="nc_k">var</span> <span class="nc_def nc_i">val2</span><span>:</span> <span class="nc_t">Int</span> <span>=</span> <span class="nc_l">10</span>
 </span></span><span class="line" id="L47"><span class="nc_k">end</span>
 </span></span><span class="line" id="L48">
-</span><span class="nc_pdef foldable" id="base_simple3#Sys#foo"><span class="line" id="L49"><span class="nc_k">fun</span> <span class="nc_def popupable" title="base_simple3#Sys#foo" data-title="&lt;a href=&#34;base_simple3.html#base_simple3#Sys#foo&#34;&gt;base_simple3#Sys#foo&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;fun&lt;&#47;b&gt; &lt;span&gt;foo&lt;span&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover"><span class="nc_i">foo</span></span> <span class="nc_k">do</span> <span class="nc_l">2</span><span>.</span><span class="nc_i">output</span>
-</span></span><span class="nc_pdef foldable" id="base_simple3#Sys#bar"><span class="line" id="L50"><span class="nc_k">fun</span> <span class="nc_def popupable" title="base_simple3#Sys#bar" data-title="&lt;a href=&#34;base_simple3.html#base_simple3#Sys#bar&#34;&gt;base_simple3#Sys#bar&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;fun&lt;&#47;b&gt; &lt;span&gt;bar&lt;span&gt;(i: &lt;a href=&#34;base_simple3.html#base_simple3#Int&#34;&gt;Int&lt;&#47;a&gt;)&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover"><span class="nc_i">bar</span></span><span>(</span><span class="nc_v nc_i">i</span><span>:</span> <span class="nc_t">Int</span><span>)</span> <span class="nc_k">do</span> <span class="nc_v nc_i">i</span><span>.</span><span class="nc_i">output</span>
-</span></span><span class="nc_pdef foldable" id="base_simple3#Sys#baz"><span class="line" id="L51"><span class="nc_k">fun</span> <span class="nc_def popupable" title="base_simple3#Sys#baz" data-title="&lt;a href=&#34;base_simple3.html#base_simple3#Sys#baz&#34;&gt;base_simple3#Sys#baz&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;fun&lt;&#47;b&gt; &lt;span&gt;baz&lt;span&gt;: &lt;a href=&#34;base_simple3.html#base_simple3#Int&#34;&gt;Int&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover"><span class="nc_i">baz</span></span><span>:</span> <span class="nc_t">Int</span> <span class="nc_k">do</span> <span class="nc_k">return</span> <span class="nc_l">4</span>
+</span><span class="nc_pdef foldable" id="base_simple3$Sys$foo"><span class="line" id="L49"><span class="nc_k">fun</span> <span class="nc_def popupable" title="base_simple3$Sys$foo" data-title="&lt;a href=&#34;base_simple3.html#base_simple3$Sys$foo&#34;&gt;base_simple3$Sys$foo&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;fun&lt;&#47;b&gt; &lt;span&gt;foo&lt;span&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover"><span class="nc_i">foo</span></span> <span class="nc_k">do</span> <span class="nc_l">2</span><span>.</span><span class="nc_i">output</span>
+</span></span><span class="nc_pdef foldable" id="base_simple3$Sys$bar"><span class="line" id="L50"><span class="nc_k">fun</span> <span class="nc_def popupable" title="base_simple3$Sys$bar" data-title="&lt;a href=&#34;base_simple3.html#base_simple3$Sys$bar&#34;&gt;base_simple3$Sys$bar&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;fun&lt;&#47;b&gt; &lt;span&gt;bar&lt;span&gt;(i: &lt;a href=&#34;base_simple3.html#base_simple3$Int&#34;&gt;Int&lt;&#47;a&gt;)&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover"><span class="nc_i">bar</span></span><span>(</span><span class="nc_v nc_i">i</span><span>:</span> <span class="nc_t">Int</span><span>)</span> <span class="nc_k">do</span> <span class="nc_v nc_i">i</span><span>.</span><span class="nc_i">output</span>
+</span></span><span class="nc_pdef foldable" id="base_simple3$Sys$baz"><span class="line" id="L51"><span class="nc_k">fun</span> <span class="nc_def popupable" title="base_simple3$Sys$baz" data-title="&lt;a href=&#34;base_simple3.html#base_simple3$Sys$baz&#34;&gt;base_simple3$Sys$baz&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;fun&lt;&#47;b&gt; &lt;span&gt;baz&lt;span&gt;: &lt;a href=&#34;base_simple3.html#base_simple3$Int&#34;&gt;Int&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover"><span class="nc_i">baz</span></span><span>:</span> <span class="nc_t">Int</span> <span class="nc_k">do</span> <span class="nc_k">return</span> <span class="nc_l">4</span>
 </span></span><span class="line" id="L52">
-</span><span class="nc_pdef foldable" id="base_simple3#Sys#main"><span class="line" id="L53"><span class="nc_l">1</span><span>.</span><span class="nc_i">output</span>
+</span><span class="nc_pdef foldable" id="base_simple3$Sys$main"><span class="line" id="L53"><span class="nc_l">1</span><span>.</span><span class="nc_i">output</span>
 </span><span class="line" id="L54"><span class="nc_i">foo</span>
 </span><span class="line" id="L55"><span class="nc_i">bar</span><span>(</span><span class="nc_l">3</span><span>)</span>
 </span><span class="line" id="L56"><span class="nc_i">baz</span><span>.</span><span class="nc_i">output</span>
index 267bbdb..56570ed 100644 (file)
@@ -1,10 +1,10 @@
-base_simple3/\e[1mbase_simple3\e[m (\e[33mbase_simple3.nit\e[m)
-project1/\e[1mmodule1\e[m (\e[33mproject1/module1.nit\e[m)
-project1/\e[1mmodule2\e[m (\e[33mproject1/module2.nit\e[m)
-project1/\e[1mmodule3\e[m (\e[33mproject1/module3.nit\e[m)
-project1/subdir/\e[1mmodule4\e[m (\e[33mproject1/subdir/module4.nit\e[m)
-project1/\e[1mmodule_0\e[m (\e[33mproject1/module_0.nit\e[m)
-project1/subdir/\e[1mmodule_0\e[m (\e[33mproject1/subdir/module_0.nit\e[m)
-project1/\e[1mmodule_01\e[m (\e[33mproject1/module_01.nit\e[m)
-project1/\e[1mmodule_02\e[m (\e[33mproject1/module_02.nit\e[m)
-project1/\e[1mproject1\e[m (\e[33mproject1/project1.nit\e[m)
+base_simple3>\e[1mbase_simple3\e[m (\e[33mbase_simple3.nit\e[m)
+project1>\e[1mmodule1\e[m (\e[33mproject1/module1.nit\e[m)
+project1>\e[1mmodule2\e[m (\e[33mproject1/module2.nit\e[m)
+project1>\e[1mmodule3\e[m (\e[33mproject1/module3.nit\e[m)
+project1>subdir>\e[1mmodule4\e[m (\e[33mproject1/subdir/module4.nit\e[m)
+project1>\e[1mmodule_0\e[m (\e[33mproject1/module_0.nit\e[m)
+project1>subdir>\e[1mmodule_0\e[m (\e[33mproject1/subdir/module_0.nit\e[m)
+project1>\e[1mmodule_01\e[m (\e[33mproject1/module_01.nit\e[m)
+project1>\e[1mmodule_02\e[m (\e[33mproject1/module_02.nit\e[m)
+project1>\e[1mproject1\e[m (\e[33mproject1/project1.nit\e[m)
index 12430c7..6d734f6 100644 (file)
@@ -91,7 +91,7 @@
 # MModules metrics
 
  ## package base_simple3
-  `- group base_simple3
+  `- group base_simple3>
        mnoa: number of ancestor modules
          avg: 0.0
          max: base_simple3 (0)
@@ -367,7 +367,7 @@ generating module_hierarchy.dot
 # MClasses metrics
 
  ## package base_simple3
-  `- group base_simple3
+  `- group base_simple3>
        cnoa: number of ancestor classes
          avg: 0.0
          max: Bool (1)
@@ -494,7 +494,7 @@ generating module_hierarchy.dot
 # Inheritance metrics
 
  ## package base_simple3
-  `- group base_simple3
+  `- group base_simple3>
        cnoac: number of class_kind ancestor
          avg: 0.0
          max: Object (0)
@@ -752,7 +752,7 @@ Statistics of type usage:
 # Nullable metrics
 
  ## package base_simple3
-  `- group base_simple3
+  `- group base_simple3>
        cnba: number of accessible attributes (inherited + local)
          avg: 0.0
          max: C (2)
@@ -869,17 +869,17 @@ MMethodDef locally designated (by number of CallSites)
   <=1: sub-population=13 (92.85%); cumulated value=13 (56.52%)
   <=16: sub-population=1 (7.14%); cumulated value=10 (43.47%)
  list:
-  base_simple3#Int#output: 10 (43.47%)
-  base_simple3#B#val: 1 (4.34%)
-  base_simple3#B#val=: 1 (4.34%)
-  base_simple3#Object#init: 1 (4.34%)
-  base_simple3#C#val2: 1 (4.34%)
+  base_simple3$Int$output: 10 (43.47%)
+  base_simple3$B$val: 1 (4.34%)
+  base_simple3$B$val=: 1 (4.34%)
+  base_simple3$Object$init: 1 (4.34%)
+  base_simple3$C$val2: 1 (4.34%)
   ...
-  base_simple3#A#init: 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$A$init: 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%)
 MMethodDef possibly invoked at runtime (by number of CallSites)
  population: 14
  minimum value: 1
@@ -890,17 +890,17 @@ MMethodDef possibly invoked at runtime (by number of CallSites)
   <=1: sub-population=13 (92.85%); cumulated value=13 (56.52%)
   <=16: sub-population=1 (7.14%); cumulated value=10 (43.47%)
  list:
-  base_simple3#Int#output: 10 (43.47%)
-  base_simple3#B#val: 1 (4.34%)
-  base_simple3#B#val=: 1 (4.34%)
-  base_simple3#Object#init: 1 (4.34%)
-  base_simple3#C#val2: 1 (4.34%)
+  base_simple3$Int$output: 10 (43.47%)
+  base_simple3$B$val: 1 (4.34%)
+  base_simple3$B$val=: 1 (4.34%)
+  base_simple3$Object$init: 1 (4.34%)
+  base_simple3$C$val2: 1 (4.34%)
   ...
-  base_simple3#A#init: 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$A$init: 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%)
 class_hierarchy.dot
 classdef_hierarchy.dot
 inheritance/
index e1439ca..58aa2a8 100644 (file)
@@ -1,6 +1,6 @@
-test_nitunit.nit:20,1--22,0: ERROR: nitunit.test_nitunit.test_nitunit::X.<class> (in .nitunit/test_nitunit-2.nit): Runtime error: Assert failed (.nitunit/test_nitunit-2.nit:5)
+test_nitunit.nit:20,1--22,0: ERROR: nitunit.test_nitunit::test_nitunit.test_nitunit::X.<class> (in .nitunit/test_nitunit-2.nit): Runtime error: Assert failed (.nitunit/test_nitunit-2.nit:5)
 
-test_nitunit.nit:23,2--25,0: FAILURE: nitunit.test_nitunit.test_nitunit::X.test_nitunit::X::foo (in .nitunit/test_nitunit-3.nit): .nitunit/test_nitunit-3.nit:5,8--27: Error: method or variable `undefined_identifier` unknown in `Sys`.
+test_nitunit.nit:23,2--25,0: FAILURE: nitunit.test_nitunit::test_nitunit.test_nitunit::X.test_nitunit::X::foo (in .nitunit/test_nitunit-3.nit): .nitunit/test_nitunit-3.nit:5,8--27: Error: method or variable `undefined_identifier` unknown in `Sys`.
 
 test_test_nitunit.nit:36,2--40,4: ERROR: test_foo1 (in file .nitunit/gen_test_test_nitunit.nit): Runtime error: Assert failed (test_test_nitunit.nit:39)
 
@@ -9,10 +9,10 @@ Entities: 27; Documented ones: 3; With nitunits: 3; Failures: 2
 
 TestSuites:
 Class suites: 1; Test Cases: 3; Failures: 1
-<testsuites><testsuite package="test_nitunit"><testcase classname="nitunit.test_nitunit.&lt;module&gt;" name="&lt;module&gt;"><system-err></system-err><system-out>assert true
-</system-out></testcase><testcase classname="nitunit.test_nitunit.test_nitunit::X" name="&lt;class&gt;"><system-err></system-err><system-out>assert false
+<testsuites><testsuite package="test_nitunit::test_nitunit"><testcase classname="nitunit.test_nitunit::test_nitunit.&lt;module&gt;" name="&lt;module&gt;"><system-err></system-err><system-out>assert true
+</system-out></testcase><testcase classname="nitunit.test_nitunit::test_nitunit.test_nitunit::X" name="&lt;class&gt;"><system-err></system-err><system-out>assert false
 </system-out><error message="Runtime error: Assert failed (.nitunit&#47;test_nitunit-2.nit:5)
-"></error></testcase><testcase classname="nitunit.test_nitunit.test_nitunit::X" name="test_nitunit::X::foo"><system-err></system-err><system-out>assert undefined_identifier
+"></error></testcase><testcase classname="nitunit.test_nitunit::test_nitunit.test_nitunit::X" name="test_nitunit::X::foo"><system-err></system-err><system-out>assert undefined_identifier
 </system-out><failure message=".nitunit&#47;test_nitunit-3.nit:5,8--27: Error: method or variable `undefined_identifier` unknown in `Sys`.
-"></failure></testcase></testsuite><testsuite package="test_test_nitunit"><testcase classname="nitunit.test_test_nitunit.test_test_nitunit::TestX" name="test_test_nitunit::TestX::test_foo"><system-err></system-err><system-out>out</system-out></testcase><testcase classname="nitunit.test_test_nitunit.test_test_nitunit::TestX" name="test_test_nitunit::TestX::test_foo1"><system-err></system-err><system-out>out</system-out><error message="Runtime error: Assert failed (test_test_nitunit.nit:39)
-"></error></testcase><testcase classname="nitunit.test_test_nitunit.test_test_nitunit::TestX" name="test_test_nitunit::TestX::test_foo2"><system-err></system-err><system-out>out</system-out></testcase></testsuite></testsuites>
\ No newline at end of file
+"></failure></testcase></testsuite><testsuite package="test_test_nitunit"><testcase classname="nitunit.test_test_nitunit::test_test_nitunit.test_test_nitunit::TestX" name="test_test_nitunit::TestX::test_foo"><system-err></system-err><system-out>out</system-out></testcase><testcase classname="nitunit.test_test_nitunit::test_test_nitunit.test_test_nitunit::TestX" name="test_test_nitunit::TestX::test_foo1"><system-err></system-err><system-out>out</system-out><error message="Runtime error: Assert failed (test_test_nitunit.nit:39)
+"></error></testcase><testcase classname="nitunit.test_test_nitunit::test_test_nitunit.test_test_nitunit::TestX" name="test_test_nitunit::TestX::test_foo2"><system-err></system-err><system-out>out</system-out></testcase></testsuite></testsuites>
\ No newline at end of file
index 5d5471f..4f4ab53 100644 (file)
@@ -5,17 +5,17 @@ Entities: 4; Documented ones: 3; With nitunits: 3; Failures: 0
 TestSuites:
 No test cases found
 Class suites: 0; Test Cases: 0; Failures: 0
-<testsuites><testsuite package="test_nitunit2"><testcase classname="nitunit.test_nitunit2.core::Sys" name="test_nitunit2::Sys::foo1"><system-err></system-err><system-out>if true then
+<testsuites><testsuite package="test_nitunit2::test_nitunit2"><testcase classname="nitunit.test_nitunit2::test_nitunit2.core::Sys" name="test_nitunit2::test_nitunit2::Sys::foo1"><system-err></system-err><system-out>if true then
 
    assert true
 
 end
-</system-out></testcase><testcase classname="nitunit.test_nitunit2.core::Sys" name="test_nitunit2::Sys::bar2"><system-err></system-err><system-out>if true then
+</system-out></testcase><testcase classname="nitunit.test_nitunit2::test_nitunit2.core::Sys" name="test_nitunit2::test_nitunit2::Sys::bar2"><system-err></system-err><system-out>if true then
 
     assert true
 
 end
-</system-out></testcase><testcase classname="nitunit.test_nitunit2.core::Sys" name="test_nitunit2::Sys::foo3"><system-err></system-err><system-out>var a = 1
+</system-out></testcase><testcase classname="nitunit.test_nitunit2::test_nitunit2.core::Sys" name="test_nitunit2::test_nitunit2::Sys::foo3"><system-err></system-err><system-out>var a = 1
 assert a == 1
 assert a == 1
 </system-out></testcase></testsuite><testsuite></testsuite></testsuites>
\ No newline at end of file
index e89f593..dd4f11a 100644 (file)
@@ -5,7 +5,7 @@ Entities: 6; Documented ones: 5; With nitunits: 3; Failures: 0
 TestSuites:
 No test cases found
 Class suites: 0; Test Cases: 0; Failures: 0
-<testsuites><testsuite package="test_doc2"><testcase classname="nitunit.test_doc2.core::Sys" name="test_doc2::Sys::foo1"><system-err></system-err><system-out>assert true # tested
-</system-out></testcase><testcase classname="nitunit.test_doc2.core::Sys" name="test_doc2::Sys::foo2"><system-err></system-err><system-out>assert true # tested
-</system-out></testcase><testcase classname="nitunit.test_doc2.core::Sys" name="test_doc2::Sys::foo3"><system-err></system-err><system-out>assert true # tested
+<testsuites><testsuite package="test_doc2::test_doc2"><testcase classname="nitunit.test_doc2::test_doc2.core::Sys" name="test_doc2::test_doc2::Sys::foo1"><system-err></system-err><system-out>assert true # tested
+</system-out></testcase><testcase classname="nitunit.test_doc2::test_doc2.core::Sys" name="test_doc2::test_doc2::Sys::foo2"><system-err></system-err><system-out>assert true # tested
+</system-out></testcase><testcase classname="nitunit.test_doc2::test_doc2.core::Sys" name="test_doc2::test_doc2::Sys::foo3"><system-err></system-err><system-out>assert true # tested
 </system-out></testcase></testsuite><testsuite></testsuite></testsuites>
\ No newline at end of file
index 8971f9e..b0a65a1 100644 (file)
@@ -1,5 +1,5 @@
 test_nitunit3/README.md:1,0--13,0: Error: there is a block of invalid Nit code, thus not considered a nitunit. To suppress this warning, enclose the block with a fence tagged `nitish` or `raw` (see `man nitdoc`). At 1,2--4: Syntax Error: unexpected malformed character '\]..
-test_nitunit3/README.md:1,0--13,0: ERROR: nitunit.test_nitunit3.<group> (in .nitunit/test_nitunit3-0.nit): Runtime error: Assert failed (.nitunit/test_nitunit3-0.nit:7)
+test_nitunit3/README.md:1,0--13,0: ERROR: nitunit.test_nitunit3>.<group> (in .nitunit/test_nitunit3-0.nit): Runtime error: Assert failed (.nitunit/test_nitunit3-0.nit:7)
 
 DocUnits:
 Entities: 2; Documented ones: 2; With nitunits: 3; Failures: 2
@@ -7,8 +7,8 @@ Entities: 2; Documented ones: 2; With nitunits: 3; Failures: 2
 TestSuites:
 No test cases found
 Class suites: 0; Test Cases: 0; Failures: 0
-<testsuites><testsuite package="test_nitunit3"><testcase classname="nitunit.test_nitunit3" name="&lt;group&gt;"><failure message="test_nitunit3&#47;README.md:1,0--13,0: Invalid block of code. At 1,2--4: Syntax Error: unexpected malformed character &#39;\].."></failure><system-err></system-err><system-out>assert false
+<testsuites><testsuite package="test_nitunit3&gt;"><testcase classname="nitunit.test_nitunit3&gt;" name="&lt;group&gt;"><failure message="test_nitunit3&#47;README.md:1,0--13,0: Invalid block of code. At 1,2--4: Syntax Error: unexpected malformed character &#39;\].."></failure><system-err></system-err><system-out>assert false
 assert true
 </system-out><error message="Runtime error: Assert failed (.nitunit&#47;test_nitunit3-0.nit:7)
-"></error></testcase></testsuite><testsuite package="test_nitunit3"><testcase classname="nitunit.test_nitunit3.&lt;module&gt;" name="&lt;module&gt;"><system-err></system-err><system-out>assert true
+"></error></testcase></testsuite><testsuite package="test_nitunit3::test_nitunit3"><testcase classname="nitunit.test_nitunit3::test_nitunit3.&lt;module&gt;" name="&lt;module&gt;"><system-err></system-err><system-out>assert true
 </system-out></testcase></testsuite><testsuite></testsuite></testsuites>
\ No newline at end of file
index 3f42f57..7e2dc83 100644 (file)
@@ -7,4 +7,4 @@ Entities: 6; Documented ones: 5; With nitunits: 3; Failures: 3
 TestSuites:
 No test cases found
 Class suites: 0; Test Cases: 0; Failures: 0
-<testsuites><testsuite package="test_doc3"><testcase classname="nitunit.test_doc3.core::Sys" name="test_doc3::Sys::foo1"><failure message="test_doc3.nit:15,1--18,0: Invalid block of code. At 1,3--9: Syntax Error: unexpected identifier &#39;garbage&#39;.."></failure></testcase><testcase classname="nitunit.test_doc3.core::Sys" name="test_doc3::Sys::foo2"><failure message="test_doc3.nit:20,1--25,0: Invalid block of code. At 1,2--8: Syntax Error: unexpected identifier &#39;garbage&#39;.."></failure></testcase><testcase classname="nitunit.test_doc3.core::Sys" name="test_doc3::Sys::foo3"><failure message="test_doc3.nit:27,1--32,0: Invalid block of code. At 1,2--8: Syntax Error: unexpected identifier &#39;garbage&#39;.."></failure></testcase></testsuite><testsuite></testsuite></testsuites>
\ No newline at end of file
+<testsuites><testsuite package="test_doc3::test_doc3"><testcase classname="nitunit.test_doc3::test_doc3.core::Sys" name="test_doc3::test_doc3::Sys::foo1"><failure message="test_doc3.nit:15,1--18,0: Invalid block of code. At 1,3--9: Syntax Error: unexpected identifier &#39;garbage&#39;.."></failure></testcase><testcase classname="nitunit.test_doc3::test_doc3.core::Sys" name="test_doc3::test_doc3::Sys::foo2"><failure message="test_doc3.nit:20,1--25,0: Invalid block of code. At 1,2--8: Syntax Error: unexpected identifier &#39;garbage&#39;.."></failure></testcase><testcase classname="nitunit.test_doc3::test_doc3.core::Sys" name="test_doc3::test_doc3::Sys::foo3"><failure message="test_doc3.nit:27,1--32,0: Invalid block of code. At 1,2--8: Syntax Error: unexpected identifier &#39;garbage&#39;.."></failure></testcase></testsuite><testsuite></testsuite></testsuites>
\ No newline at end of file
index 55f831f..42cbaa9 100644 (file)
@@ -9,7 +9,7 @@ Entities: 10; Documented ones: 0; With nitunits: 0; Failures: 0
 
 TestSuites:
 Class suites: 1; Test Cases: 1; Failures: 1
-<testsuites><testsuite package="test_nitunit4"></testsuite><testsuite package="test_nitunit4"></testsuite><testsuite></testsuite><testsuite package="test_nitunit4::nitunit4"></testsuite><testsuite package="test_nitunit4"><testcase classname="nitunit.test_nitunit4.test_nitunit4::TestTestSuite" name="test_nitunit4::TestTestSuite::test_foo"><system-err></system-err><system-out>out</system-out><error message="Before Test
+<testsuites><testsuite package="test_nitunit4&gt;"></testsuite><testsuite package="test_nitunit4::test_nitunit4"></testsuite><testsuite></testsuite><testsuite package="test_nitunit4::nitunit4"></testsuite><testsuite package="test_nitunit4"><testcase classname="nitunit.test_nitunit4::test_nitunit4.test_nitunit4::TestTestSuite" name="test_nitunit4::TestTestSuite::test_foo"><system-err></system-err><system-out>out</system-out><error message="Before Test
 Tested method
 After Test
 Runtime error: Assert failed (test_nitunit4&#47;test_nitunit4_base.nit:31)
index 0bd1e66..fe9ca03 100644 (file)
 
        </head><body>
        
-<h1>base_simple3#Int#output</h1>
-<pre><code><span class="nitcode"><span class="nc_pdef foldable" id="base_simple3#Int#output"><span class="line" id="L26">      <span class="nc_k">fun</span> <span class="nc_def popupable" title="base_simple3#Int#output" data-title="&lt;a href=&#34;base_simple3.html#base_simple3#Int#output&#34;&gt;base_simple3#Int#output&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;fun&lt;&#47;b&gt; &lt;span&gt;output&lt;span&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover"><span class="nc_i">output</span></span> <span class="nc_k">is</span> <span class="nc_i">intern</span></span></span></span></code></pre>
-<h1>base_simple3#A#Object::init</h1>
-<pre><code><span class="nitcode"><span class="nc_pdef foldable" id="base_simple3#A#init"><span class="line" id="L30">  <span class="nc_k">init</span> <span class="nc_k">do</span> <span class="nc_l">5</span><span>.</span><span class="nc_i">output</span></span></span></span></code></pre>
-<h1>base_simple3#A#run</h1>
-<pre><code><span class="nitcode"><span class="nc_pdef foldable" id="base_simple3#A#run"><span class="line" id="L31">   <span class="nc_k">fun</span> <span class="nc_def popupable" title="base_simple3#A#run" data-title="&lt;a href=&#34;base_simple3.html#base_simple3#A#run&#34;&gt;base_simple3#A#run&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;fun&lt;&#47;b&gt; &lt;span&gt;run&lt;span&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover"><span class="nc_i">run</span></span> <span class="nc_k">do</span> <span class="nc_l">6</span><span>.</span><span class="nc_i">output</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#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#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$Int$output</h1>
+<pre><code><span class="nitcode"><span class="nc_pdef foldable" id="base_simple3$Int$output"><span class="line" id="L26">      <span class="nc_k">fun</span> <span class="nc_def popupable" title="base_simple3$Int$output" data-title="&lt;a href=&#34;base_simple3.html#base_simple3$Int$output&#34;&gt;base_simple3$Int$output&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;fun&lt;&#47;b&gt; &lt;span&gt;output&lt;span&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover"><span class="nc_i">output</span></span> <span class="nc_k">is</span> <span class="nc_i">intern</span></span></span></span></code></pre>
+<h1>base_simple3$A$Object::init</h1>
+<pre><code><span class="nitcode"><span class="nc_pdef foldable" id="base_simple3$A$init"><span class="line" id="L30">  <span class="nc_k">init</span> <span class="nc_k">do</span> <span class="nc_l">5</span><span>.</span><span class="nc_i">output</span></span></span></span></code></pre>
+<h1>base_simple3$A$run</h1>
+<pre><code><span class="nitcode"><span class="nc_pdef foldable" id="base_simple3$A$run"><span class="line" id="L31">   <span class="nc_k">fun</span> <span class="nc_def popupable" title="base_simple3$A$run" data-title="&lt;a href=&#34;base_simple3.html#base_simple3$A$run&#34;&gt;base_simple3$A$run&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;fun&lt;&#47;b&gt; &lt;span&gt;run&lt;span&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover"><span class="nc_i">run</span></span> <span class="nc_k">do</span> <span class="nc_l">6</span><span>.</span><span class="nc_i">output</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$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$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>
 </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 class="line" id="L40">    <span class="nc_k">end</span></span></span></span></code></pre>
-<h1>base_simple3#B#run</h1>
-<pre><code><span class="nitcode"><span class="nc_pdef foldable" id="base_simple3#B#run"><span class="line" id="L41">   <span class="nc_k">fun</span> <span class="nc_def popupable" title="base_simple3#B#run" data-title="&lt;a href=&#34;base_simple3.html#base_simple3#B#run&#34;&gt;base_simple3#B#run&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;fun&lt;&#47;b&gt; &lt;span&gt;run&lt;span&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover"><span class="nc_i">run</span></span> <span class="nc_k">do</span> <span class="nc_i">val</span><span>.</span><span class="nc_i">output</span></span></span></span></code></pre>
-<h1>base_simple3#C#_val1</h1>
-<pre><code><span class="nitcode"><span class="nc_pdef foldable" id="base_simple3#C#_val1"><a id="base_simple3#C#val1"></a><a id="base_simple3#C#val1="></a><span class="line" id="L45">        <span class="nc_k">var</span> <span class="nc_def nc_i">val1</span><span>:</span> <span class="nc_t">Int</span></span></span></span></code></pre>
-<h1>base_simple3#C#val1</h1>
-<pre><code><span class="nitcode"><span class="nc_pdef foldable" id="base_simple3#C#_val1"><a id="base_simple3#C#val1"></a><a id="base_simple3#C#val1="></a><span class="line" id="L45">        <span class="nc_k">var</span> <span class="nc_def nc_i">val1</span><span>:</span> <span class="nc_t">Int</span></span></span></span></code></pre>
-<h1>base_simple3#C#val1=</h1>
-<pre><code><span class="nitcode"><span class="nc_pdef foldable" id="base_simple3#C#_val1"><a id="base_simple3#C#val1"></a><a id="base_simple3#C#val1="></a><span class="line" id="L45">        <span class="nc_k">var</span> <span class="nc_def nc_i">val1</span><span>:</span> <span class="nc_t">Int</span></span></span></span></code></pre>
-<h1>base_simple3#C#_val2</h1>
-<pre><code><span class="nitcode"><span class="nc_pdef foldable" id="base_simple3#C#_val2"><a id="base_simple3#C#val2"></a><a id="base_simple3#C#val2="></a><span class="line" id="L46">        <span class="nc_k">var</span> <span class="nc_def nc_i">val2</span><span>:</span> <span class="nc_t">Int</span> <span>=</span> <span class="nc_l">10</span></span></span></span></code></pre>
-<h1>base_simple3#C#val2</h1>
-<pre><code><span class="nitcode"><span class="nc_pdef foldable" id="base_simple3#C#_val2"><a id="base_simple3#C#val2"></a><a id="base_simple3#C#val2="></a><span class="line" id="L46">        <span class="nc_k">var</span> <span class="nc_def nc_i">val2</span><span>:</span> <span class="nc_t">Int</span> <span>=</span> <span class="nc_l">10</span></span></span></span></code></pre>
-<h1>base_simple3#C#val2=</h1>
-<pre><code><span class="nitcode"><span class="nc_pdef foldable" id="base_simple3#C#_val2"><a id="base_simple3#C#val2"></a><a id="base_simple3#C#val2="></a><span class="line" id="L46">        <span class="nc_k">var</span> <span class="nc_def nc_i">val2</span><span>:</span> <span class="nc_t">Int</span> <span>=</span> <span class="nc_l">10</span></span></span></span></code></pre>
-<h1>base_simple3#Sys#foo</h1>
-<pre><code><span class="nitcode"><span class="nc_pdef foldable" id="base_simple3#Sys#foo"><span class="line" id="L49"><span class="nc_k">fun</span> <span class="nc_def popupable" title="base_simple3#Sys#foo" data-title="&lt;a href=&#34;base_simple3.html#base_simple3#Sys#foo&#34;&gt;base_simple3#Sys#foo&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;fun&lt;&#47;b&gt; &lt;span&gt;foo&lt;span&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover"><span class="nc_i">foo</span></span> <span class="nc_k">do</span> <span class="nc_l">2</span><span>.</span><span class="nc_i">output</span></span></span></span></code></pre>
-<h1>base_simple3#Sys#bar</h1>
-<pre><code><span class="nitcode"><span class="nc_pdef foldable" id="base_simple3#Sys#bar"><span class="line" id="L50"><span class="nc_k">fun</span> <span class="nc_def popupable" title="base_simple3#Sys#bar" data-title="&lt;a href=&#34;base_simple3.html#base_simple3#Sys#bar&#34;&gt;base_simple3#Sys#bar&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;fun&lt;&#47;b&gt; &lt;span&gt;bar&lt;span&gt;(i: &lt;a href=&#34;base_simple3.html#base_simple3#Int&#34;&gt;Int&lt;&#47;a&gt;)&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover"><span class="nc_i">bar</span></span><span>(</span><span class="nc_v nc_i">i</span><span>:</span> <span class="nc_t">Int</span><span>)</span> <span class="nc_k">do</span> <span class="nc_v nc_i">i</span><span>.</span><span class="nc_i">output</span></span></span></span></code></pre>
-<h1>base_simple3#Sys#baz</h1>
-<pre><code><span class="nitcode"><span class="nc_pdef foldable" id="base_simple3#Sys#baz"><span class="line" id="L51"><span class="nc_k">fun</span> <span class="nc_def popupable" title="base_simple3#Sys#baz" data-title="&lt;a href=&#34;base_simple3.html#base_simple3#Sys#baz&#34;&gt;base_simple3#Sys#baz&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;fun&lt;&#47;b&gt; &lt;span&gt;baz&lt;span&gt;: &lt;a href=&#34;base_simple3.html#base_simple3#Int&#34;&gt;Int&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover"><span class="nc_i">baz</span></span><span>:</span> <span class="nc_t">Int</span> <span class="nc_k">do</span> <span class="nc_k">return</span> <span class="nc_l">4</span></span></span></span></code></pre>
-<h1>base_simple3#Sys#main</h1>
-<pre><code><span class="nitcode"><span class="nc_pdef foldable" id="base_simple3#Sys#main"><span class="line" id="L53"><span class="nc_l">1</span><span>.</span><span class="nc_i">output</span>
+<h1>base_simple3$B$run</h1>
+<pre><code><span class="nitcode"><span class="nc_pdef foldable" id="base_simple3$B$run"><span class="line" id="L41">   <span class="nc_k">fun</span> <span class="nc_def popupable" title="base_simple3$B$run" data-title="&lt;a href=&#34;base_simple3.html#base_simple3$B$run&#34;&gt;base_simple3$B$run&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;fun&lt;&#47;b&gt; &lt;span&gt;run&lt;span&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover"><span class="nc_i">run</span></span> <span class="nc_k">do</span> <span class="nc_i">val</span><span>.</span><span class="nc_i">output</span></span></span></span></code></pre>
+<h1>base_simple3$C$_val1</h1>
+<pre><code><span class="nitcode"><span class="nc_pdef foldable" id="base_simple3$C$_val1"><a id="base_simple3$C$val1"></a><a id="base_simple3$C$val1="></a><span class="line" id="L45">        <span class="nc_k">var</span> <span class="nc_def nc_i">val1</span><span>:</span> <span class="nc_t">Int</span></span></span></span></code></pre>
+<h1>base_simple3$C$val1</h1>
+<pre><code><span class="nitcode"><span class="nc_pdef foldable" id="base_simple3$C$_val1"><a id="base_simple3$C$val1"></a><a id="base_simple3$C$val1="></a><span class="line" id="L45">        <span class="nc_k">var</span> <span class="nc_def nc_i">val1</span><span>:</span> <span class="nc_t">Int</span></span></span></span></code></pre>
+<h1>base_simple3$C$val1=</h1>
+<pre><code><span class="nitcode"><span class="nc_pdef foldable" id="base_simple3$C$_val1"><a id="base_simple3$C$val1"></a><a id="base_simple3$C$val1="></a><span class="line" id="L45">        <span class="nc_k">var</span> <span class="nc_def nc_i">val1</span><span>:</span> <span class="nc_t">Int</span></span></span></span></code></pre>
+<h1>base_simple3$C$_val2</h1>
+<pre><code><span class="nitcode"><span class="nc_pdef foldable" id="base_simple3$C$_val2"><a id="base_simple3$C$val2"></a><a id="base_simple3$C$val2="></a><span class="line" id="L46">        <span class="nc_k">var</span> <span class="nc_def nc_i">val2</span><span>:</span> <span class="nc_t">Int</span> <span>=</span> <span class="nc_l">10</span></span></span></span></code></pre>
+<h1>base_simple3$C$val2</h1>
+<pre><code><span class="nitcode"><span class="nc_pdef foldable" id="base_simple3$C$_val2"><a id="base_simple3$C$val2"></a><a id="base_simple3$C$val2="></a><span class="line" id="L46">        <span class="nc_k">var</span> <span class="nc_def nc_i">val2</span><span>:</span> <span class="nc_t">Int</span> <span>=</span> <span class="nc_l">10</span></span></span></span></code></pre>
+<h1>base_simple3$C$val2=</h1>
+<pre><code><span class="nitcode"><span class="nc_pdef foldable" id="base_simple3$C$_val2"><a id="base_simple3$C$val2"></a><a id="base_simple3$C$val2="></a><span class="line" id="L46">        <span class="nc_k">var</span> <span class="nc_def nc_i">val2</span><span>:</span> <span class="nc_t">Int</span> <span>=</span> <span class="nc_l">10</span></span></span></span></code></pre>
+<h1>base_simple3$Sys$foo</h1>
+<pre><code><span class="nitcode"><span class="nc_pdef foldable" id="base_simple3$Sys$foo"><span class="line" id="L49"><span class="nc_k">fun</span> <span class="nc_def popupable" title="base_simple3$Sys$foo" data-title="&lt;a href=&#34;base_simple3.html#base_simple3$Sys$foo&#34;&gt;base_simple3$Sys$foo&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;fun&lt;&#47;b&gt; &lt;span&gt;foo&lt;span&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover"><span class="nc_i">foo</span></span> <span class="nc_k">do</span> <span class="nc_l">2</span><span>.</span><span class="nc_i">output</span></span></span></span></code></pre>
+<h1>base_simple3$Sys$bar</h1>
+<pre><code><span class="nitcode"><span class="nc_pdef foldable" id="base_simple3$Sys$bar"><span class="line" id="L50"><span class="nc_k">fun</span> <span class="nc_def popupable" title="base_simple3$Sys$bar" data-title="&lt;a href=&#34;base_simple3.html#base_simple3$Sys$bar&#34;&gt;base_simple3$Sys$bar&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;fun&lt;&#47;b&gt; &lt;span&gt;bar&lt;span&gt;(i: &lt;a href=&#34;base_simple3.html#base_simple3$Int&#34;&gt;Int&lt;&#47;a&gt;)&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover"><span class="nc_i">bar</span></span><span>(</span><span class="nc_v nc_i">i</span><span>:</span> <span class="nc_t">Int</span><span>)</span> <span class="nc_k">do</span> <span class="nc_v nc_i">i</span><span>.</span><span class="nc_i">output</span></span></span></span></code></pre>
+<h1>base_simple3$Sys$baz</h1>
+<pre><code><span class="nitcode"><span class="nc_pdef foldable" id="base_simple3$Sys$baz"><span class="line" id="L51"><span class="nc_k">fun</span> <span class="nc_def popupable" title="base_simple3$Sys$baz" data-title="&lt;a href=&#34;base_simple3.html#base_simple3$Sys$baz&#34;&gt;base_simple3$Sys$baz&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;fun&lt;&#47;b&gt; &lt;span&gt;baz&lt;span&gt;: &lt;a href=&#34;base_simple3.html#base_simple3$Int&#34;&gt;Int&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover"><span class="nc_i">baz</span></span><span>:</span> <span class="nc_t">Int</span> <span class="nc_k">do</span> <span class="nc_k">return</span> <span class="nc_l">4</span></span></span></span></code></pre>
+<h1>base_simple3$Sys$main</h1>
+<pre><code><span class="nitcode"><span class="nc_pdef foldable" id="base_simple3$Sys$main"><span class="line" id="L53"><span class="nc_l">1</span><span>.</span><span class="nc_i">output</span>
 </span><span class="line" id="L54"><span class="nc_i">foo</span>
 </span><span class="line" id="L55"><span class="nc_i">bar</span><span>(</span><span class="nc_l">3</span><span>)</span>
 </span><span class="line" id="L56"><span class="nc_i">baz</span><span>.</span><span class="nc_i">output</span>
 <h2>AST node: AModule at base_simple3.nit:17,1--66,13</h2>
 <pre><code><span class="nitcode"><span class="line" id="L17"><span class="nc_k">import</span> <span class="nc_k">end</span>
 </span><span class="line" id="L18">
-</span><span class="nc_cdef foldable" id="base_simple3#Object"><span class="line" id="L19"><span class="nc_k">interface</span> <span class="nc_t">Object</span>
+</span><span class="nc_cdef foldable" id="base_simple3$Object"><span class="line" id="L19"><span class="nc_k">interface</span> <span class="nc_t">Object</span>
 </span><span class="line" id="L20"><span class="nc_k">end</span>
 </span></span><span class="line" id="L21">
-</span><span class="nc_cdef foldable" id="base_simple3#Bool"><span class="line" id="L22"><span class="nc_k">enum</span> <span class="nc_t">Bool</span>
+</span><span class="nc_cdef foldable" id="base_simple3$Bool"><span class="line" id="L22"><span class="nc_k">enum</span> <span class="nc_t">Bool</span>
 </span><span class="line" id="L23"><span class="nc_k">end</span>
 </span></span><span class="line" id="L24">
-</span><span class="nc_cdef foldable" id="base_simple3#Int"><span class="line" id="L25"><span class="nc_k">enum</span> <span class="nc_t">Int</span>
-</span><span class="nc_pdef foldable" id="base_simple3#Int#output"><span class="line" id="L26">        <span class="nc_k">fun</span> <span class="nc_def popupable" title="base_simple3#Int#output" data-title="&lt;a href=&#34;base_simple3.html#base_simple3#Int#output&#34;&gt;base_simple3#Int#output&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;fun&lt;&#47;b&gt; &lt;span&gt;output&lt;span&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover"><span class="nc_i">output</span></span> <span class="nc_k">is</span> <span class="nc_i">intern</span>
+</span><span class="nc_cdef foldable" id="base_simple3$Int"><span class="line" id="L25"><span class="nc_k">enum</span> <span class="nc_t">Int</span>
+</span><span class="nc_pdef foldable" id="base_simple3$Int$output"><span class="line" id="L26">        <span class="nc_k">fun</span> <span class="nc_def popupable" title="base_simple3$Int$output" data-title="&lt;a href=&#34;base_simple3.html#base_simple3$Int$output&#34;&gt;base_simple3$Int$output&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;fun&lt;&#47;b&gt; &lt;span&gt;output&lt;span&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover"><span class="nc_i">output</span></span> <span class="nc_k">is</span> <span class="nc_i">intern</span>
 </span></span><span class="line" id="L27"><span class="nc_k">end</span>
 </span></span><span class="line" id="L28">
-</span><span class="nc_cdef foldable" id="base_simple3#A"><span class="line" id="L29"><span class="nc_k">class</span> <span class="nc_t">A</span>
-</span><span class="nc_pdef foldable" id="base_simple3#A#init"><span class="line" id="L30">    <span class="nc_k">init</span> <span class="nc_k">do</span> <span class="nc_l">5</span><span>.</span><span class="nc_i">output</span>
-</span></span><span class="nc_pdef foldable" id="base_simple3#A#run"><span class="line" id="L31">      <span class="nc_k">fun</span> <span class="nc_def popupable" title="base_simple3#A#run" data-title="&lt;a href=&#34;base_simple3.html#base_simple3#A#run&#34;&gt;base_simple3#A#run&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;fun&lt;&#47;b&gt; &lt;span&gt;run&lt;span&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover"><span class="nc_i">run</span></span> <span class="nc_k">do</span> <span class="nc_l">6</span><span>.</span><span class="nc_i">output</span>
+</span><span class="nc_cdef foldable" id="base_simple3$A"><span class="line" id="L29"><span class="nc_k">class</span> <span class="nc_t">A</span>
+</span><span class="nc_pdef foldable" id="base_simple3$A$init"><span class="line" id="L30">    <span class="nc_k">init</span> <span class="nc_k">do</span> <span class="nc_l">5</span><span>.</span><span class="nc_i">output</span>
+</span></span><span class="nc_pdef foldable" id="base_simple3$A$run"><span class="line" id="L31">      <span class="nc_k">fun</span> <span class="nc_def popupable" title="base_simple3$A$run" data-title="&lt;a href=&#34;base_simple3.html#base_simple3$A$run&#34;&gt;base_simple3$A$run&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;fun&lt;&#47;b&gt; &lt;span&gt;run&lt;span&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover"><span class="nc_i">run</span></span> <span class="nc_k">do</span> <span class="nc_l">6</span><span>.</span><span class="nc_i">output</span>
 </span></span><span class="line" id="L32"><span class="nc_k">end</span>
 </span></span><span class="line" id="L33">
-</span><span class="nc_cdef foldable" id="base_simple3#B"><span class="line" id="L34"><span class="nc_k">class</span> <span class="nc_t">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 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 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 class="line" id="L40">    <span class="nc_k">end</span>
-</span></span><span class="nc_pdef foldable" id="base_simple3#B#run"><span class="line" id="L41">      <span class="nc_k">fun</span> <span class="nc_def popupable" title="base_simple3#B#run" data-title="&lt;a href=&#34;base_simple3.html#base_simple3#B#run&#34;&gt;base_simple3#B#run&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;fun&lt;&#47;b&gt; &lt;span&gt;run&lt;span&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover"><span class="nc_i">run</span></span> <span class="nc_k">do</span> <span class="nc_i">val</span><span>.</span><span class="nc_i">output</span>
+</span></span><span class="nc_pdef foldable" id="base_simple3$B$run"><span class="line" id="L41">      <span class="nc_k">fun</span> <span class="nc_def popupable" title="base_simple3$B$run" data-title="&lt;a href=&#34;base_simple3.html#base_simple3$B$run&#34;&gt;base_simple3$B$run&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;fun&lt;&#47;b&gt; &lt;span&gt;run&lt;span&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover"><span class="nc_i">run</span></span> <span class="nc_k">do</span> <span class="nc_i">val</span><span>.</span><span class="nc_i">output</span>
 </span></span><span class="line" id="L42"><span class="nc_k">end</span>
 </span></span><span class="line" id="L43">
-</span><span class="nc_cdef foldable" id="base_simple3#C"><span class="line" id="L44"><span class="nc_k">class</span> <span class="nc_t">C</span>
-</span><span class="nc_pdef foldable" id="base_simple3#C#_val1"><a id="base_simple3#C#val1"></a><a id="base_simple3#C#val1="></a><span class="line" id="L45">  <span class="nc_k">var</span> <span class="nc_def nc_i">val1</span><span>:</span> <span class="nc_t">Int</span>
-</span></span><span class="nc_pdef foldable" id="base_simple3#C#_val2"><a id="base_simple3#C#val2"></a><a id="base_simple3#C#val2="></a><span class="line" id="L46">   <span class="nc_k">var</span> <span class="nc_def nc_i">val2</span><span>:</span> <span class="nc_t">Int</span> <span>=</span> <span class="nc_l">10</span>
+</span><span class="nc_cdef foldable" id="base_simple3$C"><span class="line" id="L44"><span class="nc_k">class</span> <span class="nc_t">C</span>
+</span><span class="nc_pdef foldable" id="base_simple3$C$_val1"><a id="base_simple3$C$val1"></a><a id="base_simple3$C$val1="></a><span class="line" id="L45">  <span class="nc_k">var</span> <span class="nc_def nc_i">val1</span><span>:</span> <span class="nc_t">Int</span>
+</span></span><span class="nc_pdef foldable" id="base_simple3$C$_val2"><a id="base_simple3$C$val2"></a><a id="base_simple3$C$val2="></a><span class="line" id="L46">   <span class="nc_k">var</span> <span class="nc_def nc_i">val2</span><span>:</span> <span class="nc_t">Int</span> <span>=</span> <span class="nc_l">10</span>
 </span></span><span class="line" id="L47"><span class="nc_k">end</span>
 </span></span><span class="line" id="L48">
-</span><span class="nc_pdef foldable" id="base_simple3#Sys#foo"><span class="line" id="L49"><span class="nc_k">fun</span> <span class="nc_def popupable" title="base_simple3#Sys#foo" data-title="&lt;a href=&#34;base_simple3.html#base_simple3#Sys#foo&#34;&gt;base_simple3#Sys#foo&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;fun&lt;&#47;b&gt; &lt;span&gt;foo&lt;span&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover"><span class="nc_i">foo</span></span> <span class="nc_k">do</span> <span class="nc_l">2</span><span>.</span><span class="nc_i">output</span>
-</span></span><span class="nc_pdef foldable" id="base_simple3#Sys#bar"><span class="line" id="L50"><span class="nc_k">fun</span> <span class="nc_def popupable" title="base_simple3#Sys#bar" data-title="&lt;a href=&#34;base_simple3.html#base_simple3#Sys#bar&#34;&gt;base_simple3#Sys#bar&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;fun&lt;&#47;b&gt; &lt;span&gt;bar&lt;span&gt;(i: &lt;a href=&#34;base_simple3.html#base_simple3#Int&#34;&gt;Int&lt;&#47;a&gt;)&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover"><span class="nc_i">bar</span></span><span>(</span><span class="nc_v nc_i">i</span><span>:</span> <span class="nc_t">Int</span><span>)</span> <span class="nc_k">do</span> <span class="nc_v nc_i">i</span><span>.</span><span class="nc_i">output</span>
-</span></span><span class="nc_pdef foldable" id="base_simple3#Sys#baz"><span class="line" id="L51"><span class="nc_k">fun</span> <span class="nc_def popupable" title="base_simple3#Sys#baz" data-title="&lt;a href=&#34;base_simple3.html#base_simple3#Sys#baz&#34;&gt;base_simple3#Sys#baz&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;fun&lt;&#47;b&gt; &lt;span&gt;baz&lt;span&gt;: &lt;a href=&#34;base_simple3.html#base_simple3#Int&#34;&gt;Int&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover"><span class="nc_i">baz</span></span><span>:</span> <span class="nc_t">Int</span> <span class="nc_k">do</span> <span class="nc_k">return</span> <span class="nc_l">4</span>
+</span><span class="nc_pdef foldable" id="base_simple3$Sys$foo"><span class="line" id="L49"><span class="nc_k">fun</span> <span class="nc_def popupable" title="base_simple3$Sys$foo" data-title="&lt;a href=&#34;base_simple3.html#base_simple3$Sys$foo&#34;&gt;base_simple3$Sys$foo&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;fun&lt;&#47;b&gt; &lt;span&gt;foo&lt;span&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover"><span class="nc_i">foo</span></span> <span class="nc_k">do</span> <span class="nc_l">2</span><span>.</span><span class="nc_i">output</span>
+</span></span><span class="nc_pdef foldable" id="base_simple3$Sys$bar"><span class="line" id="L50"><span class="nc_k">fun</span> <span class="nc_def popupable" title="base_simple3$Sys$bar" data-title="&lt;a href=&#34;base_simple3.html#base_simple3$Sys$bar&#34;&gt;base_simple3$Sys$bar&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;fun&lt;&#47;b&gt; &lt;span&gt;bar&lt;span&gt;(i: &lt;a href=&#34;base_simple3.html#base_simple3$Int&#34;&gt;Int&lt;&#47;a&gt;)&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover"><span class="nc_i">bar</span></span><span>(</span><span class="nc_v nc_i">i</span><span>:</span> <span class="nc_t">Int</span><span>)</span> <span class="nc_k">do</span> <span class="nc_v nc_i">i</span><span>.</span><span class="nc_i">output</span>
+</span></span><span class="nc_pdef foldable" id="base_simple3$Sys$baz"><span class="line" id="L51"><span class="nc_k">fun</span> <span class="nc_def popupable" title="base_simple3$Sys$baz" data-title="&lt;a href=&#34;base_simple3.html#base_simple3$Sys$baz&#34;&gt;base_simple3$Sys$baz&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;fun&lt;&#47;b&gt; &lt;span&gt;baz&lt;span&gt;: &lt;a href=&#34;base_simple3.html#base_simple3$Int&#34;&gt;Int&lt;&#47;a&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover"><span class="nc_i">baz</span></span><span>:</span> <span class="nc_t">Int</span> <span class="nc_k">do</span> <span class="nc_k">return</span> <span class="nc_l">4</span>
 </span></span><span class="line" id="L52">
-</span><span class="nc_pdef foldable" id="base_simple3#Sys#main"><span class="line" id="L53"><span class="nc_l">1</span><span>.</span><span class="nc_i">output</span>
+</span><span class="nc_pdef foldable" id="base_simple3$Sys$main"><span class="line" id="L53"><span class="nc_l">1</span><span>.</span><span class="nc_i">output</span>
 </span><span class="line" id="L54"><span class="nc_i">foo</span>
 </span><span class="line" id="L55"><span class="nc_i">bar</span><span>(</span><span class="nc_l">3</span><span>)</span>
 </span><span class="line" id="L56"><span class="nc_i">baz</span><span>.</span><span class="nc_i">output</span>
 <h2>AST node: TKwend at base_simple3.nit:17,8--10</h2>
 <pre><code><span class="nitcode"><span class="line" id="L17"> <span class="nc_k">end</span></span></span></code></pre>
 <h2>AST node: AStdClassdef at base_simple3.nit:19,1--20,3</h2>
-<pre><code><span class="nitcode"><span class="nc_cdef foldable" id="base_simple3#Object"><span class="line" id="L19"><span class="nc_k">interface</span> <span class="nc_t">Object</span>
+<pre><code><span class="nitcode"><span class="nc_cdef foldable" id="base_simple3$Object"><span class="line" id="L19"><span class="nc_k">interface</span> <span class="nc_t">Object</span>
 </span><span class="line" id="L20"><span class="nc_k">end</span></span></span></span></code></pre>
 <h2>AST node: AInterfaceClasskind at base_simple3.nit:19,1--9</h2>
 <pre><code><span class="nitcode"><span class="line" id="L19"><span class="nc_k">interface</span></span></span></code></pre>
 <h2>AST node: TKwenum at base_simple3.nit:22,1--4</h2>
 <pre><code><span class="nitcode"><span class="line" id="L22"><span class="nc_k">enum</span></span></span></code></pre>
 <h2>AST node: AMethPropdef at base_simple3.nit:26,2--21</h2>
-<pre><code><span class="nitcode"><span class="nc_pdef foldable" id="base_simple3#Int#output"><span class="line" id="L26">      <span class="nc_k">fun</span> <span class="nc_def popupable" title="base_simple3#Int#output" data-title="&lt;a href=&#34;base_simple3.html#base_simple3#Int#output&#34;&gt;base_simple3#Int#output&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;fun&lt;&#47;b&gt; &lt;span&gt;output&lt;span&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover"><span class="nc_i">output</span></span> <span class="nc_k">is</span> <span class="nc_i">intern</span></span></span></span></code></pre>
+<pre><code><span class="nitcode"><span class="nc_pdef foldable" id="base_simple3$Int$output"><span class="line" id="L26">      <span class="nc_k">fun</span> <span class="nc_def popupable" title="base_simple3$Int$output" data-title="&lt;a href=&#34;base_simple3.html#base_simple3$Int$output&#34;&gt;base_simple3$Int$output&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;fun&lt;&#47;b&gt; &lt;span&gt;output&lt;span&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover"><span class="nc_i">output</span></span> <span class="nc_k">is</span> <span class="nc_i">intern</span></span></span></span></code></pre>
 <h2>AST node: TKwmeth at base_simple3.nit:26,2--4</h2>
-<pre><code><span class="nc_pdef foldable" id="base_simple3#Int#output"><span class="line" id="L26">    <span class="nc_k">fun</span></span></span></code></pre>
+<pre><code><span class="nc_pdef foldable" id="base_simple3$Int$output"><span class="line" id="L26">    <span class="nc_k">fun</span></span></span></code></pre>
 <h2>AST node: AIdMethid at base_simple3.nit:26,6--11</h2>
-<pre><code><span class="nitcode"><span class="nc_def popupable foldable" title="base_simple3#Int#output" data-title="&lt;a href=&#34;base_simple3.html#base_simple3#Int#output&#34;&gt;base_simple3#Int#output&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;fun&lt;&#47;b&gt; &lt;span&gt;output&lt;span&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover"><span class="line" id="L26"> <span class="nc_i">output</span></span></span></span></code></pre>
+<pre><code><span class="nitcode"><span class="nc_def popupable foldable" title="base_simple3$Int$output" data-title="&lt;a href=&#34;base_simple3.html#base_simple3$Int$output&#34;&gt;base_simple3$Int$output&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;fun&lt;&#47;b&gt; &lt;span&gt;output&lt;span&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover"><span class="line" id="L26"> <span class="nc_i">output</span></span></span></span></code></pre>
 <h2>AST node: TId at base_simple3.nit:26,6--11</h2>
-<pre><code><span class="nitcode"><span class="nc_def popupable foldable" title="base_simple3#Int#output" data-title="&lt;a href=&#34;base_simple3.html#base_simple3#Int#output&#34;&gt;base_simple3#Int#output&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;fun&lt;&#47;b&gt; &lt;span&gt;output&lt;span&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover"><span class="line" id="L26"> <span class="nc_i">output</span></span></span></span></code></pre>
+<pre><code><span class="nitcode"><span class="nc_def popupable foldable" title="base_simple3$Int$output" data-title="&lt;a href=&#34;base_simple3.html#base_simple3$Int$output&#34;&gt;base_simple3$Int$output&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;fun&lt;&#47;b&gt; &lt;span&gt;output&lt;span&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover"><span class="line" id="L26"> <span class="nc_i">output</span></span></span></span></code></pre>
 <h2>AST node: ASignature at base_simple3.nit:26,13</h2>
 <pre><code><span class="nitcode"></span></code></pre>
 <h2>AST node: AAnnotations at base_simple3.nit:26,13--21</h2>
 <h2>AST node: TKwclass at base_simple3.nit:29,1--5</h2>
 <pre><code><span class="nitcode"><span class="line" id="L29"><span class="nc_k">class</span></span></span></code></pre>
 <h2>AST node: TKwinit at base_simple3.nit:30,2--5</h2>
-<pre><code><span class="nc_pdef foldable" id="base_simple3#A#init"><span class="line" id="L30">        <span class="nc_k">init</span></span></span></code></pre>
+<pre><code><span class="nc_pdef foldable" id="base_simple3$A$init"><span class="line" id="L30">        <span class="nc_k">init</span></span></span></code></pre>
 <h2>AST node: TKwdo at base_simple3.nit:30,7--8</h2>
 <pre><code><span class="nitcode"><span class="line" id="L30"> <span class="nc_k">do</span></span></span></code></pre>
 <h2>AST node: ACallExpr at base_simple3.nit:30,10--17</h2>
 <h2>AST node: AListExprs at base_simple3.nit:30,17</h2>
 <pre><code><span class="nitcode"></span></code></pre>
 <h2>AST node: AAttrPropdef at base_simple3.nit:35,2--13</h2>
-<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>
+<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>
 <h2>AST node: TKwvar at base_simple3.nit:35,2--4</h2>
-<pre><code><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></span></code></pre>
+<pre><code><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></span></code></pre>
 <h2>AST node: AType at base_simple3.nit:35,11--13</h2>
 <pre><code><span class="nitcode"><span class="line" id="L35"> <span class="nc_t">Int</span></span></span></code></pre>
 <h2>AST node: TOpar at base_simple3.nit:36,6</h2>
 <h2>AST node: AImplicitSelfExpr at base_simple3.nit:41,13</h2>
 <pre><code><span class="nitcode"></span></code></pre>
 <h2>AST node: ATopClassdef at base_simple3.nit:49,1--19</h2>
-<pre><code><span class="nitcode"><span class="nc_pdef foldable" id="base_simple3#Sys#foo"><span class="line" id="L49"><span class="nc_k">fun</span> <span class="nc_def popupable" title="base_simple3#Sys#foo" data-title="&lt;a href=&#34;base_simple3.html#base_simple3#Sys#foo&#34;&gt;base_simple3#Sys#foo&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;fun&lt;&#47;b&gt; &lt;span&gt;foo&lt;span&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover"><span class="nc_i">foo</span></span> <span class="nc_k">do</span> <span class="nc_l">2</span><span>.</span><span class="nc_i">output</span></span></span></span></code></pre>
+<pre><code><span class="nitcode"><span class="nc_pdef foldable" id="base_simple3$Sys$foo"><span class="line" id="L49"><span class="nc_k">fun</span> <span class="nc_def popupable" title="base_simple3$Sys$foo" data-title="&lt;a href=&#34;base_simple3.html#base_simple3$Sys$foo&#34;&gt;base_simple3$Sys$foo&lt;&#47;a&gt;" data-content="&lt;div&gt;&lt;b&gt;fun&lt;&#47;b&gt; &lt;span&gt;foo&lt;span&gt;&lt;&#47;span&gt;&lt;&#47;span&gt;&lt;br&#47;&gt;&lt;&#47;div&gt;" data-toggle="popover"><span class="nc_i">foo</span></span> <span class="nc_k">do</span> <span class="nc_l">2</span><span>.</span><span class="nc_i">output</span></span></span></span></code></pre>
 <h2>AST node: AReturnExpr at base_simple3.nit:51,17--24</h2>
 <pre><code><span class="nitcode"><span class="line" id="L51"> <span class="nc_k">return</span> <span class="nc_l">4</span></span></span></code></pre>
 <h2>AST node: TKwreturn at base_simple3.nit:51,17--22</h2>
 <pre><code><span class="nitcode"><span class="line" id="L51"> <span class="nc_k">return</span></span></span></code></pre>
 <h2>AST node: AMainClassdef at base_simple3.nit:53,1--66,13</h2>
-<pre><code><span class="nitcode"><span class="nc_pdef foldable" id="base_simple3#Sys#main"><span class="line" id="L53"><span class="nc_l">1</span><span>.</span><span class="nc_i">output</span>
+<pre><code><span class="nitcode"><span class="nc_pdef foldable" id="base_simple3$Sys$main"><span class="line" id="L53"><span class="nc_l">1</span><span>.</span><span class="nc_i">output</span>
 </span><span class="line" id="L54"><span class="nc_i">foo</span>
 </span><span class="line" id="L55"><span class="nc_i">bar</span><span>(</span><span class="nc_l">3</span><span>)</span>
 </span><span class="line" id="L56"><span class="nc_i">baz</span><span>.</span><span class="nc_i">output</span>
 </span><span class="line" id="L65"><span class="nc_v nc_i">c</span><span>.</span><span class="nc_i">val1</span><span>.</span><span class="nc_i">output</span>
 </span><span class="line" id="L66"><span class="nc_v nc_i">c</span><span>.</span><span class="nc_i">val2</span><span>.</span><span class="nc_i">output</span></span></span></span></code></pre>
 <h2>AST node: AMainMethPropdef at base_simple3.nit:53,1--66,13</h2>
-<pre><code><span class="nitcode"><span class="nc_pdef foldable" id="base_simple3#Sys#main"><span class="line" id="L53"><span class="nc_l">1</span><span>.</span><span class="nc_i">output</span>
+<pre><code><span class="nitcode"><span class="nc_pdef foldable" id="base_simple3$Sys$main"><span class="line" id="L53"><span class="nc_l">1</span><span>.</span><span class="nc_i">output</span>
 </span><span class="line" id="L54"><span class="nc_i">foo</span>
 </span><span class="line" id="L55"><span class="nc_i">bar</span><span>(</span><span class="nc_l">3</span><span>)</span>
 </span><span class="line" id="L56"><span class="nc_i">baz</span><span>.</span><span class="nc_i">output</span>
index b058aab..c19ddce 100644 (file)
@@ -50,3 +50,118 @@ All public entities:
 
 All documented public entities:
  list:
+
+Names:
+
+# Classes of entities
+ population: 9
+ minimum value: 1
+ maximum value: 17
+ total value: 55
+ average value: 6.11
+ distribution:
+  <=1: sub-population=3 (33.33%); cumulated value=3 (5.45%)
+  <=4: sub-population=2 (22.22%); cumulated value=6 (10.90%)
+  <=8: sub-population=2 (22.22%); cumulated value=14 (25.45%)
+  <=16: sub-population=1 (11.11%); cumulated value=15 (27.27%)
+  <=32: sub-population=1 (11.11%); cumulated value=17 (30.90%)
+ list:
+  MMethodDef: 17 (30.90%)
+  MMethod: 15 (27.27%)
+  MClassDef: 7 (12.72%)
+  MClass: 7 (12.72%)
+  MAttributeDef: 3 (5.45%)
+  MAttribute: 3 (5.45%)
+  MPackage: 1 (1.81%)
+  MGroup: 1 (1.81%)
+  MModule: 1 (1.81%)
+
+# Name length of entities
+ population: 55
+ minimum value: 12
+ maximum value: 36
+ total value: 1124
+ average value: 20.43
+ distribution:
+  <=12: sub-population=1 (1.81%); cumulated value=12 (1.06%)
+  <=24: sub-population=46 (83.63%); cumulated value=874 (77.75%)
+  <=48: sub-population=8 (14.54%); cumulated value=238 (21.17%)
+ list:
+  base_simple3::base_simple3::C::_val2: 36 (3.20%)
+  base_simple3::base_simple3::C::_val1: 36 (3.20%)
+  base_simple3::base_simple3::B::_val: 35 (3.11%)
+  base_simple3$A$Object::init: 27 (2.40%)
+  base_simple3$C$Object::init: 27 (2.40%)
+  base_simple3::base_simple3: 26 (2.31%)
+  base_simple3::Object::init: 26 (2.31%)
+  base_simple3::Int::output: 25 (2.22%)
+  base_simple3$Object$init: 24 (2.13%)
+  base_simple3::Sys::main: 23 (2.04%)
+  ...
+  base_simple3$Sys: 16 (1.42%)
+  base_simple3$Int: 16 (1.42%)
+  base_simple3::A: 15 (1.33%)
+  base_simple3::B: 15 (1.33%)
+  base_simple3::C: 15 (1.33%)
+  base_simple3$B: 14 (1.24%)
+  base_simple3$C: 14 (1.24%)
+  base_simple3$A: 14 (1.24%)
+  base_simple3>: 13 (1.15%)
+  base_simple3: 12 (1.06%)
+
+# All entities
+base_simple3   MPackage        
+base_simple3>  MGroup  
+base_simple3::base_simple3     MModule 
+base_simple3::Object   MClass  
+base_simple3$Object    MClassDef       
+base_simple3::Object::init     MMethod 
+base_simple3$Object$init       MMethodDef      
+base_simple3::Bool     MClass  
+base_simple3$Bool      MClassDef       
+base_simple3::Int      MClass  
+base_simple3$Int       MClassDef       
+base_simple3::Int::output      MMethod 
+base_simple3$Int$output        MMethodDef      
+base_simple3::A        MClass  
+base_simple3$A MClassDef       
+base_simple3$A$Object::init    MMethodDef      
+base_simple3::A::run   MMethod 
+base_simple3$A$run     MMethodDef      
+base_simple3::B        MClass  
+base_simple3$B MClassDef       
+base_simple3::base_simple3::B::_val    MAttribute      
+base_simple3$B$_val    MAttributeDef   
+base_simple3::B::val   MMethod 
+base_simple3$B$val     MMethodDef      
+base_simple3::B::val=  MMethod 
+base_simple3$B$val=    MMethodDef      
+base_simple3::B::init  MMethod 
+base_simple3$B$init    MMethodDef      
+base_simple3::B::run   MMethod 
+base_simple3$B$run     MMethodDef      
+base_simple3::C        MClass  
+base_simple3$C MClassDef       
+base_simple3::base_simple3::C::_val1   MAttribute      
+base_simple3$C$_val1   MAttributeDef   
+base_simple3::C::val1  MMethod 
+base_simple3$C$val1    MMethodDef      
+base_simple3::C::val1= MMethod 
+base_simple3$C$val1=   MMethodDef      
+base_simple3::base_simple3::C::_val2   MAttribute      
+base_simple3$C$_val2   MAttributeDef   
+base_simple3::C::val2  MMethod 
+base_simple3$C$val2    MMethodDef      
+base_simple3::C::val2= MMethod 
+base_simple3$C$val2=   MMethodDef      
+base_simple3$C$Object::init    MMethodDef      
+base_simple3::Sys      MClass  
+base_simple3$Sys       MClassDef       
+base_simple3::Sys::foo MMethod 
+base_simple3$Sys$foo   MMethodDef      
+base_simple3::Sys::bar MMethod 
+base_simple3$Sys$bar   MMethodDef      
+base_simple3::Sys::baz MMethod 
+base_simple3$Sys$baz   MMethodDef      
+base_simple3::Sys::main        MMethod 
+base_simple3$Sys$main  MMethodDef      
diff --git a/tests/sav/test_model_visitor_args2.res b/tests/sav/test_model_visitor_args2.res
new file mode 100644 (file)
index 0000000..46ed3c4
--- /dev/null
@@ -0,0 +1,177 @@
+All entities, including fictive ones:
+ list:
+  MMethodDef: 33 (46.47%)
+  MClassDef: 15 (21.12%)
+  MMethod: 8 (11.26%)
+  MClass: 8 (11.26%)
+  MModule: 4 (5.63%)
+  MGroup: 1 (1.40%)
+  MPackage: 1 (1.40%)
+  Model: 1 (1.40%)
+All entities:
+ list:
+  MMethodDef: 33 (46.47%)
+  MClassDef: 15 (21.12%)
+  MMethod: 8 (11.26%)
+  MClass: 8 (11.26%)
+  MModule: 4 (5.63%)
+  MGroup: 1 (1.40%)
+  MPackage: 1 (1.40%)
+  Model: 1 (1.40%)
+
+All non-private entities:
+ list:
+  MMethodDef: 10 (29.41%)
+  MClassDef: 8 (23.52%)
+  MMethod: 5 (14.70%)
+  MClass: 4 (11.76%)
+  MModule: 4 (11.76%)
+  MGroup: 1 (2.94%)
+  MPackage: 1 (2.94%)
+  Model: 1 (2.94%)
+
+All documented non-private entities:
+ list:
+
+All public entities:
+ list:
+  MMethodDef: 10 (29.41%)
+  MClassDef: 8 (23.52%)
+  MMethod: 5 (14.70%)
+  MClass: 4 (11.76%)
+  MModule: 4 (11.76%)
+  MGroup: 1 (2.94%)
+  MPackage: 1 (2.94%)
+  Model: 1 (2.94%)
+
+All documented public entities:
+ list:
+
+Names:
+
+# Classes of entities
+ population: 7
+ minimum value: 1
+ maximum value: 33
+ total value: 70
+ average value: 10.00
+ distribution:
+  <=1: sub-population=2 (28.57%); cumulated value=2 (2.85%)
+  <=4: sub-population=1 (14.28%); cumulated value=4 (5.71%)
+  <=8: sub-population=2 (28.57%); cumulated value=16 (22.85%)
+  <=16: sub-population=1 (14.28%); cumulated value=15 (21.42%)
+  <=64: sub-population=1 (14.28%); cumulated value=33 (47.14%)
+ list:
+  MMethodDef: 33 (47.14%)
+  MClassDef: 15 (21.42%)
+  MMethod: 8 (11.42%)
+  MClass: 8 (11.42%)
+  MModule: 4 (5.71%)
+  MGroup: 1 (1.42%)
+  MPackage: 1 (1.42%)
+
+# Name length of entities
+ population: 70
+ minimum value: 5
+ maximum value: 29
+ total value: 1045
+ average value: 14.92
+ distribution:
+  <=5: sub-population=1 (1.42%); cumulated value=5 (0.47%)
+  <=10: sub-population=13 (18.57%); cumulated value=109 (10.43%)
+  <=20: sub-population=44 (62.85%); cumulated value=637 (60.95%)
+  <=40: sub-population=12 (17.14%); cumulated value=294 (28.13%)
+ list:
+  names::n3$::n1::P1$::n0::P::p: 29 (2.77%)
+  names::n1$::n0::P0$::n0::A::z: 29 (2.77%)
+  names::n1$::n0::P0$::n0::P::p: 29 (2.77%)
+  names::n3$::n1::P1$A::a: 23 (2.20%)
+  names::n1$A0$::n0::A::z: 23 (2.20%)
+  names::n1$A0$::n0::P::p: 23 (2.20%)
+  names::n0$P0$::n0::A::z: 23 (2.20%)
+  names::n0$P0$::n0::P::p: 23 (2.20%)
+  names::n3$A1$::n0::P::p: 23 (2.20%)
+  names::n1$::n0::P0$A::a: 23 (2.20%)
+  ...
+  names::n0: 9 (0.86%)
+  names$A$z: 9 (0.86%)
+  names::A0: 9 (0.86%)
+  names::n3: 9 (0.86%)
+  names::A: 8 (0.76%)
+  names$A0: 8 (0.76%)
+  names$A1: 8 (0.76%)
+  names$A: 7 (0.66%)
+  names>: 6 (0.57%)
+  names: 5 (0.47%)
+
+# All entities
+names  MPackage        Group of modules used to test various full_name configurations and conflicts.
+names> MGroup  Group of modules used to test various full_name configurations and conflicts.
+names::n3      MModule The bottom module
+names::n3$A1   MClassDef       a refinement of a subclass in a submodule
+names::n3$A1$A::a      MMethodDef      a refinement (3 distinct modules)
+names::n3$A1$::n0::P::p        MMethodDef      a refinement (3 distinct modules)
+names::n3$::n1::P1     MClassDef       a refinement of a subclass in a submodule
+names::n3$::n1::P1$A::a        MMethodDef      a refinement (3 distinct modules)
+names::n3$::n1::P1$::n0::P::p  MMethodDef      a refinement (3 distinct modules)
+names::n0      MModule Root module
+names::Object  MClass  
+names$Object   MClassDef       Root interface
+names::Object::init    MMethod 
+names$Object$init      MMethodDef      
+names::A       MClass  
+names$A        MClassDef       A public class
+names::A::a    MMethod 
+names$A$a      MMethodDef      A public method in a public class
+names::n0::A::z        MMethod 
+names$A$z      MMethodDef      A private method in a public class
+names::A0      MClass  
+names$A0       MClassDef       A public subclass in the same module
+names$A0$A::a  MMethodDef      Redefinition it the same module of a public method
+names$A0$::n0::A::z    MMethodDef      Redefinition it the same module of a private method
+names$A0$::n0::P::p    MMethodDef      Redefinition it the same module of a private method
+names::n0::P   MClass  
+names::n0$P    MClassDef       A private class
+names::n0::P::p        MMethod 
+names::n0$P$p  MMethodDef      A private method in a private class
+names::n0::P0  MClass  
+names::n0$P0   MClassDef       A private subclass introduced in the same module
+names::n0$P0$A::a      MMethodDef      Redefinition it the same module of a public method
+names::n0$P0$::n0::A::z        MMethodDef      Redefinition it the same module of a private method
+names::n0$P0$::n0::P::p        MMethodDef      Redefinition it the same module of a private method
+names::n1      MModule Second module
+names::n1$A    MClassDef       A refinement of a class
+names::n1$A$a  MMethodDef      A refinement in the same class
+names::n1$A$z  MMethodDef      A refinement in the same class
+names::n1::A::b        MMethod 
+names::n1$A$b  MMethodDef      A public method introduced in a refinement
+names::n1$A0   MClassDef       A refinement of a subclass
+names::n1$A0$A::a      MMethodDef      A refinement+redefinition
+names::n1$A0$::n0::A::z        MMethodDef      A refinement+redefinition
+names::n1$A0$::n0::P::p        MMethodDef      A refinement+redefinition
+names::A1      MClass  
+names$A1       MClassDef       A subclass introduced in a submodule
+names$A1$A::a  MMethodDef      A redefinition in a subclass from a different module
+names$A1$::n0::A::z    MMethodDef      A redefinition in a subclass from a different module
+names$A1$::n0::P::p    MMethodDef      A redefinition in a subclass from a different module
+names::n1$::n0::P      MClassDef       A refinement of a class
+names::n1$::n0::P$p    MMethodDef      A refinement in the same class
+names::n1$::n0::P0     MClassDef       A refinement of a subclass
+names::n1$::n0::P0$A::a        MMethodDef      A refinement+redefinition
+names::n1$::n0::P0$::n0::A::z  MMethodDef      A refinement+redefinition
+names::n1$::n0::P0$::n0::P::p  MMethodDef      A refinement+redefinition
+names::n1::P1  MClass  
+names::n1$P1   MClassDef       A private subclass introduced in a different module
+names::n1$P1$A::a      MMethodDef      A redefinition in a subclass from a different module
+names::n1$P1$::n0::A::z        MMethodDef      A redefinition in a subclass from a different module
+names::n1$P1$::n0::P::p        MMethodDef      A redefinition in a subclass from a different module
+names::n2      MModule A alternative second module, used to make name conflicts
+names::n2$A    MClassDef       A refinement of a class
+names::n2::A::b        MMethod 
+names::n2$A$b  MMethodDef      Name conflict? A second public method
+names::n2::A::z        MMethod 
+names::n2$A$z  MMethodDef      Name conflict? A second private method
+names::n2::P   MClass  
+names::n2$P    MClassDef       Name conflict? A second private class
+names::n2::P::p        MMethod 
+names::n2$P$p  MMethodDef      Name conflict? A private method in an homonym class.