nit.git
8 years agoMerge: Fix nitpick return value
Jean Privat [Wed, 22 Jul 2015 17:37:48 +0000 (13:37 -0400)]
Merge: Fix nitpick return value

Make that nitpick returns 1 if some errors where detected.
This is more POLA and will helps callers to spot if there was errors in nit files given in arguments.

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

8 years agoMerge: Conditional importation
Jean Privat [Wed, 22 Jul 2015 14:21:05 +0000 (10:21 -0400)]
Merge: Conditional importation

First quick and dirty implementation for #1579.
Since the loader is due to a full rewrite (cf #1250), some part were implemented as simple as possible.

It is only a technology preview. A lot of thing are missing including the following:

* do not error if the modules in the rules are not present (eg optional modules not installed). Not an issue currently since all the modules are present in the repository.
* show warnings for useless condition to help the programmer
* implement some visibility rules. `public` is assumed even if it makes no sense and cause issues
* understand qualified modules in the conditions

The last issue might be the more limiting currently as only the conditional module understand qualified names. the potential qualified names in the arguments are accepted but just ignored.
Basically `toto` is ignored in `import foo::bar is conditional(toto::tata)`.

Pull-Request: #1580
Reviewed-by: Alexis Laferrière <alexis.laf@xymus.net>
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>

8 years agoMerge: Nitj: A compiler to Java code.
Jean Privat [Wed, 22 Jul 2015 14:21:00 +0000 (10:21 -0400)]
Merge: Nitj: A compiler to Java code.

Introduce a new compiler `nitj` that takes nit code and produce Java code.

Passes ~700/950 tests from the base*.nit test suite.

Since the commit serie is rather long, I suggest to read it comit by commit.

Some features still missing (maybe later):
* generics
* arrays
* varargs
* strings

Note: There is no concrete motivation beyond this engine. Did it for the lulz.

Pull-Request: #1577
Reviewed-by: Alexis Laferrière <alexis.laf@xymus.net>
Reviewed-by: Jean-Philippe Caissy <jpcaissy@piji.ca>
Reviewed-by: Jean Privat <jean@pryen.org>

8 years agotests: test return value of nitpick
Jean Privat [Wed, 22 Jul 2015 14:19:11 +0000 (10:19 -0400)]
tests: test return value of nitpick

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

8 years agonitpick: return 1 if errors occurred
Jean Privat [Wed, 22 Jul 2015 14:18:40 +0000 (10:18 -0400)]
nitpick: return 1 if errors occurred

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

8 years agonitj: improve Ant cache by not rewritting unchanged file
Alexandre Terrasa [Thu, 16 Jul 2015 21:54:48 +0000 (17:54 -0400)]
nitj: improve Ant cache by not rewritting unchanged file

Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>

8 years agonitj: faster recompilation with Ant
Alexandre Terrasa [Thu, 16 Jul 2015 21:52:53 +0000 (17:52 -0400)]
nitj: faster recompilation with Ant

Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>

8 years agonitj: implement ACastExprs
Alexandre Terrasa [Mon, 13 Jul 2015 21:04:21 +0000 (17:04 -0400)]
nitj: implement ACastExprs

Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>

8 years agonitj: avoid dead code execution
Alexandre Terrasa [Mon, 13 Jul 2015 17:36:53 +0000 (13:36 -0400)]
nitj: avoid dead code execution

Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>

8 years agonitj: implement bool exprs
Alexandre Terrasa [Fri, 10 Jul 2015 18:19:32 +0000 (14:19 -0400)]
nitj: implement bool exprs

Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>

8 years agonitj: factorize frame initialization for method, attribut and init compilation
Alexandre Terrasa [Fri, 10 Jul 2015 18:55:16 +0000 (14:55 -0400)]
nitj: factorize frame initialization for method, attribut and init compilation

Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>

8 years agonitj: implement non-generic type tests
Alexandre Terrasa [Fri, 10 Jul 2015 18:18:15 +0000 (14:18 -0400)]
nitj: implement non-generic type tests

Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>

8 years agonitj: implement ADoExpr, AWhileExpr, ALoopExpr
Alexandre Terrasa [Fri, 10 Jul 2015 05:32:01 +0000 (01:32 -0400)]
nitj: implement ADoExpr, AWhileExpr, ALoopExpr

Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>

8 years agonitj: implement ANotExpr
Alexandre Terrasa [Fri, 10 Jul 2015 06:02:43 +0000 (02:02 -0400)]
nitj: implement ANotExpr

Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>

8 years agonitj: implement AIFExpr
Alexandre Terrasa [Fri, 10 Jul 2015 06:02:17 +0000 (02:02 -0400)]
nitj: implement AIFExpr

Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>

8 years agonitj: implement AParExpr
Alexandre Terrasa [Fri, 10 Jul 2015 03:00:55 +0000 (23:00 -0400)]
nitj: implement AParExpr

Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>

8 years agonitj: implement super calls
Alexandre Terrasa [Fri, 10 Jul 2015 06:05:31 +0000 (02:05 -0400)]
nitj: implement super calls

Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>

8 years agonitj: implement attributes expressions
Alexandre Terrasa [Fri, 10 Jul 2015 06:04:07 +0000 (02:04 -0400)]
nitj: implement attributes expressions

Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>

8 years agonitj: implement main call
Alexandre Terrasa [Fri, 10 Jul 2015 00:02:05 +0000 (20:02 -0400)]
nitj: implement main call

Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>

8 years agonitj: compile java main function stub
Alexandre Terrasa [Tue, 30 Jun 2015 19:08:56 +0000 (15:08 -0400)]
nitj: compile java main function stub

Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>

8 years agonitj: implement instances initialization
Alexandre Terrasa [Fri, 10 Jul 2015 00:01:50 +0000 (20:01 -0400)]
nitj: implement instances initialization

Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>

8 years agonitj: compile attributes accesses
Alexandre Terrasa [Fri, 10 Jul 2015 00:05:06 +0000 (20:05 -0400)]
nitj: compile attributes accesses

Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>

8 years agonitj: compile intern methods bodies
Alexandre Terrasa [Thu, 9 Jul 2015 23:58:53 +0000 (19:58 -0400)]
nitj: compile intern methods bodies

Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>

8 years agotyping: also type signature for intern methods
Alexandre Terrasa [Tue, 14 Jul 2015 05:28:14 +0000 (01:28 -0400)]
typing: also type signature for intern methods

Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>

8 years agonitj: compile concrete methods bodies
Alexandre Terrasa [Thu, 9 Jul 2015 23:58:12 +0000 (19:58 -0400)]
nitj: compile concrete methods bodies

Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>

8 years agonitj: implement instance initialization and ANewExprs
Alexandre Terrasa [Mon, 6 Jul 2015 16:49:20 +0000 (12:49 -0400)]
nitj: implement instance initialization and ANewExprs

Attributes are not handled in this commit.

Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>

8 years agonitj: avoid calls to abstract methods
Alexandre Terrasa [Mon, 13 Jul 2015 21:08:52 +0000 (17:08 -0400)]
nitj: avoid calls to abstract methods

Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>

8 years agonitj: implements AReturnExprs
Alexandre Terrasa [Fri, 10 Jul 2015 05:38:35 +0000 (01:38 -0400)]
nitj: implements AReturnExprs

Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>

8 years agonitj: shortcut calls on primitive instances
Alexandre Terrasa [Mon, 6 Jul 2015 16:50:01 +0000 (12:50 -0400)]
nitj: shortcut calls on primitive instances

Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>

8 years agonitj: implement static and polymorphic sends
Alexandre Terrasa [Fri, 17 Jul 2015 18:32:17 +0000 (14:32 -0400)]
nitj: implement static and polymorphic sends

Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>

8 years agonitj: implement boxing for Java primitives
Alexandre Terrasa [Tue, 14 Jul 2015 06:08:08 +0000 (02:08 -0400)]
nitj: implement boxing for Java primitives

Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>

8 years agonitj: implement variable declaration
Alexandre Terrasa [Fri, 17 Jul 2015 18:23:12 +0000 (14:23 -0400)]
nitj: implement variable declaration

Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>

8 years agonitj: compile native instances of Int, Byte, Float, Char and Bool
Alexandre Terrasa [Mon, 6 Jul 2015 15:33:04 +0000 (11:33 -0400)]
nitj: compile native instances of Int, Byte, Float, Char and Bool

Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>

8 years agonitj: implement `self` accesses
Alexandre Terrasa [Thu, 9 Jul 2015 23:20:44 +0000 (19:20 -0400)]
nitj: implement `self` accesses

Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>

8 years agonitj: implement aborts
Alexandre Terrasa [Fri, 17 Jul 2015 18:06:57 +0000 (14:06 -0400)]
nitj: implement aborts

Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>

8 years agonitj: implement static frame to handle calls
Alexandre Terrasa [Thu, 9 Jul 2015 23:20:08 +0000 (19:20 -0400)]
nitj: implement static frame to handle calls

Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>

8 years agonitj: prepare node visit of method bodies
Alexandre Terrasa [Mon, 13 Jul 2015 21:07:32 +0000 (17:07 -0400)]
nitj: prepare node visit of method bodies

Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>

8 years agonitj: implement variable handling
Alexandre Terrasa [Wed, 1 Jul 2015 00:02:58 +0000 (20:02 -0400)]
nitj: implement variable handling

Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>

8 years agonitj: build naive type tables using Java HashMaps
Alexandre Terrasa [Thu, 9 Jul 2015 23:55:32 +0000 (19:55 -0400)]
nitj: build naive type tables using Java HashMaps

Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>

8 years agonitj: build naive vfts using Java HashMaps
Alexandre Terrasa [Tue, 30 Jun 2015 19:48:51 +0000 (15:48 -0400)]
nitj: build naive vfts using Java HashMaps

Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>

8 years agonitj: generate runtime mmethodef structure stubs
Alexandre Terrasa [Fri, 17 Jul 2015 17:44:32 +0000 (13:44 -0400)]
nitj: generate runtime mmethodef structure stubs

Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>

8 years agonitj: generate runtime class structure stubs
Alexandre Terrasa [Fri, 17 Jul 2015 17:41:05 +0000 (13:41 -0400)]
nitj: generate runtime class structure stubs

Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>

8 years agonitj: introduce JavaRuntimeModel used to represent Nit entities in Java runtime
Alexandre Terrasa [Fri, 17 Jul 2015 17:37:50 +0000 (13:37 -0400)]
nitj: introduce JavaRuntimeModel used to represent Nit entities in Java runtime

Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>

8 years agonitj: introduce JavaCompilerVisitor to generate java code
Alexandre Terrasa [Fri, 17 Jul 2015 17:31:48 +0000 (13:31 -0400)]
nitj: introduce JavaCompilerVisitor to generate java code

Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>

8 years agonitj: add tests for the nitj engine
Alexandre Terrasa [Mon, 20 Jul 2015 17:58:31 +0000 (13:58 -0400)]
nitj: add tests for the nitj engine

Reused tests from `nitg-e`.

Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>

8 years agonitj: compile generated Java files using make and Javac
Alexandre Terrasa [Fri, 17 Jul 2015 17:16:49 +0000 (13:16 -0400)]
nitj: compile generated Java files using make and Javac

This will be used to compile generated files into an executable jar.
Also introduce a shell script to directly run the generated jar to come like it was a binary.

Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>

8 years agonitj: introduce compiler to Java code
Alexandre Terrasa [Fri, 17 Jul 2015 17:06:34 +0000 (13:06 -0400)]
nitj: introduce compiler to Java code

This commit only introduce a stub and a way to test it.
Code generation will be added in next commits.

Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>

8 years agoMerge: jwrapper accepts Jar archives
Jean Privat [Tue, 21 Jul 2015 20:42:03 +0000 (16:42 -0400)]
Merge: jwrapper accepts Jar archives

This PR modifies jwrapper to accept Jar archives and fix a bunch of bugs/limitations. This is probably the first of 2 PRs on jwrapper. This one targets the frontend to accept any Java classes (tested on over 25k classes) and to mass produce wrappers. It also ensures that both the generated nit code and jwrapper itself is debuggable.

Although the mass generated Nit code is syntactically valid, more work is needed so it can be usable. We will need to somehow apply Java namespace in generated Nit code, and revamp how new wrappers interact with older/custom wrappers. There is also a few missing features, such as copying the class hierarchy to Nit.

With this PR, jwrapper successfully parses 4 large Jar achives:
* OpenJDK 7 standard library `rt.jar` with 18568 classes.
* OpenJDK 7 tools `tools.jar` with 4144 classes.
* Android lib `android.jar` with 2767 classes.
* SableCC `sablecc-3-beta.3.altgen.20041114/lib/sablecc.jar` with 495 classes.

Pull-Request: #1578
Reviewed-by: Jean Privat <jean@pryen.org>
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>

8 years agofriendz: rely on conditional importation in platform
Jean Privat [Tue, 21 Jul 2015 20:23:52 +0000 (16:23 -0400)]
friendz: rely on conditional importation in platform

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

8 years agocalculator: rely on conditional importation in the Makefile
Jean Privat [Tue, 21 Jul 2015 20:20:16 +0000 (16:20 -0400)]
calculator: rely on conditional importation in the Makefile

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

8 years agolib/app: provide conditional importation of app extensions
Jean Privat [Tue, 21 Jul 2015 20:19:16 +0000 (16:19 -0400)]
lib/app: provide conditional importation of app extensions

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

8 years agoloader: restore -m with module name (eg -m android)
Jean Privat [Tue, 21 Jul 2015 20:16:52 +0000 (16:16 -0400)]
loader: restore -m with module name (eg -m android)

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

8 years agomodelbuilder: apply conditional_importations on mixins
Jean Privat [Tue, 21 Jul 2015 19:59:32 +0000 (15:59 -0400)]
modelbuilder: apply conditional_importations on mixins

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

8 years agotests: add base_module_conditional*
Jean Privat [Tue, 21 Jul 2015 18:27:11 +0000 (14:27 -0400)]
tests: add base_module_conditional*

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

8 years agotests: add outputs for module_0 and module_1
Jean Privat [Tue, 21 Jul 2015 18:25:19 +0000 (14:25 -0400)]
tests: add outputs for module_0 and module_1

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

8 years agoloader: basic implementation of conditional importations
Jean Privat [Tue, 21 Jul 2015 18:10:09 +0000 (14:10 -0400)]
loader: basic implementation of conditional importations

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

8 years agomodel: remove requirement unique_invocation of `MModule::set_imported_mmodules`
Jean Privat [Tue, 21 Jul 2015 18:08:49 +0000 (14:08 -0400)]
model: remove requirement unique_invocation of `MModule::set_imported_mmodules`

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

8 years agoloader: extract the resolution and the loading of module in `import` clauses
Jean Privat [Tue, 21 Jul 2015 17:45:52 +0000 (13:45 -0400)]
loader: extract the resolution and the loading of module in `import` clauses

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

8 years agoloader: extract `load_module_path` from `get_mmodule_by_name`
Jean Privat [Tue, 21 Jul 2015 17:40:12 +0000 (13:40 -0400)]
loader: extract `load_module_path` from `get_mmodule_by_name`

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

8 years agosrc: move up `AExpr::as_id` from literal to parser_work
Jean Privat [Tue, 21 Jul 2015 17:36:40 +0000 (13:36 -0400)]
src: move up `AExpr::as_id` from literal to parser_work

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

8 years agocontrib/jwrapper: add test case and the check rule
Alexis Laferrière [Mon, 20 Jul 2015 16:28:03 +0000 (12:28 -0400)]
contrib/jwrapper: add test case and the check rule

Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

8 years agocontrib/jwrapper: apply dependencies in Makefile
Alexis Laferrière [Mon, 20 Jul 2015 12:34:42 +0000 (08:34 -0400)]
contrib/jwrapper: apply dependencies in Makefile

Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

8 years agocontrib/jwrapper: update gitignore file
Alexis Laferrière [Mon, 20 Jul 2015 16:48:33 +0000 (12:48 -0400)]
contrib/jwrapper: update gitignore file

Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

8 years agocontrib/jwrapper main: revamp entry to support Jar and javap files
Alexis Laferrière [Mon, 20 Jul 2015 12:34:21 +0000 (08:34 -0400)]
contrib/jwrapper main: revamp entry to support Jar and javap files

Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

8 years agocontrib/jwrapper main: revamp docs
Alexis Laferrière [Mon, 20 Jul 2015 12:33:59 +0000 (08:33 -0400)]
contrib/jwrapper main: revamp docs

Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

8 years agocontrib/jwrapper main: revamp options
Alexis Laferrière [Sun, 19 Jul 2015 16:12:40 +0000 (12:12 -0400)]
contrib/jwrapper main: revamp options

Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

8 years agocontrib/jwrapper: generate doc above extern methods
Alexis Laferrière [Mon, 20 Jul 2015 16:26:29 +0000 (12:26 -0400)]
contrib/jwrapper: generate doc above extern methods

Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

8 years agocontrib/jwrapper: do not look for existing Nit libs if NIT_DIR is not set
Alexis Laferrière [Mon, 20 Jul 2015 01:20:06 +0000 (21:20 -0400)]
contrib/jwrapper: do not look for existing Nit libs if NIT_DIR is not set

Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

8 years agocontrib/jwrapper: avoid Nit keywords and mangle generated method names
Alexis Laferrière [Mon, 20 Jul 2015 03:34:36 +0000 (23:34 -0400)]
contrib/jwrapper: avoid Nit keywords and mangle generated method names

Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

8 years agocontrib/jwrapper: refactor `add_identifier`
Alexis Laferrière [Mon, 20 Jul 2015 02:48:40 +0000 (22:48 -0400)]
contrib/jwrapper: refactor `add_identifier`

Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

8 years agocontrib/jwrapper: use the prefix `Java`
Alexis Laferrière [Mon, 20 Jul 2015 02:45:55 +0000 (22:45 -0400)]
contrib/jwrapper: use the prefix `Java`

Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

8 years agocontrib/jwrapper: minor style update in model
Alexis Laferrière [Mon, 20 Jul 2015 02:45:11 +0000 (22:45 -0400)]
contrib/jwrapper: minor style update in model

Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

8 years agocontrib/jwrapper: support wildcards with a default bound
Alexis Laferrière [Mon, 20 Jul 2015 02:49:06 +0000 (22:49 -0400)]
contrib/jwrapper: support wildcards with a default bound

Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

8 years agocontrib/jwrapper: main logic use `JavaModel` and support many files at once
Alexis Laferrière [Sun, 19 Jul 2015 20:01:36 +0000 (16:01 -0400)]
contrib/jwrapper: main logic use `JavaModel` and support many files at once

Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

8 years agocontrib/jwrapper: intro `JavaModel`
Alexis Laferrière [Sun, 19 Jul 2015 17:24:19 +0000 (13:24 -0400)]
contrib/jwrapper: intro `JavaModel`

Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

8 years agocontrib/jwrapper: revamp `gen_licence` to be more customizable
Alexis Laferrière [Sun, 19 Jul 2015 17:25:22 +0000 (13:25 -0400)]
contrib/jwrapper: revamp `gen_licence` to be more customizable

Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

8 years agocontrib/jwrapper: use a MultiHashMap to store methods and their signatures
Alexis Laferrière [Sun, 19 Jul 2015 16:38:41 +0000 (12:38 -0400)]
contrib/jwrapper: use a MultiHashMap to store methods and their signatures

Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

8 years agocontrib/jwrapper: separate comment vs stubs in generator logic
Alexis Laferrière [Sun, 19 Jul 2015 16:10:49 +0000 (12:10 -0400)]
contrib/jwrapper: separate comment vs stubs in generator logic

Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

8 years agocontrib/jwrapper: update constructors of `CodeGenerator` and `JavapVisitor`
Alexis Laferrière [Sun, 19 Jul 2015 16:08:09 +0000 (12:08 -0400)]
contrib/jwrapper: update constructors of `CodeGenerator` and `JavapVisitor`

Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

8 years agocontrib/jwrapper: remove illegal attribute generation
Alexis Laferrière [Sun, 19 Jul 2015 16:05:16 +0000 (12:05 -0400)]
contrib/jwrapper: remove illegal attribute generation

Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

8 years agocontrib/jwrapper: fix parameter-less methods right after the constructor
Alexis Laferrière [Mon, 20 Jul 2015 00:19:28 +0000 (20:19 -0400)]
contrib/jwrapper: fix parameter-less methods right after the constructor

Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

8 years agocontrib/jwrapper grammar: fix generic types parameters with bounds
Alexis Laferrière [Mon, 20 Jul 2015 11:12:09 +0000 (07:12 -0400)]
contrib/jwrapper grammar: fix generic types parameters with bounds

Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

8 years agocontrib/jwrapper grammar: accept generic constructors
Alexis Laferrière [Mon, 20 Jul 2015 11:11:48 +0000 (07:11 -0400)]
contrib/jwrapper grammar: accept generic constructors

Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

8 years agocontrib/jwrapper grammar: eat the strictfp keyword
Alexis Laferrière [Mon, 20 Jul 2015 11:11:24 +0000 (07:11 -0400)]
contrib/jwrapper grammar: eat the strictfp keyword

Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

8 years agocontrib/jwrapper grammar: accept `-` in Java identifier, it can be used internally
Alexis Laferrière [Mon, 20 Jul 2015 05:08:33 +0000 (01:08 -0400)]
contrib/jwrapper grammar: accept `-` in Java identifier, it can be used internally

Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

8 years agocontrib/jwrapper grammar: accept classes compiled from any file name
Alexis Laferrière [Mon, 20 Jul 2015 05:07:48 +0000 (01:07 -0400)]
contrib/jwrapper grammar: accept classes compiled from any file name

Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

8 years agocontrib/jwrapper grammar: fix parsing many files at once
Alexis Laferrière [Mon, 20 Jul 2015 05:07:16 +0000 (01:07 -0400)]
contrib/jwrapper grammar: fix parsing many files at once

Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

8 years agocontrib/jwrapper grammar: fix `implements` and `extends` behavior
Alexis Laferrière [Mon, 20 Jul 2015 01:17:16 +0000 (21:17 -0400)]
contrib/jwrapper grammar: fix `implements` and `extends` behavior

Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

8 years agocontrib/jwrapper grammar: accept wildcards in generic parameters
Alexis Laferrière [Mon, 20 Jul 2015 01:16:45 +0000 (21:16 -0400)]
contrib/jwrapper grammar: accept wildcards in generic parameters

Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

8 years agocontrib/jwrapper grammar: style clean up
Alexis Laferrière [Mon, 20 Jul 2015 00:17:35 +0000 (20:17 -0400)]
contrib/jwrapper grammar: style clean up

Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

8 years agolib/performance_analysis: keep the sum execution time
Alexis Laferrière [Mon, 20 Jul 2015 04:17:57 +0000 (00:17 -0400)]
lib/performance_analysis: keep the sum execution time

Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

8 years agolib/performance_analysis: fix `PerfMap::to_s`
Alexis Laferrière [Mon, 20 Jul 2015 04:17:31 +0000 (00:17 -0400)]
lib/performance_analysis: fix `PerfMap::to_s`

Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

8 years agolib/opts: improve doc of `OptionEnum`
Alexis Laferrière [Sun, 19 Jul 2015 19:51:59 +0000 (15:51 -0400)]
lib/opts: improve doc of `OptionEnum`

Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

8 years agoMerge: Basic UDP socket
Jean Privat [Mon, 20 Jul 2015 13:34:10 +0000 (09:34 -0400)]
Merge: Basic UDP socket

This PR intro `UDPSocket` and cleans up a bit of the native layer of socket to avoid using callbacks when possible.

`UDPSocket` support sending messages to remote sockets without a connection and more importantly receive message from any sender. However, as of yet it does not support connections or the stream API of Nit.

Some TODO with the sockets:
* Stop using `gethostbyname` :neutral_face:
* Decide on one or many APIs. The native layer has an API closed to the C API and to what is available in other languages, maybe it can be clean up further and exposed as is.

---
Please ignore the first 2 commits from #1573.

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

8 years agoMerge: Faster write
Jean Privat [Mon, 20 Jul 2015 13:34:04 +0000 (09:34 -0400)]
Merge: Faster write

Allow FlatString to be directly written to files without useless copy (`to_cstring`) or useless iterator (`substrings`)

Numbers, for `nitc nitc.nit`:

* before 5.796
* after 5.440 (-6%)

Close one check-box of #1298

Pull-Request: #1572
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>

8 years agoMerge: Apply optional params in strip_extension, basename and join
Jean Privat [Mon, 20 Jul 2015 13:33:45 +0000 (09:33 -0400)]
Merge: Apply optional params in strip_extension, basename and join

Using optional parameters, the methods `strip_extension`, `basename` and `join` have a default behavior that fit most usage.

* `Collection::join` appends all elements of the collection by default, the same as `join("")`. This is the old behavior of `Collection::to_s`.

* `String::strip_extension` removes the rightmost extension by default, the same as `s.strip_extension("." + s.file_extension)`.

* `String::basename` does not strip the extension by default.

I haven't updated any users of `strip_extension` because the default behavior requires more work. Thus changing the already existing calls to something else would slow down the programs by a very small margin.

Pull-Request: #1575
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>
Reviewed-by: Jean Privat <jean@pryen.org>

8 years agosrc & lib: use the default behavior of `basename` where applicable
Alexis Laferrière [Sat, 18 Jul 2015 13:43:53 +0000 (09:43 -0400)]
src & lib: use the default behavior of `basename` where applicable

Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

8 years agolib/standard: revamp doc of `Map::join`
Alexis Laferrière [Fri, 17 Jul 2015 14:09:59 +0000 (10:09 -0400)]
lib/standard: revamp doc of `Map::join`

Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

8 years agocontrib & examples..: update users of `join("")`
Alexis Laferrière [Fri, 17 Jul 2015 14:01:23 +0000 (10:01 -0400)]
contrib & examples..: update users of `join("")`

Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

8 years agolib/standard: the single parameter of `String::basename` is optional
Alexis Laferrière [Fri, 17 Jul 2015 13:29:12 +0000 (09:29 -0400)]
lib/standard: the single parameter of `String::basename` is optional

Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>