Commit Graph

71 Commits

Author SHA1 Message Date
350befee9b Also compile the constructor if a class is exported 2018-04-19 02:58:04 +02:00
5a2f834c0d Fix game-of-life example inconsistencies; Fix ternary expression issues in void contexts and variable statements; Simplify HEAP_BASE handling 2018-04-18 15:12:33 +02:00
4026c087fd Export the trampoline and provide a helper for functions that take optional arguments 2018-04-17 16:04:29 +02:00
4929fca363 Move some numeric builtins to stdlib; Minor refactoring 2018-04-17 02:50:38 +02:00
81223977d0 Fix external names of class exports and similar; Support a few more kinds in TSDBuilder, see #74 2018-04-15 00:34:19 +02:00
ee73a4d28f Initial type parameter inference, see #61
This catches the most common cases but doesn't yet implement inference involving the return type because some prequesites are not yet in place (see test case).
2018-04-13 12:25:27 +02:00
748e811137 Proper isNaN/isFinite without a temp. local 2018-04-12 20:40:00 +02:00
5b97427bfa Update dist files 2018-04-11 23:37:33 +02:00
dcc0e284fb Make type checking builtins also accept just a type argument 2018-04-07 23:31:36 +02:00
8ffc7d463d Fix invalid assertion when resolving element accesses 2018-04-07 21:58:22 +02:00
8770f7b548 New ArrayBuffer/TypedArray; Stdlib restructure; Fix importing stdlib in stdlib; Traverse constructors; Allow initialization of readonly instance fields in constructors 2018-04-07 03:27:22 +02:00
6268b92eba Resolve string instances to the program's string class 2018-04-06 00:19:45 +02:00
26601dcfb1 Make '===' and '!==' ignore operator overloads
While not semantically equivalent with JS semantics, this appears to be the right thing to do in AS. Also avoids using changetype just for this purpose, which will eventually become considered unsafe.
2018-04-05 02:42:12 +02:00
7e90ab161d Simplify resolve infrastructure; Fix handling of nested element and property accesses 2018-04-05 02:23:03 +02:00
acfef646ef Update dist files; Also parse name and source mapping sections in lib/parse 2018-04-04 03:41:04 +02:00
5823e35f37 Progress and a tiny WASM binary parser 2018-04-03 23:56:48 +02:00
06198a3723 Rename lib prefix to '~lib' (parens aren't valid); Add built-in alignof<T>; Prepare for ArrayBufferView 2018-04-02 19:05:26 +02:00
6ff69394f0 Minor cleanup 2018-03-31 18:18:55 +02:00
60f75c931b Update dist files 2018-03-30 17:51:47 +02:00
792202ac5a Add an option to alias global objects
This for example allows to switch the default 'Math' implementation a program will use. Uses 'NativeMath' by default.
2018-03-26 16:54:25 +02:00
e75d006d26 Implement Math/Mathf.pow 2018-03-26 03:50:06 +02:00
e26734ef90 Implement Math/Mathf.exp; Initial math test suite 2018-03-25 17:42:56 +02:00
38a025950e Support parameter properties; Minor formatting 2018-03-25 00:21:58 +01:00
c80bf35747 Move fmod/fmodf to builtins and bind them to the '%' operator 2018-03-24 18:39:20 +01:00
721d77012b Math scaffolding 2018-03-24 17:18:15 +01:00
19a616dd96 Support indirect calls with omitted arguments 2018-03-24 09:46:22 +01:00
664f2a1c0d Add offsetof<T> builtin; Put a function's trampoline into the function table if a it has optional parameters; TypedArray scaffolding 2018-03-24 00:38:49 +01:00
ec5bb7ad51 Export function table by default and add an option to import it 2018-03-23 15:12:03 +01:00
2738eee9cd Call trampolines with the actual number of provided operands
When calling indirectly, the number of required operands might not be known at compile time and providing the actual number of operands instead solves this.
2018-03-23 15:00:09 +01:00
4adb69f73a Binary expression operator overloads for +/==; Check allocation flow in ternary expressions; Cache empty array buffers; Sealed decorator for non-derivable internals 2018-03-23 12:45:29 +01:00
9cc0fcd611 Initial ArrayBuffer implementation; Conditional allocation within constructors; Explicit constructor return values 2018-03-23 01:47:01 +01:00
00e6d613a9 Fix an issue with asc not finding bundled library files in the browser; Minor cleanup 2018-03-21 23:27:53 +01:00
d4c46b036e Fix trampolines not inheriting contextual type arguments 2018-03-21 17:47:08 +01:00
4687dc2572 Fix contextual type argument propagation when calling function expressions; Implement indirect calls to concrete functions 2018-03-21 17:17:31 +01:00
49f4d3dff1 Eliminate @builtin decorator for compatibility with TS 2018-03-21 16:29:08 +01:00
8c1847b316 Properly handle 'void' return type when checking signature compatibility 2018-03-21 01:16:46 +01:00
be66abbd78 Initial static arrays of basic element types; Fixed member names in generic contexts 2018-03-20 23:41:37 +01:00
2c0ddf4f80 Support 'this' in static functions, fixes #45; Fix propagation of 'ambient' flag 2018-03-20 12:02:05 +01:00
fea8e65a41 Fix 'static readonly' not being recognized as constant anymore, see #44 2018-03-19 19:36:39 +01:00
5323e64af9 Implement array functions with just an expression body 2018-03-19 01:22:19 +01:00
0fef69e445 Set up documentation generation 2018-03-19 01:12:18 +01:00
5eb10d404f Document the purpose of most files 2018-03-17 23:41:48 +01:00
d45eb93df6 Allow intercepting comments when tokenizing
It appears that this isn't necessary for the compiler at this point, but might be good to have for future tooling.
2018-03-17 19:41:48 +01:00
2dfd9aae3a Fix dist files 2018-03-17 14:56:37 +01:00
83e96892f2 Statically eliminate unnecessary branches in generic contexts
In order to use the new compile time type checks in generics, untaken branches must be skipped because these might be invalid.
2018-03-17 14:40:58 +01:00
2ed9fac171 Initial compile time type check builtins 2018-03-17 12:54:37 +01:00
faac3c31eb AST cleanup; Definition generators scaffolding 2018-03-17 01:37:05 +01:00
8e7bad7459 Reduce unnecessary diagnostic noise 2018-03-14 15:31:50 +01:00
507482adb2 Pull more (possibly) repeated loads to locals 2018-03-14 00:27:35 +01:00
23a7db4dc3 Ensure consistent variable modifiers
'var' is a distinct local or mutable global, 'let' a shared local
2018-03-13 02:32:10 +01:00