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
- Fixed crash formatting scripts without script statements
- Fixed bug causing lambda headers not to be inferred anymore
- Refactored some IDE code, also fixes scrolling not working properly
- Added support for implementations and method overriding
- Added override method header inference: if a method overrides or implements another method, and types are missing from the header, these will be inherited from the base method. This works with any kind of method (method, operator, getter, setter, caller)
- Added method return type inference, which is automatically inferred from the return value of the contents of the method. This functionality is not yet fully implemented, and will fail with certain expressions (most notably, member expressions and calls). The goal is to make this system work as long as there is no recursion. This works with methods, operators, getters, calls as well as fields and constants with initializers.
- Removed the any type. With return type inference its usefulness has become even more limited, and proper implementation of the any type is expected to be complicated, thus not worth the effort. (this may be revisited later on, as "any" remains a reserved keyword)
- Fixed compilation of throw as panic expressions in lambda function bodies
- Moved name from FunctionalMember to MethodMember, where it makes more sense
- Each method (or functional) is now also aware of the member that it overrides
- Removed some redundant types
- Moved scopes to CodeModel and removed Linker
- Added const members and expression support for them
- Added statement transformation (can be used by annotations)
- Refactored some formatting things to be reusable for source code translation targets
- Removed generic compare
- Rewrote the way builtins are handled and implemented nearly all operations for all supported basic / builtin types
- Added java source code compilation
- Added throw expression, allowing a throw to be formulated as expression (handy inside matches)
- Fixed validator acting up on type argument validation
- Moved enum constants to enum type, they are no longer type members
- Added override modifier
- Performed some minor fixes during compilation
- Fixed type member registration on optionals
- Expanded arrays with functional methods
-
- Added (key, value) iterator for associative arrays
- Added type bounds checking code
- Fixed definitions not being added to the respective packages
- Fixed various bugs with generics
- Added some things to stdlib and created collections library
- Basic work on enumerations, they should work now
- this() constructor calls should work now
- Moved methods for calulcating descriptions and signatures to seperate utils class
- Basic work on enumerations, they should work now
- this() constructor calls should work now
- Moved methods for calulcating descriptions and signatures to seperate utils class
- Variable and parameter names should in most cases be stored in the generated code, toggleable with a boolean in JavaWriter
- TryCatch should work, except for returns or jumps outside the block as no finally's will be applied then, also, didnt yet start with Try with resources
- Started with classes, constructors, fields and methods
- Fixed priorities for brackets in the code formatter
- Added code position to definitions
- In a FieldMember the final status is now stored in the modifiers instead of a separate field
- WIP on implementing function definitions properly
- Added parameter index to function parameters
- Removed unnecessary expression types; these can be implemented differently
- WIP on a code (re)formatter