81 Commits

Author SHA1 Message Date
Daniel Wirtz
ebae7cbd73
Implement optional type parameters (#360)
* Add a NATIVE<T> macro type to simplify use of a native WebAssembly type
* Add default type parameters for internal helpers for explicit loads and stores
* Unify loadUnsafe/loadUnsafeWithOffset etc. into one
* Renamed loadUnsafe etc. into just LOAD, like a macro
* Implement parsing of index signatures, but ignore them, for properly linting code
* Refactor TypedArray<T> to use macros
2018-12-07 14:33:32 +01:00
dcodeIO
63d4579118 Fix some array function parsing and serialization issues
Quite similar to #256 and also uses its test, but also fixes the serializer and doesn't try to parse an untyped 'x => x'.
2018-10-04 09:53:47 +02:00
dcodeIO
26e46f6f86 Reintroduce builtin decorator so these can appear anywhere in stdlib again
Avoids wrapping an undocumented function within 'memory.size' for example.
2018-07-19 02:10:04 +02:00
dcodeIO
9e508de69a Implement object literal parsing; Instantiate classes from object literals
Essentially, if the contextual type is a class with a constructor that takes zero arguments or doesn't have a constructor at all, an object literal can be used to initialize a new instance of that class with preset values.
2018-07-14 04:00:04 +02:00
dcodeIO
c4199673ef Support parsing of class expressions, see #161 2018-07-10 03:03:59 +02:00
dcodeIO
9c16363796 Initial external decorator for annotating explicit import names; Use file name as default module name in imports; Emit empty memory if there are no static segments; Update TLSF and examples accordingly 2018-06-28 01:44:32 +02:00
dcodeIO
188b4e48ce Try parsing signatures only if node is callable, see #149; Minor refactoring 2018-06-24 01:04:24 +02:00
dcodeIO
7a8995b18b Properly inline getters; Simplify blocks when last statement returns 2018-06-22 15:26:59 +02:00
dcodeIO
dd4be7b693 Fix some map issues; Simplify internal ArrayBuffer API a bit 2018-06-20 15:51:47 +02:00
dcodeIO
48e96cbcf5 Add initial map implementation to tests, see #17 2018-06-19 04:23:22 +02:00
dcodeIO
25b433dca9 Support 'import * as' directives, see #27 2018-06-12 00:45:19 +02:00
dcodeIO
7478c8a0d3 Initial implementation of 'instanceof'
Works like an assignability check for now / does not yet honor nullables.
2018-06-07 17:04:41 +02:00
dcodeIO
f69bccfe09 Add @operator.binary, @operator.prefix, @operator.postfix decorators for #124 2018-06-01 14:17:27 +02:00
dcodeIO
9d25f78fc1 Implement 'this' context parsing and serialization; Other minor improvements 2018-05-30 16:22:56 +02:00
dcodeIO
391db28fe2 Always try to eliminate branches if tree-shaking is enabled 2018-04-24 23:11:11 +02:00
dcodeIO
4929fca363 Move some numeric builtins to stdlib; Minor refactoring 2018-04-17 02:50:38 +02:00
Daniel Wirtz
623597c23a
Make the transition to ArrayBuffer backed Arrays (#70)
* Traverse base classes when resolving overloads
* Implement preliminary TypedArray accessors
* Extract decorator flags from common flags to make space
* Add '**' overload
* Implement basic explicit inlining
* Support inlining of instance methods
* Reduce number of required locals when inlining
* Implement inlining of operator overloads
* Fix issues when inlining generic functions
2018-04-11 23:35:19 +02:00
dcodeIO
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
dcodeIO
38a025950e Support parameter properties; Minor formatting 2018-03-25 00:21:58 +01:00
dcodeIO
00e6d613a9 Fix an issue with asc not finding bundled library files in the browser; Minor cleanup 2018-03-21 23:27:53 +01:00
dcodeIO
49f4d3dff1 Eliminate @builtin decorator for compatibility with TS 2018-03-21 16:29:08 +01:00
dcodeIO
fea8e65a41 Fix 'static readonly' not being recognized as constant anymore, see #44 2018-03-19 19:36:39 +01:00
dcodeIO
0fef69e445 Set up documentation generation 2018-03-19 01:12:18 +01:00
dcodeIO
5eb10d404f Document the purpose of most files 2018-03-17 23:41:48 +01:00
dcodeIO
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
dcodeIO
faac3c31eb AST cleanup; Definition generators scaffolding 2018-03-17 01:37:05 +01:00
dcodeIO
081ac768ae Give some love to the linter 2018-03-13 14:03:57 +01:00
dcodeIO
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
dcodeIO
7870e3ac18 Generic function type aliases 2018-03-12 17:44:09 +01:00
Daniel Wirtz
423533c6b0
Implement function types / indirect calls / trampolines (#39) 2018-03-12 14:06:39 +01:00
dcodeIO
d81ce5f907 Retain wrap state in parenthesized expressions; Void statements fwiw 2018-03-04 18:52:12 +01:00
dcodeIO
d4c00eaba3 Revised implicit type conversions; Initial function expression compilation 2018-02-28 01:48:01 +01:00
dcodeIO
bda6cb9792 Initial function expression parsing 2018-02-27 02:28:36 +01:00
dcodeIO
8dc517e352 Cleanup; Initial tslint integration 2018-02-25 00:13:39 +01:00
dcodeIO
48cbbbbd68 More cleanup 2018-02-16 18:57:51 +01:00
dcodeIO
3d7e8b2b7a More cleanup and a possible fix for #29 2018-02-16 11:55:13 +01:00
dcodeIO
d31e484b15 Cleanup; Fix an issue with 'let' declarations reusing a local 2018-02-14 19:21:31 +01:00
dcodeIO
b1c6ccab2a Use long.js in JS and native i64 in WASM; Compile literals more thoroughly 2018-02-14 09:18:43 +01:00
dcodeIO
ad92d91f01 Move built-in declarations to actual sources; Remove declaration is null checks; Resolve calls 2018-02-09 02:31:48 +01:00
dcodeIO
4736227879 Update binaryen to latest nightly; Source map support 2018-02-02 03:07:54 +01:00
dcodeIO
de066fc128 Preliminary strings
While not well-wrought, it's at least possible now to log some stuff when debugging
2018-01-27 05:35:14 +01:00
dcodeIO
64c939fdc4 Initial implementation of 'new'
This doesn't yet call the constructor or use provided parameters and just allocates raw memory
2018-01-19 16:13:14 +01:00
dcodeIO
7be4f9fabb Control flow evaluator; Support for block-level let/const variables 2018-01-18 23:34:12 +01:00
dcodeIO
9cdfa35938 Initial implementation if ugc, see #16; Fix tests 2018-01-18 01:48:03 +01:00
dcodeIO
d1fed692f6 Moved AST serialization to extra (not ultimately needed by asc) 2018-01-15 19:00:18 +01:00
dcodeIO
2c009c67d3 Initial element access compilation; Carefully approaching std array 2018-01-13 23:38:07 +01:00
dcodeIO
2df318a7ec Implicitly alias stdlib exports as program globals, see #8 2018-01-12 15:36:17 +01:00
dcodeIO
3980e53bb7 Let the optimizer decide what it takes to become a select 2018-01-12 05:03:25 +01:00
dcodeIO
0de05b543b Harden regexp parsing a bit 2018-01-07 18:15:21 +01:00
dcodeIO
7c8670ac35 Regexp literal support; Properly resolve statically inherited members 2018-01-07 15:07:46 +01:00