Functional Wrappers, Bridge Methods, Type descriptor fix
Functional interface wrappers should work now
Implementing a method with a signature differing from the actual one (e.g. when dealing with generics) now creates a proper bridge method
The Java Bytecde compiler used an incorrect method in checkCast
We now no longer use hardcoded 'accept's as method names but whatever the context tells us to.
- Fixed a number of bugs
- Upgrading build system to a more uniform system
- Improving error output (for IDE)
- Changed parser to generate line offsets differently (easier for IDE to process)
- Fix auto getters & setters for static fields not being static
- Fix getters for globals not having their corresponding fields registered correctly in the native implementation
- Added java sources for JavaScripting
- Fix crash when performing access checks between script and class
- Fix default constructor not working properly
- Fix integration classes without exposed constructor being instantiable if they have a default (non-exposed) constructor
- Fix extern methods failing validation
Revamped the compilation system; it now works fully modular. Also, a new ScriptingEngine class has been created to make it very easy to create a scripting environment.
Improved handling of functions, they now use the most generic variant available, using standard function types where possible. (TODO: there are still more to add)
- Fix missing shift operators in some integer types
- Fix some problems when comparing a long with an int or ulong with uint
- Add signed-unsigned implicit array conversion (sbyte[] <-> byte[], short[] <-> ushort[], int[] <-> uint[], long[] <-> ulong[])
- Fix bug when copying multiple lines from the source editor
- Added string <-> byte[] conversion operations
- Fix unsigned arrays, use compact representations
- Added suffixes & custom suffixes
- Added 0x 0b 0o for hex, binary and octal notation
- Ranges now only have a single base type; from and to must be the same type
- Adjusted builtins and stdlib to use usize where applicable
- Moved building a SemanticModule from ParsedFile to the parser; reduces dependencies
- Fixed ranges, all range types should be supported now
- Cleaned up unused code
- Refactored the JavaMethodInfo class to the shared JavaMethod one
- Use valueOf for boxing instead of the boxed type constructors
- Fixed numerous issues with undetermined types, type inference, type aliases, inner types and generic types
- Distinguished between type resolution and code compilation stages, both have a different context now
- Added new concepts: "compiling type" and "compiling package", which is able to precompile correctly now
- Rewrote the way precompilation works; precompilation no longer exists, instead, compilation order of methods is changed. This reduces the amount of code needed and improves quality of the system.
- Fixed members of base interfaces not being available to implementation code
- Changed the way type modifiers are coded
- Changed the way modified types are processed
- Added immutable keyword
- Added expression, statement and type normalization
- Improved naming of synthetic functions