nit.git
8 years agocontrib/jwrapper: intro a practical example use of jwrapper
Alexis Laferrière [Thu, 23 Jul 2015 16:52:52 +0000 (12:52 -0400)]
contrib/jwrapper: intro a practical example use of jwrapper

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

8 years agocontrib/jwrapper: make casting base objects (Integer, Long, etc.) optional
Alexis Laferrière [Fri, 24 Jul 2015 13:07:29 +0000 (09:07 -0400)]
contrib/jwrapper: make casting base objects (Integer, Long, etc.) optional

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

8 years agocontrib/jwrapper: do not remove get_ or replace set_
Alexis Laferrière [Thu, 23 Jul 2015 21:55:40 +0000 (17:55 -0400)]
contrib/jwrapper: do not remove get_ or replace set_

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

8 years agocontrib/jwrapper: comment out all primitive arrays
Alexis Laferrière [Thu, 23 Jul 2015 21:52:31 +0000 (17:52 -0400)]
contrib/jwrapper: comment out all primitive arrays

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

8 years agocontrib/jwrapper: add an option to search for existing wrappers in custom libs
Alexis Laferrière [Thu, 23 Jul 2015 21:51:15 +0000 (17:51 -0400)]
contrib/jwrapper: add an option to search for existing wrappers in custom libs

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

8 years agocontrib/jwrapper: add some top-level methods to the reserved keywords
Alexis Laferrière [Thu, 23 Jul 2015 21:50:10 +0000 (17:50 -0400)]
contrib/jwrapper: add some top-level methods to the reserved keywords

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

8 years agocontrib/jwrapper: improve `JavaType::==`
Alexis Laferrière [Thu, 23 Jul 2015 15:10:42 +0000 (11:10 -0400)]
contrib/jwrapper: improve `JavaType::==`

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

8 years agocontrib/jwrapper: remove old naming escape on methods
Alexis Laferrière [Thu, 23 Jul 2015 14:58:56 +0000 (10:58 -0400)]
contrib/jwrapper: remove old naming escape on methods

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

8 years agocontrib/jwrapper: filter classes from Jar archives with a regex
Alexis Laferrière [Thu, 23 Jul 2015 14:04:26 +0000 (10:04 -0400)]
contrib/jwrapper: filter classes from Jar archives with a regex

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

8 years agocontrib/jwrapper: use the new type conversion system in code gen
Alexis Laferrière [Thu, 23 Jul 2015 13:35:09 +0000 (09:35 -0400)]
contrib/jwrapper: use the new type conversion system in code gen

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

8 years agocontrib/jwrapper: remove unused code
Alexis Laferrière [Thu, 23 Jul 2015 13:34:08 +0000 (09:34 -0400)]
contrib/jwrapper: remove unused code

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

8 years agocontrib/jwrapper: revamp conversion from Java to Nit types
Alexis Laferrière [Thu, 23 Jul 2015 13:33:29 +0000 (09:33 -0400)]
contrib/jwrapper: revamp conversion from Java to Nit types

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

8 years agocontrib/jwrapper: revamp and merge extern_name and extern_class_name
Alexis Laferrière [Thu, 23 Jul 2015 13:31:57 +0000 (09:31 -0400)]
contrib/jwrapper: revamp and merge extern_name and extern_class_name

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

8 years agocontrib/jwrapper: intro an option to choose the extern class name prefix
Alexis Laferrière [Thu, 23 Jul 2015 13:22:35 +0000 (09:22 -0400)]
contrib/jwrapper: intro an option to choose the extern class name prefix

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

8 years agocontrib/jwrapper: update signatures of the gen_ methods
Alexis Laferrière [Thu, 23 Jul 2015 13:02:03 +0000 (09:02 -0400)]
contrib/jwrapper: update signatures of the gen_ methods

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

8 years agocontrib/jwrapper: generate constructors
Alexis Laferrière [Thu, 23 Jul 2015 13:27:12 +0000 (09:27 -0400)]
contrib/jwrapper: generate constructors

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

8 years agocontrib/jwrapper: generate getter and setter to access fields
Alexis Laferrière [Tue, 21 Jul 2015 18:53:54 +0000 (14:53 -0400)]
contrib/jwrapper: generate getter and setter to access fields

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

8 years agocontrib/jwrapper: intro a service to avoid property name conflicts
Alexis Laferrière [Thu, 23 Jul 2015 13:11:22 +0000 (09:11 -0400)]
contrib/jwrapper: intro a service to avoid property name conflicts

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

8 years agocontrib/jwrapper: revamp the search with grep and cache the results
Alexis Laferrière [Wed, 22 Jul 2015 18:37:08 +0000 (14:37 -0400)]
contrib/jwrapper: revamp the search with grep and cache the results

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

8 years agocontrib/jwrapper: `JavaModel::classes` sort keys by string
Alexis Laferrière [Wed, 22 Jul 2015 18:44:07 +0000 (14:44 -0400)]
contrib/jwrapper: `JavaModel::classes` sort keys by string

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

8 years agocontrib/jwrapper: add 4 more tests from a javap output
Alexis Laferrière [Wed, 22 Jul 2015 14:01:04 +0000 (10:01 -0400)]
contrib/jwrapper: add 4 more tests from a javap output

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

8 years agocontrib/jwrapper: add missing keywords to mangle
Alexis Laferrière [Wed, 22 Jul 2015 13:59:07 +0000 (09:59 -0400)]
contrib/jwrapper: add missing keywords to mangle

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

8 years agocontrib/jwrapper: big rewrite of the AST visitor
Alexis Laferrière [Wed, 22 Jul 2015 13:50:20 +0000 (09:50 -0400)]
contrib/jwrapper: big rewrite of the AST visitor

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

8 years agocontrib/jwrapper: only the `java` module must always be imported
Alexis Laferrière [Tue, 21 Jul 2015 19:08:49 +0000 (15:08 -0400)]
contrib/jwrapper: only the `java` module must always be imported

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

8 years agocontrib/jwrapper: do not try to generate generic extern classes
Alexis Laferrière [Tue, 21 Jul 2015 18:01:31 +0000 (14:01 -0400)]
contrib/jwrapper: do not try to generate generic extern classes

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

8 years agocontrib/jwrapper: update constructor and use optional attributes in NitType
Alexis Laferrière [Tue, 21 Jul 2015 17:56:55 +0000 (13:56 -0400)]
contrib/jwrapper: update constructor and use optional attributes in NitType

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

8 years agocontrib/jwrapper: remove NitType::arg_id it was unused, only set
Alexis Laferrière [Tue, 21 Jul 2015 17:50:15 +0000 (13:50 -0400)]
contrib/jwrapper: remove NitType::arg_id it was unused, only set

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

8 years agocontrib/jwrapper: use JavaTypeConverter as a singleton
Alexis Laferrière [Tue, 21 Jul 2015 17:26:35 +0000 (13:26 -0400)]
contrib/jwrapper: use JavaTypeConverter as a singleton

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

8 years agoffi/java: pointers are stored as `long` so they grow with the architecture
Alexis Laferrière [Thu, 23 Jul 2015 17:54:20 +0000 (13:54 -0400)]
ffi/java: pointers are stored as `long` so they grow with the architecture

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

8 years agolib/java: fix expected type with JNI's `GetStringUTFChars`
Alexis Laferrière [Thu, 23 Jul 2015 17:53:51 +0000 (13:53 -0400)]
lib/java: fix expected type with JNI's `GetStringUTFChars`

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

8 years agoMerge: UTF-8 Strings
Jean Privat [Thu, 23 Jul 2015 17:33:29 +0000 (13:33 -0400)]
Merge: UTF-8 Strings

In regard to #1262, and after many rewritings, here's a fully-functional prototype for UTF-8 compliant Strings !

Many things have changed and now, operations on String will need to be considered differently to avoid bad surprises, namely:

- FlatBuffers are slow as hell when getting chars or modifying in-place (and an in-place modification can degenerate if a single-byte char is modified by a multibyte char)
- Length is now potentially expensive (especially within FlatBuffer where it is not cached)
- Indexed access is now O(n), though it is cached for local accesses (except in FlatBuffer)

Performances, for the user time of `nitc src/nitc.nit -o bin/nitc`, has gone from 4.55s to 4.80s, so +5.5%; we have seen worse.

So a little slowdown, but definitely acceptable when introducing UTF-8 in Strings.

Pull-Request: #1277
Reviewed-by: Jean Privat <jean@pryen.org>
Reviewed-by: Romain Chanoir <chanoir.romain@courrier.uqam.ca>
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>

8 years agoMerge: NSieve optimization
Jean Privat [Thu, 23 Jul 2015 17:33:14 +0000 (13:33 -0400)]
Merge: NSieve optimization

The `shootout_nsieve` benchmark has been present in tests for a long time (longer than I can remember actually).

Up until now, its performances have been constant and quite good, since the work was done in less than 15ms.

However, due to its use of `FlatBuffer` and indexed access, it degenerates when using UTF-8 (see #1277) and the run time of `shootout_nsieve` scales from `0m0.011s` to `1m59.870s`.

This PR fixes that.

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

8 years agoMerge: Fix lib/realtime on osx
Jean Privat [Thu, 23 Jul 2015 17:32:50 +0000 (13:32 -0400)]
Merge: Fix lib/realtime on osx

A lot of googling to solve two related issues on Mac OS X

* `clock_gettime` and cie is not provided, and one should use the more complex clock_get_time (and cie)
* the POSIX `-lrt` is refused by the linker

close #868

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

8 years agoMerge: Improve initial make
Jean Privat [Thu, 23 Jul 2015 17:32:37 +0000 (13:32 -0400)]
Merge: Improve initial make

Small improvement to make the initial make better.
For the final user perspective, an useless error message is removed and the whole process should be slightly faster.

Before:

* real time with cleared ccache: 4m46s
* user time with cleared ccache: 13m23s
* real time with full ccache: 42.5s
* user time with full ccache: 41.8s

After:

* real time with cleared ccache: 4m30s (-5.6%)
* user time with cleared ccache: 13m23s (-4.6%)
* real time with full ccache: 42.5s (-27.8%)
* user time with full ccache: 41.8s (-24.63)

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

8 years agotests: Updated for correct semantics, added new tests for Unicode
Lucas Bajolet [Thu, 23 Jul 2015 15:14:36 +0000 (11:14 -0400)]
tests: Updated for correct semantics, added new tests for Unicode

Signed-off-by: Lucas Bajolet <r4pass@hotmail.com>

8 years agosrc: Compiler, interpreter and parser updates for UTF-8
Lucas Bajolet [Fri, 10 Jul 2015 20:15:52 +0000 (16:15 -0400)]
src: Compiler, interpreter and parser updates for UTF-8

Signed-off-by: Lucas Bajolet <r4pass@hotmail.com>

8 years agolib/standard: Update libs for the support of UTF-8
Lucas Bajolet [Tue, 21 Jul 2015 17:46:08 +0000 (13:46 -0400)]
lib/standard: Update libs for the support of UTF-8

Signed-off-by: Lucas Bajolet <r4pass@hotmail.com>

8 years agolib/standard: Added services on NativeString and Char for the support of UTF-8
Lucas Bajolet [Fri, 10 Jul 2015 20:15:03 +0000 (16:15 -0400)]
lib/standard: Added services on NativeString and Char for the support of UTF-8

Signed-off-by: Lucas Bajolet <r4pass@hotmail.com>

8 years agolib/realtime: add a compatibility layer for OSX
Jean Privat [Thu, 23 Jul 2015 14:58:47 +0000 (10:58 -0400)]
lib/realtime: add a compatibility layer for OSX

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

8 years agocompiler: filter out -lrt flaf for OXS
Jean Privat [Thu, 23 Jul 2015 14:58:08 +0000 (10:58 -0400)]
compiler: filter out -lrt flaf for OXS

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

8 years agoMakefile: compile nitc_0 with --semi-global as it make the whole `make` faster
Jean Privat [Thu, 23 Jul 2015 13:56:48 +0000 (09:56 -0400)]
Makefile: compile nitc_0 with --semi-global as it make the whole `make` faster

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

8 years agoMakefile: do not rely in multiple targets as it may cause multiple invocation of...
Jean Privat [Thu, 23 Jul 2015 13:56:15 +0000 (09:56 -0400)]
Makefile: do not rely in multiple targets as it may cause multiple invocation of the recipe

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

8 years agoMakefile: remove now useless `rm .nitcompile`
Jean Privat [Thu, 23 Jul 2015 13:55:20 +0000 (09:55 -0400)]
Makefile: remove now useless `rm .nitcompile`

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

8 years agotests: Shootout_nsieve now uses byte arrays instead of Buffers
Lucas Bajolet [Wed, 22 Jul 2015 18:16:23 +0000 (14:16 -0400)]
tests: Shootout_nsieve now uses byte arrays instead of Buffers

Signed-off-by: Lucas Bajolet <r4pass@hotmail.com>

8 years agolib/c: CByteArray now uses Byte instead of Int
Lucas Bajolet [Wed, 22 Jul 2015 17:41:01 +0000 (13:41 -0400)]
lib/c: CByteArray now uses Byte instead of Int

Signed-off-by: Lucas Bajolet <r4pass@hotmail.com>

8 years agoMerge: lib/std: add Path::last_error to aggregate errors on path services.
Jean Privat [Wed, 22 Jul 2015 17:37:52 +0000 (13:37 -0400)]
Merge: lib/std: add Path::last_error to aggregate errors on path services.

It it not complete but still a start

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

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 agotests: update sav/ for new error messages in file access
Jean Privat [Wed, 22 Jul 2015 12:35:10 +0000 (08:35 -0400)]
tests: update sav/ for new error messages in file access

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

8 years agotests: add test_path
Jean Privat [Tue, 21 Jul 2015 13:20:23 +0000 (09:20 -0400)]
tests: add test_path

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

8 years agolib/std: add some cached services on Path
Jean Privat [Tue, 21 Jul 2015 13:11:48 +0000 (09:11 -0400)]
lib/std: add some cached services on Path

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>