phase: add an indirection to process_npropdef so that specifc toolcontext can control it

Signed-off-by: Jean Privat <jean@pryen.org>
src: new tool nitpick

Signed-off-by: Jean Privat <jean@pryen.org>
vim: use nitpick for faster syntastic

Signed-off-by: Jean Privat <jean@pryen.org>
tests: add sav/nitpick.res

Signed-off-by: Jean Privat <jean@pryen.org>
phases: do not reanalyze amodules in run_phase

Multiple `run_phase` invocation should not analyze a amodule twice.

This is a workaround, the whole phase API should be improved to make late
module loading less error-prone and more simple.

Close #726
Signed-off-by: Jean Privat <jean@pryen.org>
comp: chain implementation attempts

1. intern/extern
2. body
3. abort

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

Conflicts:
	src/modelize/modelize_property.nit
niti: chain implementation attempts

1. intern/extern
2. body
3. abort

Because of the lack of multiple return, `intern_call` returns an instance,
null, or a false object to indicate the error.

Signed-off-by: Jean Privat <jean@pryen.org>
neo: Forces MParameter ranking in MSignatures

Also update corresponding test and make test sav more easy to read.

Fixes #725

Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>
Merge: nitpick, the nit lintian

Check Nit programs for issues and other stuff.

Currently, only a fast checker to use with the vim plugin.
50% faster than before.

~~~
$ time nitg nitg.nit --only-metamodel
user	0m1.752s
$ time nitpick nitg.nit
user	0m0.872s
~~~

Pull-Request: #724
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Reviewed-by: Alexis Laferrière <alexis.laf@xymus.net>
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>
Merge: phases: do not reanalyze amodules in run_phase

Multiple `run_phase` invocation should not analyze a amodule twice.

This is a workaround, the whole phase API should be improved to make late
module loading less error-prone and more simple.

Close #726

Pull-Request: #729
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Merge: Chain implememtations

Change in engine so the selected implementation is more abstract and has some kind of fall-back.

1. if intern or extern, try to get the specific implementation
2. else try to compile the body
3. else compile an error

The point is top prepare a future PR where intern and extern methods could provide an alternative (slow or degraded) implementation.

Pull-Request: #730
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Merge: neo: Forces MParameter ranking in MSignatures

Also update corresponding test and make test sav more easy to read.

This PR provides two fixes and close #725:

1- use the MParameter `rank` node property to order the mparameters in the signature
2- use the MSignature `parameter_names` to get the declaration order of the parameters (so you don't have to load the MParameters nodes to display the short `MSignature`).

Pull-Request: #731
Reviewed-by: Jean Privat <jean@pryen.org>