Sebastien Bourdeauducq
47f563908a
basic string support ( #30 )
2021-11-02 23:22:49 +08:00
Sebastien Bourdeauducq
613020a717
test: add missing id_to_name entry
2021-11-02 18:34:48 +08:00
pca006132
083eacc268
with parallel/sequential support
...
Behavior of parallel and sequential:
Each function call (indirectly, can be inside a sequential block) within a parallel
block will update the end variable to the maximum now_mu in the block.
Each function call directly inside a parallel block will reset the timeline after
execution. A parallel block within a sequential block (or not within any block) will
set the timeline to the max now_mu within the block (and the outer max now_mu will also
be updated).
Implementation: We track the start and end separately.
- If there is a start variable, it indicates that we are directly inside a
parallel block and we have to reset the timeline after every function call.
- If there is a end variable, it indicates that we are (indirectly) inside a
parallel block, and we should update the max end value.
Note: requires testing, it is difficult to inspect the output IR
2021-10-31 23:54:37 +08:00
pca006132
fb92b6d364
nac3core: supports range iterator
2021-10-23 23:53:36 +08:00
pca006132
c4259d14d1
fixed some clippy warnings
2021-10-16 18:08:13 +08:00
pca006132
26076c37ba
nac3core/typecheck: supports recursive type inference
2021-10-16 15:56:49 +08:00
pca006132
11144301ca
nac3artiq: added simple host value support
2021-10-06 16:07:42 +08:00
pca006132
693ac7d336
nac3core/toplevel: added personality symbol config
2021-09-25 21:44:00 +08:00
pca006132
799ed58d21
nac3core/type_inferencer: avoid type var for assign
2021-09-22 19:25:47 +08:00
pca006132
105d605e6d
nac3core: fix clippy warnings
2021-09-22 18:04:06 +08:00
pca006132
97f5b7c324
fixed performance regression
2021-09-22 18:04:06 +08:00
pca006132
7d48883583
fixed tests
2021-09-22 18:04:06 +08:00
pca006132
084efe92af
nac3core: use string interning
2021-09-22 18:04:06 +08:00
pca006132
1b5ac3cd25
nac3core: do not alloc call if it is monomorphic
2021-09-22 18:04:06 +08:00
pca006132
5ed2b450d3
nac3core/typecheck: no type variable for monomorphic functions
2021-09-22 18:04:06 +08:00
ychenfo
1c170f5c41
nac3core: type inferencer fix the pass statement
2021-09-21 13:19:13 +08:00
pca006132
3c930ae9ab
fixed #12
2021-09-20 15:51:42 +08:00
ychenfo
35a94a8fc0
nac3core: fix broken test
2021-09-20 01:58:07 +08:00
ychenfo
917d447605
nac3core: clean up, fix broken test
2021-09-09 02:09:35 +08:00
ychenfo
1300b5ebdd
nac3core: clean up and format
2021-09-08 19:45:36 +08:00
ychenfo
87f25e1c5d
nac3core: remove mutex on dyn symbol resolve
2021-09-08 19:27:32 +08:00
ychenfo
55335fc05d
nac3core: top level simple type var handled
2021-09-08 02:27:12 +08:00
ychenfo
54b4572c5f
nac3core: allow interior mutability to dyn symbolresolver, add add_id_def to symbolresolver trait, remove primitive from top level def list
2021-09-06 19:23:04 +08:00
ychenfo
e2a9bdd8bc
nac3core: toplevel no duplicate type var too early
2021-08-30 14:15:36 +08:00
pca006132
8c1c7fcfc3
nac3core: fixed broken tests
2021-08-27 13:04:51 +08:00
pca006132
6633eabb89
nac3core: optimized by using HashSet
2021-08-27 12:36:51 +08:00
pca006132
a24e204824
type_inferencer: check defined identifiers during inference
2021-08-27 11:13:43 +08:00
pca006132
0608fd9659
fixed test and nac3standalone
2021-08-25 15:30:36 +08:00
pca006132
173102fc56
codegen/expr: function codegen and refactoring
2021-08-25 15:29:58 +08:00
ychenfo
01f7a31aae
put parse ast into type annotation into one function
2021-08-24 17:44:37 +08:00
ychenfo
32773c14e0
move top level related things to a separate module
2021-08-24 17:19:17 +08:00
ychenfo
56f082ca7c
handle type var associated with class/function partially, change llvm version of nac3embedded to 11
...
format
2021-08-23 17:00:32 +08:00
ychenfo
fb5b4697a9
fix rebase conflict and some test failure with unifier's error message
2021-08-23 10:34:11 +08:00
ychenfo
40b062ce0f
change the parse type annotation parameter type, refactoring top level
2021-08-23 02:54:45 +08:00
pca006132
957ceb74e4
nac3core/typecheck: added basic location information
2021-08-21 14:51:46 +08:00
ychenfo
6279dbb589
formating
2021-08-18 16:33:50 +08:00
ychenfo
4fcd48e4c8
try to use def list ast tuple and remove method_to_def_id map
2021-08-18 10:01:11 +08:00
ychenfo
fa40fd73c6
formatted
2021-08-16 20:17:08 +08:00
ychenfo
3734663188
add RefCell to FunSignature in TypeEnum
2021-08-16 13:53:45 +08:00
pca006132
d3ad894521
removed code comment
2021-08-13 16:30:33 +08:00
pca006132
e2adf82229
threadpool for parallel code generation
2021-08-13 14:48:46 +08:00
pca006132
cb01c79603
removed Arc from TypeEnum
2021-08-13 13:33:59 +08:00
ychenfo
3a93e2b048
TypeEnum::TObj.param is now RefCell for interior mutability
2021-08-12 13:17:51 +08:00
pca006132
d46a4b2d38
symbol_resolver: fixed type variable handling
2021-08-12 10:25:32 +08:00
pca006132
de8b67b605
refactored symbol resolver
2021-08-11 17:28:29 +08:00
ychenfo
42a636b4ce
add Arc<Mutex<dyn SymbolResolver>> and change from Box<SymbolResolve> to Arc<SymbolResolver>, need format and cleanup
2021-08-11 15:11:51 +08:00
ychenfo
82ce816177
refactored top level parsing, need review
2021-08-10 10:37:06 +08:00
pca006132
86ca02796b
function parameter handling
2021-08-07 17:25:14 +08:00
pca006132
34d3317ea0
store operation method signature
2021-08-07 10:41:53 +08:00
pca006132
c405e46b00
moving location and symbol_resolver out from typecheck
2021-08-07 10:28:41 +08:00
ychenfo
18db2ddd53
change the type TypeEnum::TObj {object_id} to DefinitionId as with top_level
...
change TopLevelDef::Class {object_id} to DefinitionId
2021-08-06 10:57:01 +08:00
ychenfo
fe26070364
cleanup basic_test_env
2021-08-06 10:57:01 +08:00
pca006132
29286210b5
implementing codegen
2021-08-05 14:56:09 +08:00
pca006132
b01d0f6fbb
formatting
2021-08-05 14:56:09 +08:00
ychenfo
c0227210df
bit shift lhs rhs same type; float ** int and float ** float both supported
2021-08-05 11:55:46 +08:00
CrescentonC
d052f007fb
fix typo of primitives method
2021-08-04 12:03:56 +08:00
pca006132
f00c1813e3
top-level related changes
2021-08-03 13:38:27 +08:00
pca006132
a3acf09bda
typedef: make it send
...
Rc in calls is not send, so we use Arc instead.
2021-08-03 12:38:12 +08:00
CrescentonC
a7e3eeea0d
add primitive magic method support; change from TypeEnum::TObj { fields: Mapping<String>, ..} to TypeEnum::TObj {fields: RefCell<Mapping<String>>, .. } for interior mutability
2021-08-02 17:36:37 +08:00
CrescentonC
7e0d55443a
better structured primitive magic methods impl
2021-08-02 11:28:05 +08:00
CrescentonC
b87c627c41
updated with field in the test environment
2021-07-30 15:46:57 +08:00
CrescentonC
ae79533cfd
Merge remote-tracking branch 'origin/hm-inference' into hm-inference_anto
2021-07-30 15:41:53 +08:00
CrescentonC
9983aa62e6
add primitive magic methods
2021-07-30 15:40:14 +08:00
pca006132
f2c5a9b352
added location -> call mapping
...
This allows code generation module to get function instantiation
parameter directly.
2021-07-30 11:01:11 +08:00
ychenfo
09e76efcf7
start adding primitive magic methods
2021-07-29 15:36:19 +08:00
pca006132
832513e210
new is_concrete type check
2021-07-28 17:25:19 +08:00
pca006132
f665ea358b
fixed fold
2021-07-28 10:44:58 +08:00
pca006132
e15473d2c9
fixed pattern matching
2021-07-27 14:39:53 +08:00
pca006132
5f0490cd84
added virtual test
2021-07-27 11:58:35 +08:00
pca006132
ddcf4b7e39
refactored typedef
2021-07-23 15:57:37 +08:00
pca006132
88c45172b2
basic check for use-before-def
2021-07-22 17:07:49 +08:00
pca006132
c315227a28
init function check
2021-07-22 15:36:37 +08:00
pca006132
d484fa1e5c
added return type check
2021-07-22 11:49:00 +08:00
pca006132
4f81690128
modified occur check
2021-07-21 16:10:11 +08:00
pca006132
b3d849ea7a
list test
2021-07-21 16:06:06 +08:00
pca006132
3e03398d9b
obj test
2021-07-21 15:59:01 +08:00
pca006132
2f5c3b3cb7
more cleanup and started adding tests
2021-07-21 15:36:35 +08:00
pca006132
0296844d5f
cleanup
2021-07-21 13:28:05 +08:00