e303248261
nac3core: exception type check and codegen
2022-02-12 22:50:32 +08:00
7ea5a5f84d
nac3core: codegen refactoring
...
- No longer check if the statement will return. Instead, we check if
the current basic block is terminated, which is simpler and handles
exception/break/continue better.
- Use invoke statement when unwind is needed.
- Moved codegen for a block of statements into a separate function.
2022-02-12 22:13:59 +08:00
b267a656a8
nac3core: added exception type and fixed primitive representation
...
- Added `Exception` primitive type and some builtin exception types.
Note that all exception types share the same layout, and should
inherit from the base `Exception` type. There are some hacks in the
toplevel module for handling exception types, we should revisit and
fix them later.
- Added new primitive types to concrete type module, otherwise there
would be some weird type errors.
- Changed the representation of strings to CSlice<u8>, instead of
CString.
2022-02-12 22:13:59 +08:00
050c862c1a
nac3core: function codegen callback changes
...
Added code generator argument to the callback, so it would be easier to
write complicated codegen with that callback. To prepare for RPC
codegen.
2022-02-12 21:24:41 +08:00
d6ab73afb0
nac3core: style
2022-02-07 02:18:56 +08:00
6f9f455152
nac3core: list slice irrt use one function to handle var size
2022-02-07 02:09:50 +08:00
e50f1017fa
nac3core: irrt list of tuple use struct value representation
2022-02-07 02:09:50 +08:00
77608346b1
nac3core: handle tuple by value
2022-02-07 02:09:50 +08:00
1288624218
lock insta version ( #179 )
2022-01-31 15:18:49 +08:00
de065cfa14
update dependencies
2022-01-31 12:28:40 +08:00
ace0e2a2c6
nac3core: fix use of size_t in list comprehension, cleanup
2022-01-25 03:35:59 +08:00
fd4bf12808
fix grammar of some type error messages
2022-01-14 16:56:23 +08:00
ae8f82ccb0
nac3core: fix broken tests
2022-01-14 16:28:37 +08:00
4a1a4dc076
nac3core/artiq/standalone: symbol resolver return error msg for type error of host variables
2022-01-14 16:28:34 +08:00
eba9fc8a69
nac3core: add missing location for type inference
2022-01-14 03:05:11 +08:00
4976e89ae2
nac3core: list slice support
2022-01-13 16:53:32 +08:00
82509d60ec
remove obvious comment
2022-01-13 12:31:28 +08:00
2579ecbd19
nac3core: irrt module get attribute id using name instead of hard code
2022-01-11 17:25:07 +08:00
44f4c4f028
nac3core: build script use Path::join
2022-01-09 12:06:45 +08:00
8ef9e74aaf
move rustfmt.toml upper
2022-01-09 11:31:06 +08:00
b88f17ed42
switch to clang-unwrapped, build IRRT with wasm32
2022-01-09 10:56:28 +08:00
1ee857de6a
nac3core: format, fix clippy warning
2022-01-09 01:12:18 +08:00
4a65d82db5
introduce IRRT, implement power
...
based on code by Yijia
M-Labs/nac3#160
2022-01-09 00:57:50 +08:00
7193e3f328
nac3core: codegen fix empty list llvm type
2021-12-30 05:09:21 +08:00
85e06d431a
nac3core: improve some type annotation error messages ( #87 )
2021-12-28 10:49:14 +08:00
9b3b47ce50
fix broken tests
2021-12-28 01:38:16 +08:00
88f0da7bdd
add file name to AST node location
2021-12-28 01:28:55 +08:00
1bd966965e
fixed M-Labs/nac3#146
2021-12-27 22:56:50 +08:00
fa04768a77
redo "nac3core: fix #84 "
...
This reverts commit 86005da8e1
.
2021-12-27 22:56:26 +08:00
86005da8e1
Revert "nac3core: fix #84 "
...
This reverts commit 0902d8adf4
.
2021-12-26 08:35:27 +08:00
5aa6749241
remove num-traits
2021-12-26 00:32:08 +08:00
80d3ab1b0f
remove bigints
2021-12-26 00:23:54 +08:00
d2a5cd6d57
update to LLVM 13
2021-12-25 22:49:47 +08:00
9e3f75255e
update inkwell. Closes #67
2021-12-25 22:17:06 +08:00
0902d8adf4
nac3core: fix #84
2021-12-23 15:26:48 +08:00
66320679be
improve error messages
...
#112 , #110 , #108 , #87
Reviewed-on: M-Labs/nac3#145
Co-authored-by: ychenfo <yc@m-labs.hk>
Co-committed-by: ychenfo <yc@m-labs.hk>
2021-12-22 08:52:19 +08:00
0ff995722c
Revert "nac3core: add missing expr concrete type check"
...
This reverts commit cb450372d6
.
2021-12-20 18:13:45 +08:00
e2b44a066b
return int32 in len(). Closes #141
2021-12-20 17:44:42 +08:00
cb450372d6
nac3core: add missing expr concrete type check
2021-12-19 18:01:49 +08:00
ff27a1697e
nac3core: fix for loop type inference
2021-12-19 18:01:49 +08:00
91625dd327
update kernel-only attribute annotation
...
Reviewed-on: M-Labs/nac3#127
Co-authored-by: ychenfo <yc@m-labs.hk>
Co-committed-by: ychenfo <yc@m-labs.hk>
2021-12-19 11:04:53 +08:00
b5637a04e9
nac3core: use official implementation for len
2021-12-13 10:44:33 +08:00
2c6601d97c
nac3core: fix len on range with step of different sign
2021-12-13 10:44:33 +08:00
82359b81a2
nac3core: fix bool to int conversion
2021-12-13 04:13:43 +08:00
4d2fd9582a
nac3core: fix broken tests
2021-12-09 01:37:05 +08:00
b7892ce952
nac3core: add len support for list and range
2021-12-09 01:37:00 +08:00
01d3249646
nac3core: add missing llvm range type
2021-12-09 01:16:05 +08:00
3f73896477
remove a small amount of LLVM bloat
...
Also avoids libffi.dll dependency on Windows.
2021-12-08 17:41:34 +08:00
4526c28edb
Merge branch 'windows'
2021-12-02 22:26:55 +08:00
25fc9db66d
cargo: specify inkwell LLVM target explicitly
...
Windows LLVM linking otherwise breaks on the non-existing targets.
2021-12-02 22:24:33 +08:00