engines: use `callsite.msignature` in ASuperExpr

instead of `callsite.mproperty.intro.msignature`

This will also be usefull with new constructors when
the signature between the callsite and the propdef differs

Signed-off-by: Jean Privat <jean@pryen.org>
rta: micro-factorization of call on `msignature`

Signed-off-by: Jean Privat <jean@pryen.org>
typing: remove `resolve_signature_for`

With new init, the method will become less useful, so just remove it now.

Signed-off-by: Jean Privat <jean@pryen.org>
lib: prepare for new init

Give some default values on nullable attributes so they will not be
collected.

Signed-off-by: Jean Privat <jean@pryen.org>
parser: prepare for new init

Give some default values on nullable attributes so they will not be
collected.
Introduce explicit empty init to avoid the collect of non-nullable
attributes.

Signed-off-by: Jean Privat <jean@pryen.org>
src: prepare for new init

Give some default values on nullable attributes so they will not be
collected.

Introduce explicit empty init to avoid the collect of non-nullable
attributes.

Signed-off-by: Jean Privat <jean@pryen.org>
rest-of-code: prepare for new init

Give some default values on nullable attributes so they will not be
collected.
Introduce explicit empty init to avoid the collect of non-nullable
attributes.

Signed-off-by: Jean Privat <jean@pryen.org>
model: implements `MParameter#to_s`

Signed-off-by: Jean Privat <jean@pryen.org>
default_init: collect attributes on combined empty init

Attribute that are potential parameters for constructors are collected
ans used in the case of a `free combined init`.

~~~
class A
   init do end
end
class B
   init do end
end
class C
   super A
   super B
   var i: Int
   # free init(i:Int) do self.i = i
end
~~~

Signed-off-by: Jean Privat <jean@pryen.org>
default_init: inherit combined init if alone and empty

Instead of creating a new one everytime

Signed-off-by: Jean Privat <jean@pryen.org>
default_init: error if collected attributes and inherited complex constructors

This unify the fate of collected attributes.
In the introduction of a class without explicit constructors, collectable
attributes are always considered in the providing of construction mechanisms.

This will also prevent programs that will be not exprimable with the first
version of new constructors.

Signed-off-by: Jean Privat <jean@pryen.org>
default_init: can compile combined init with collected attributes

Signed-off-by: Jean Privat <jean@pryen.org>
default_init: can interpret combined init with collected attributes

Signed-off-by: Jean Privat <jean@pryen.org>
tests: add base_init_combine.nit

Signed-off-by: Jean Privat <jean@pryen.org>
default_init: fix a NitUnit in template

Signed-off-by: Jean Privat <jean@pryen.org>
Merge: Improve free init to prepare new constructors

Yet another series toward the new constructors.

Some cleanup but also some changes in the current specification to be more compatible with the next one.

In the previous code, there was 3 distinct ways to have free constructors:

1. there is some complex constructors in ONE superclass ; then they are inherited and usable as it ; error if more than one superclass with complex constructors
2. in super-classes there is only constructor named init and without parameters ; then a new free constructor is generated that just invoke the inherited init.
3. there is no inherited consructors ; then all uninitialized attributes are collected to produce a new constructor with parameters

The series generalize the point about uninitialized attributes, so make the 3 ways less distinct:

* in 1, if there is uninitialized attributes a error is generated
* in 2, if there is uninitialized attributes, they are given as parameter do the generated free constructor
* 3 does not change, but just become a special case of 2.

To enable the new behavior, an update was needed on some piece of code. mainly:

1. give a default value to some attributes to avoid their collect in the free constructor
2. give an explicit empty init when some attributes cannot have a default value

Achievement Unlocked: Edit 200 constructors in one PR +50 nitCoins

Pull-Request: #459
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Reviewed-by: Alexis Laferrière <alexis.laf@xymus.net>
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>