Commit Graph

360 Commits

Author SHA1 Message Date
c356062239 symbol_resolver: handle list and tuples 2021-08-24 14:58:19 +08:00
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
39f300b62a clean up and add duplicate function/parameter/class name test
formatted
2021-08-23 14:22:46 +08:00
7b1fe36e90 formatted 2021-08-23 11:13:45 +08:00
fb5b4697a9 fix rebase conflict and some test failure with unifier's error message 2021-08-23 10:34:11 +08:00
364054331c handle class fields and methods 2021-08-23 02:54:45 +08:00
40b062ce0f change the parse type annotation parameter type, refactoring top level 2021-08-23 02:54:45 +08:00
f5b8b58826 added tuple assignment check 2021-08-21 15:11:01 +08:00
c4d6b3691a codegen/expr: fixed warnings 2021-08-21 15:10:50 +08:00
957ceb74e4 nac3core/typecheck: added basic location information 2021-08-21 14:51:46 +08:00
e47d063efc codegen: store to list element 2021-08-19 17:14:38 +08:00
0e2da0d180 codegen: gep related fixes
we can now compile simple programs that uses tuples and lists
2021-08-19 16:54:15 +08:00
3279f7a776 codegen for simple function call, and various fixes 2021-08-19 15:30:15 +08:00
d1215bf5ac nac3core/codegen/expr: fixed typo 2021-08-19 11:45:33 +08:00
6e424a6a3e fixed codegen test 2021-08-19 11:32:22 +08:00
9a07ef3301 Merge remote-tracking branch 'origin/hm-inference_anto' into hm-inference 2021-08-19 11:32:04 +08:00
c238c264e7 add type vars to the primitive binop function def 2021-08-19 11:18:58 +08:00
f8a697e3d4 switch to LLVM 11 2021-08-19 11:14:35 +08:00
4b38fe66a2 format 2021-08-18 17:33:48 +08:00
9cb07e6f04 start to handle base inheritance methods, fields 2021-08-18 17:32:55 +08:00
6279dbb589 formating 2021-08-18 16:33:50 +08:00
529442590f some parsing of top level class fields and methods 2021-08-18 16:28:17 +08:00
4fcd48e4c8 try to use def list ast tuple and remove method_to_def_id map 2021-08-18 10:01:11 +08:00
619963dc8c removed locks in toplevelcomposer 2021-08-17 16:36:06 +08:00
276daa03f7 start refactorinng for less redundancy 2021-08-17 14:01:18 +08:00
a94145348a fix on comments and redundant code, start handling 'self' things 2021-08-17 11:07:16 +08:00
fa40fd73c6 formatted 2021-08-16 20:17:08 +08:00
79ce13722a partially parsed class methods nad fields 2021-08-16 17:40:12 +08:00
eb814dd8c3 clean unused use 2021-08-16 13:57:21 +08:00
3734663188 add RefCell to FunSignature in TypeEnum 2021-08-16 13:53:45 +08:00
d8c3c063ec split top level handling in several functions 2021-08-16 13:53:39 +08:00
d3ad894521 removed code comment 2021-08-13 16:30:33 +08:00
784111fdbe Merge remote-tracking branch 'origin/hm-inference_anto' into hm-inference 2021-08-13 16:28:04 +08:00
d30918bea0 worker thread panic handling 2021-08-13 16:20:14 +08:00
e2adf82229 threadpool for parallel code generation 2021-08-13 14:48:46 +08:00
33391c55c2 add Sync bound to Symbol resolver in top level 2021-08-13 14:22:49 +08:00
3f65e1b133 start refactor top_level 2021-08-13 13:57:24 +08:00
ba5bb78f11 top level parse class base/generic 2021-08-13 13:57:24 +08:00
e176aa660d commit for pull new symbol resolver 2021-08-13 13:57:24 +08:00
cb01c79603 removed Arc from TypeEnum 2021-08-13 13:33:59 +08:00
1db8378f60 formatting 2021-08-12 16:36:23 +08:00
8c7ccb626b fixed symbol_resolver blanket implementation 2021-08-12 14:44:50 +08:00
1f6c16e08b fixed compilation failure 2021-08-12 13:56:51 +08:00
77943a8117 added primitive codegen test 2021-08-12 13:56:06 +08:00
3a93e2b048 TypeEnum::TObj.param is now RefCell for interior mutability 2021-08-12 13:17:51 +08:00
824a5cb01a register top level clean up 2021-08-12 10:51:41 +08:00
17ee8fe6d0 starting cleaning up and further add Arc<Mutex> 2021-08-12 10:51:41 +08:00
d46a4b2d38 symbol_resolver: fixed type variable handling 2021-08-12 10:25:32 +08:00
de8b67b605 refactored symbol resolver 2021-08-11 17:28:29 +08:00
0af4e95914 Merge remote-tracking branch 'origin/hm-inference_anto' into hm-inference 2021-08-11 15:42:32 +08:00
99276c8f31 formatted 2021-08-11 15:18:21 +08:00
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
e112354d25 codegen refactored 2021-08-11 14:37:26 +08:00
43236db9bd update some previous work on top level with the clean up 2021-08-11 13:31:59 +08:00
1bec6cf2db continue working on the top level 2021-08-11 11:16:53 +08:00
a73ab922e2 cleanup 2021-08-10 21:57:31 +08:00
82ce816177 refactored top level parsing, need review 2021-08-10 10:37:06 +08:00
6ad953f877 top level class roughly handled, push for review 2021-08-10 10:37:06 +08:00
4db871c244 put alloca in init block 2021-08-09 16:37:28 +08:00
cc0692a34c modified alloca 2021-08-09 16:19:20 +08:00
7a90ff5791 while loop constructs 2021-08-09 16:10:17 +08:00
d8c713ce3d assignment statement 2021-08-09 15:39:50 +08:00
1ffb792000 make tuple a ptr to a struct instead of a struct 2021-08-07 17:41:48 +08:00
057fcfe3df default parameter value generation 2021-08-07 17:31:01 +08:00
86ca02796b function parameter handling 2021-08-07 17:25:14 +08:00
711482d09c expr codegen cleanup 2021-08-07 15:30:03 +08:00
7a38ab3119 codegen for function call 2021-08-07 15:06:39 +08:00
34d3317ea0 store operation method signature 2021-08-07 10:41:53 +08:00
c405e46b00 moving location and symbol_resolver out from typecheck 2021-08-07 10:28:41 +08:00
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
fe26070364 cleanup basic_test_env 2021-08-06 10:57:01 +08:00
095f28468b added if expr 2021-08-05 16:52:41 +08:00
29286210b5 implementing codegen 2021-08-05 14:56:09 +08:00
b01d0f6fbb formatting 2021-08-05 14:56:09 +08:00
3dcd846302 added rayon dependency 2021-08-05 14:56:09 +08:00
c0227210df bit shift lhs rhs same type; float ** int and float ** float both supported 2021-08-05 11:55:46 +08:00
99c71687a6 fixed: bitwise shift rhs can only be int32; better structured code 2021-08-04 16:46:16 +08:00
d052f007fb fix typo of primitives method 2021-08-04 12:03:56 +08:00
8452579c67 use parking_lot RwLock
The std::sync::RwLock is platform dependent, and is unfair on Linux
(may starve writer)
2021-08-03 14:11:41 +08:00
f00c1813e3 top-level related changes 2021-08-03 13:38:27 +08:00
d4d12a9d1d added crossbeam dependency 2021-08-03 12:38:55 +08:00
a3acf09bda typedef: make it send
Rc in calls is not send, so we use Arc instead.
2021-08-03 12:38:12 +08:00
52dc112410 unification table: modified conversion impl
from UnificationTable<Rc<RefCell<T>> <==> UnificationTable<T>
to UnificationTable<Rc<T>> <==> UnificationTable<T>
2021-08-03 12:35:58 +08:00
d4807293b0 clean up unused variabls and comments 2021-08-03 10:41:52 +08:00
d4721db4a3 not creating temp for borrow, more concise code 2021-08-03 09:45:39 +08:00
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
f7bbc3e10d Merge branch 'hm-inference' into hm-inference_anto 2021-08-02 11:33:36 +08:00
7e0d55443a better structured primitive magic methods impl 2021-08-02 11:28:05 +08:00
197a72c658 added comment 2021-07-30 16:43:25 +08:00
eba92ed8bd added method to get all instantiations 2021-07-30 16:32:50 +08:00
b87c627c41 updated with field in the test environment 2021-07-30 15:46:57 +08:00
ae79533cfd Merge remote-tracking branch 'origin/hm-inference' into hm-inference_anto 2021-07-30 15:41:53 +08:00
9983aa62e6 add primitive magic methods 2021-07-30 15:40:14 +08:00
7ad8e2d81d cleanup some error reporting code 2021-07-30 13:50:46 +08:00
743a9384a3 added rigid type variable 2021-07-30 11:28:27 +08:00
f2c5a9b352 added location -> call mapping
This allows code generation module to get function instantiation
parameter directly.
2021-07-30 11:01:11 +08:00
09e76efcf7 start adding primitive magic methods 2021-07-29 15:36:19 +08:00
832513e210 new is_concrete type check 2021-07-28 17:25:19 +08:00
f665ea358b fixed fold 2021-07-28 10:44:58 +08:00
e15473d2c9 fixed pattern matching 2021-07-27 14:39:53 +08:00
5f0490cd84 added virtual test 2021-07-27 11:58:35 +08:00
1d13b16f94 updated function check 2021-07-26 16:00:29 +08:00
8d0856a58d added documentation 2021-07-26 14:38:18 +08:00
bf31c48bba fixed missing unification 2021-07-26 14:20:47 +08:00
8618837816 fixed range unification 2021-07-26 12:00:06 +08:00
d7df93bef1 fixed range check 2021-07-23 17:22:05 +08:00
d140164a38 fixed virtual unification 2021-07-23 16:19:00 +08:00
ddcf4b7e39 refactored typedef 2021-07-23 15:57:37 +08:00
88c45172b2 basic check for use-before-def 2021-07-22 17:07:49 +08:00
c315227a28 init function check 2021-07-22 15:36:37 +08:00
d484fa1e5c added return type check 2021-07-22 11:49:00 +08:00
09c9218852 use custom unification table implementation
as the ena implementation did not expose the underlying vector store, we
cannot map over it to get a table without Rc<RefCell<T>> so that we can
send it around...
2021-07-22 11:37:29 +08:00
4f81690128 modified occur check 2021-07-21 16:10:11 +08:00
b3d849ea7a list test 2021-07-21 16:06:06 +08:00
3e03398d9b obj test 2021-07-21 15:59:01 +08:00
2f5c3b3cb7 more cleanup and started adding tests 2021-07-21 15:36:35 +08:00
25ff24a320 modified interface 2021-07-21 14:24:46 +08:00
0296844d5f cleanup 2021-07-21 13:28:05 +08:00
e95bfe1d31 added statements 2021-07-20 16:56:04 +08:00
bc9b453b3e function call implementation 2021-07-20 16:13:43 +08:00
fa31e8f336 fold listcomp 2021-07-20 13:45:17 +08:00
22455e43ac lambda fold 2021-07-20 11:47:19 +08:00
016166de46 skeleton done 2021-07-19 17:26:51 +08:00
eb4b2bb7f6 refactored using constrain
to allow easier modification later with subtyping
2021-07-19 17:05:48 +08:00
e732f7e089 removed integer encoding 2021-07-19 16:51:58 +08:00
d4b85d0bac expression type inference (WIP) 2021-07-19 13:35:01 +08:00
c913fb28bd use signed integer for TSeq 2021-07-19 13:34:45 +08:00
f51603f6da cleanup 2021-07-19 09:52:25 +08:00
d67407716c function unification... 2021-07-16 15:55:52 +08:00
f4121b570d added documentation 2021-07-16 14:34:52 +08:00
8b078dfa1b naming 2021-07-16 13:59:08 +08:00
62736bd4bf cleanup: we don't actually need arena 2021-07-16 13:58:02 +08:00
c2d00aa762 occur check 2021-07-15 16:51:55 +08:00
d94f25583b added tests 2021-07-15 16:00:23 +08:00
1df3f4e757 most of unification... 2021-07-14 17:20:12 +08:00
97fe450a0b occur check 2021-07-14 16:40:50 +08:00
e8c5189fce simplified code with Rc<RefCell<T>> 2021-07-14 15:58:58 +08:00
291e642699 partial implementation 2021-07-14 15:24:00 +08:00
e554737b68 tmp 2021-07-14 08:12:47 +08:00
84c980fed3 type scheme instantiation 2021-06-30 17:18:56 +08:00
2985b88351 refactor for HM style inference... 2021-06-30 16:28:18 +08:00
eb12f6f082 updated inference_context error msg 2021-06-28 16:36:24 +08:00
f43e225845 updated inference_context rules 2021-06-28 16:32:46 +08:00
e72d96f165 added location information for diagnostics 2021-06-28 15:05:05 +08:00
ed04cef431 added symbol resolver... 2021-06-28 14:48:04 +08:00
7c9919256c begin refactoring 2021-06-28 10:49:41 +08:00
42511334f7 fixed some inference rules... 2021-06-25 16:49:58 +08:00
5292f32835 removed method for type variables 2021-06-25 16:08:32 +08:00
4902f9f645 added expression_inference tests 2021-01-04 14:55:11 +08:00
24d512c30f added expression_inference 2021-01-04 14:54:57 +08:00
5b5e9ce04f added magic methods 2021-01-04 14:53:52 +08:00
6824b9c4d3 added inference_core tests 2021-01-04 14:53:33 +08:00
7c9e80cc1b added inference core 2021-01-04 14:52:50 +08:00
bde52f7ad3 added primitives 2021-01-04 14:52:00 +08:00
04e9f9c077 added inference context 2021-01-04 14:51:43 +08:00
7523b43a08 added top level context 2021-01-04 14:51:25 +08:00
7eb40e25dd added typedef 2021-01-04 14:49:48 +08:00
96317686af enabled clippy 2021-01-04 14:49:14 +08:00
703059adab nac3standalone: renames 2020-12-18 22:35:59 +08:00
947a528656 libnac3 -> nac3core 2020-12-18 10:18:21 +08:00