Added compile override for ParsedExpressionArray and ParsedExpressionMap
Essentially they are functions that accept the parsedExpression and the compilescope.
They return either null or a PartialExpression.
If they dont return null then the used partialexpression will be used instead of whatever the parsedexpression wouldve compiled 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)
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.
- 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 results from generic methods not being cast to the right type. Also fixed some bugs related to variants and added the variant value creation syntax VariantName.Option(arguments).
- Added ordinal to variant options
- Added GetMatchingVariantField; from now on values retrieved from variant option fields in a match or case will result in such expression. This may make it easier for compilers.
- WIP on improving iterable implementations
- Added validation of implementation completeness
- Added definition normalization (now also adds destructors as necessary)
- Fix interfaces with base interfaces
- Fixed various issues with generics and made instancing strict (all generic types MUST be defined in the mapper or an exception is thrown)
- Member registration mapping is now all-or-nothing: either no mapping is performed (for local scopes) or ALL mentioned type parameters must have an entry in the type parameter map.
- Static inner type IDs (including inner interfaces and inner aliases) no longer record their outer type; this caused problems when comparing types
- 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