compiler: `add MakefileToolchain::outfile` to compute outnames

Signed-off-by: Jean Privat <jean@pryen.org>
android_platform: use `outfile` instead of its own stuff

Signed-off-by: Jean Privat <jean@pryen.org>
compiler: add `--dir` to just change the output directory

Signed-off-by: Jean Privat <jean@pryen.org>
colo: `MModule::properties` does no give properties is does not have

Signed-off-by: Jean Privat <jean@pryen.org>
colo: Colorize only class in the module, not all in the model

Signed-off-by: Jean Privat <jean@pryen.org>
colo: rewrite build_{meth,attr}_tables

The current implementation has two issues.

First, it relies on the full model instead of just the main module
eg. `mproperty.mpropdefs` is full-model information

Second, the order of the refienements is fragile and may be distinct form the
one given by the model.

Therefore, this commit just remplaces the code with one that just fill
slots with information given by the model (instead of recomputed in a
fragile way)

Signed-off-by: Jean Privat <jean@pryen.org>
comp: use a local `no_main` variable

Instead of modifing the global opt_no_main option

Signed-off-by: Jean Privat <jean@pryen.org>
comp: compilers do not modify opt_stacktace, it is a global info

Signed-off-by: Jean Privat <jean@pryen.org>
ffi: move guard  into the MModule to simplify management

Signed-off-by: Jean Privat <jean@pryen.org>
ffi: move guard  in the AbstractCompiler

Signed-off-by: Jean Privat <jean@pryen.org>
ffi: reset FFI compilation result attached to the module

Signed-off-by: Jean Privat <jean@pryen.org>
comp: enable multi-compilation, ie multiple main programs

Signed-off-by: Jean Privat <jean@pryen.org>
tests: update base_simple_import.nit so the result difers from base_simple.nit

Signed-off-by: Jean Privat <jean@pryen.org>
tests: multicompile with nitg

Signed-off-by: Jean Privat <jean@pryen.org>
src: use multicompile to fasten the initial make

Signed-off-by: Jean Privat <jean@pryen.org>
modelize_property: enable the access of the internal attributes

The transition from old-style to new-style attributes is a mess.
So in order to facilitate the transition, this patch enable
the access to the internal attribute previously hidden by then
new_style attribute.

Therefore, the transition path is simpler since one can move declaration
from old-style to new-style but some access can still use the old `_foo`
notation.

Note, the `_foo` access is not mean to be publicized bu only made available
for specific short-term workarounds and transitions.

Practically, internal attribute named are prefixed with `_` and
made visible (but private)
grammar: accept `public` as a valid visibility

It has the same semantic than no explicit visibility, but
will allows a simpler transition to a new visibility level.

See: #499
Signed-off-by: Jean Privat <jean@pryen.org>
grammar: accept annonymous label

Often, a single label is needed, for aborting some neested loops for
instance. But the programmer was forced to still gives a name to a
label. This yielded to crasy or useless names,

The proposal is to allow anonymous label.

Eg. in the following, the break breaks the x loop
~~~
for x in xs do
  for y in ys do
    stuff
    if something then break label
  end
  stuff
end label
~~~

Note: by the way, valued breaks and continues are removed.

Signed-off-by: Jean Privat <jean@pryen.org>
grammar: add elipsys notation to pass an expression in a vararg parameter

Signed-off-by: Jean Privat <jean@pryen.org>
grammar: accept annotations in implicit extern methods

Signed-off-by: Jean Privat <jean@pryen.org>