Commit Graph

582 Commits

Author SHA1 Message Date
pca006132 22a728833d nac3core: fixed broken test 2021-08-27 16:50:53 +08:00
pca006132 2223c86d9b nac3standalone: compile multiple functions 2021-08-27 16:25:59 +08:00
pca006132 72aebed559 nac3core: unification table optimization
avoid cloning values that we no longer need.
2021-08-27 13:05:06 +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 bf4e0009c0 codegen: do not generate cont_bb if unreachable 2021-08-27 11:46:12 +08:00
pca006132 a24e204824 type_inferencer: check defined identifiers during inference 2021-08-27 11:13:43 +08:00
ychenfo 35ef0386db move helper function to another file 2021-08-27 10:21:51 +08:00
ychenfo b9a580d271 handle class method/fields type var 2021-08-27 09:53:09 +08:00
ychenfo 018d6643e1 top level: top level function type var handled
top level: class methods/fields type var handling
2021-08-27 01:41:34 +08:00
ychenfo 935e7410fd check type params in class generic base declaration 2021-08-26 11:54:37 +08:00
ychenfo 1a21fb1072 fix codegen test about top level composer return type change 2021-08-25 18:00:01 +08:00
ychenfo 35a331552b cyclic inheritance check added 2021-08-25 17:47:26 +08:00
ychenfo 0bab477ab0 get rid of nested tuple in type annotation helper function 2021-08-25 17:47:26 +08:00
ychenfo 862d205f67 remove self kind and extra primitive info in the return of top level composer constructor, adding some helper function for type annotation 2021-08-25 17:47:26 +08:00
pca006132 e2b11c3fee codegen: fixed deadlock and added call test 2021-08-25 17:44:01 +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
pca006132 93270d7227 use forked version of rustpython
to implement Clone for AST nodes
2021-08-25 15:28:32 +08:00
pca006132 1ffa1a8bb0 typecheck/typedef: added copy_from
This function would copy concrete type from one unifier to another
unifier, and can handle recursive types. This would be used in code
generation for moving types from one unification table to another one.
2021-08-25 12:02:10 +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
pca006132 c356062239 symbol_resolver: handle list and tuples 2021-08-24 14:58:19 +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 39f300b62a clean up and add duplicate function/parameter/class name test
formatted
2021-08-23 14:22:46 +08:00
ychenfo 7b1fe36e90 formatted 2021-08-23 11:13:45 +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 364054331c handle class fields and methods 2021-08-23 02:54:45 +08:00
ychenfo 40b062ce0f change the parse type annotation parameter type, refactoring top level 2021-08-23 02:54:45 +08:00
pca006132 f5b8b58826 added tuple assignment check 2021-08-21 15:11:01 +08:00
pca006132 c4d6b3691a codegen/expr: fixed warnings 2021-08-21 15:10:50 +08:00
pca006132 957ceb74e4 nac3core/typecheck: added basic location information 2021-08-21 14:51:46 +08:00
pca006132 e47d063efc codegen: store to list element 2021-08-19 17:14:38 +08:00
pca006132 0e2da0d180 codegen: gep related fixes
we can now compile simple programs that uses tuples and lists
2021-08-19 16:54:15 +08:00
pca006132 3279f7a776 codegen for simple function call, and various fixes 2021-08-19 15:30:15 +08:00
pca006132 d1215bf5ac nac3core/codegen/expr: fixed typo 2021-08-19 11:45:33 +08:00
pca006132 6e424a6a3e fixed codegen test 2021-08-19 11:32:22 +08:00
pca006132 9a07ef3301 Merge remote-tracking branch 'origin/hm-inference_anto' into hm-inference 2021-08-19 11:32:04 +08:00
ychenfo c238c264e7 add type vars to the primitive binop function def 2021-08-19 11:18:58 +08:00
Sebastien Bourdeauducq f8a697e3d4 switch to LLVM 11 2021-08-19 11:14:35 +08:00
ychenfo 4b38fe66a2 format 2021-08-18 17:33:48 +08:00
ychenfo 9cb07e6f04 start to handle base inheritance methods, fields 2021-08-18 17:32:55 +08:00
ychenfo 6279dbb589 formating 2021-08-18 16:33:50 +08:00
ychenfo 529442590f some parsing of top level class fields and methods 2021-08-18 16:28:17 +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 619963dc8c removed locks in toplevelcomposer 2021-08-17 16:36:06 +08:00
ychenfo 276daa03f7 start refactorinng for less redundancy 2021-08-17 14:01:18 +08:00
ychenfo a94145348a fix on comments and redundant code, start handling 'self' things 2021-08-17 11:07:16 +08:00
ychenfo fa40fd73c6 formatted 2021-08-16 20:17:08 +08:00
ychenfo 79ce13722a partially parsed class methods nad fields 2021-08-16 17:40:12 +08:00
ychenfo eb814dd8c3 clean unused use 2021-08-16 13:57:21 +08:00
ychenfo 3734663188 add RefCell to FunSignature in TypeEnum 2021-08-16 13:53:45 +08:00
ychenfo d8c3c063ec split top level handling in several functions 2021-08-16 13:53:39 +08:00
pca006132 d3ad894521 removed code comment 2021-08-13 16:30:33 +08:00
pca006132 784111fdbe Merge remote-tracking branch 'origin/hm-inference_anto' into hm-inference 2021-08-13 16:28:04 +08:00
pca006132 d30918bea0 worker thread panic handling 2021-08-13 16:20:14 +08:00
pca006132 e2adf82229 threadpool for parallel code generation 2021-08-13 14:48:46 +08:00
ychenfo 33391c55c2 add Sync bound to Symbol resolver in top level 2021-08-13 14:22:49 +08:00
ychenfo 3f65e1b133 start refactor top_level 2021-08-13 13:57:24 +08:00
ychenfo ba5bb78f11 top level parse class base/generic 2021-08-13 13:57:24 +08:00
ychenfo e176aa660d commit for pull new symbol resolver 2021-08-13 13:57:24 +08:00
pca006132 cb01c79603 removed Arc from TypeEnum 2021-08-13 13:33:59 +08:00
pca006132 1db8378f60 formatting 2021-08-12 16:36:23 +08:00
pca006132 8c7ccb626b fixed symbol_resolver blanket implementation 2021-08-12 14:44:50 +08:00
pca006132 1f6c16e08b fixed compilation failure 2021-08-12 13:56:51 +08:00
pca006132 77943a8117 added primitive codegen test 2021-08-12 13:56:06 +08:00
ychenfo 3a93e2b048 TypeEnum::TObj.param is now RefCell for interior mutability 2021-08-12 13:17:51 +08:00
ychenfo 824a5cb01a register top level clean up 2021-08-12 10:51:41 +08:00
ychenfo 17ee8fe6d0 starting cleaning up and further add Arc<Mutex> 2021-08-12 10:51:41 +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
pca006132 0af4e95914 Merge remote-tracking branch 'origin/hm-inference_anto' into hm-inference 2021-08-11 15:42:32 +08:00
ychenfo 99276c8f31 formatted 2021-08-11 15:18:21 +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
pca006132 e112354d25 codegen refactored 2021-08-11 14:37:26 +08:00
ychenfo 43236db9bd update some previous work on top level with the clean up 2021-08-11 13:31:59 +08:00
ychenfo 1bec6cf2db continue working on the top level 2021-08-11 11:16:53 +08:00
pca006132 a73ab922e2 cleanup 2021-08-10 21:57:31 +08:00
ychenfo 82ce816177 refactored top level parsing, need review 2021-08-10 10:37:06 +08:00
ychenfo 6ad953f877 top level class roughly handled, push for review 2021-08-10 10:37:06 +08:00
pca006132 4db871c244 put alloca in init block 2021-08-09 16:37:28 +08:00
pca006132 cc0692a34c modified alloca 2021-08-09 16:19:20 +08:00
pca006132 7a90ff5791 while loop constructs 2021-08-09 16:10:17 +08:00
pca006132 d8c713ce3d assignment statement 2021-08-09 15:39:50 +08:00
pca006132 1ffb792000 make tuple a ptr to a struct instead of a struct 2021-08-07 17:41:48 +08:00
pca006132 057fcfe3df default parameter value generation 2021-08-07 17:31:01 +08:00
pca006132 86ca02796b function parameter handling 2021-08-07 17:25:14 +08:00
pca006132 711482d09c expr codegen cleanup 2021-08-07 15:30:03 +08:00
pca006132 7a38ab3119 codegen for function call 2021-08-07 15:06:39 +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 095f28468b added if expr 2021-08-05 16:52:41 +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
pca006132 3dcd846302 added rayon dependency 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 99c71687a6 fixed: bitwise shift rhs can only be int32; better structured code 2021-08-04 16:46:16 +08:00
CrescentonC d052f007fb fix typo of primitives method 2021-08-04 12:03:56 +08:00
pca006132 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
pca006132 f00c1813e3 top-level related changes 2021-08-03 13:38:27 +08:00
pca006132 d4d12a9d1d added crossbeam dependency 2021-08-03 12:38:55 +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
pca006132 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
CrescentonC d4807293b0 clean up unused variabls and comments 2021-08-03 10:41:52 +08:00
CrescentonC d4721db4a3 not creating temp for borrow, more concise code 2021-08-03 09:45:39 +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 f7bbc3e10d Merge branch 'hm-inference' into hm-inference_anto 2021-08-02 11:33:36 +08:00
CrescentonC 7e0d55443a better structured primitive magic methods impl 2021-08-02 11:28:05 +08:00
pca006132 197a72c658 added comment 2021-07-30 16:43:25 +08:00
pca006132 eba92ed8bd added method to get all instantiations 2021-07-30 16:32:50 +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 7ad8e2d81d cleanup some error reporting code 2021-07-30 13:50:46 +08:00
pca006132 743a9384a3 added rigid type variable 2021-07-30 11:28:27 +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 1d13b16f94 updated function check 2021-07-26 16:00:29 +08:00
pca006132 8d0856a58d added documentation 2021-07-26 14:38:18 +08:00
pca006132 bf31c48bba fixed missing unification 2021-07-26 14:20:47 +08:00
pca006132 8618837816 fixed range unification 2021-07-26 12:00:06 +08:00
pca006132 d7df93bef1 fixed range check 2021-07-23 17:22:05 +08:00
pca006132 d140164a38 fixed virtual unification 2021-07-23 16:19:00 +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 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
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 25ff24a320 modified interface 2021-07-21 14:24:46 +08:00
pca006132 0296844d5f cleanup 2021-07-21 13:28:05 +08:00
pca006132 e95bfe1d31 added statements 2021-07-20 16:56:04 +08:00
pca006132 bc9b453b3e function call implementation 2021-07-20 16:13:43 +08:00
pca006132 fa31e8f336 fold listcomp 2021-07-20 13:45:17 +08:00
pca006132 22455e43ac lambda fold 2021-07-20 11:47:19 +08:00
pca006132 016166de46 skeleton done 2021-07-19 17:26:51 +08:00
pca006132 eb4b2bb7f6 refactored using constrain
to allow easier modification later with subtyping
2021-07-19 17:05:48 +08:00
pca006132 e732f7e089 removed integer encoding 2021-07-19 16:51:58 +08:00
pca006132 d4b85d0bac expression type inference (WIP) 2021-07-19 13:35:01 +08:00
pca006132 c913fb28bd use signed integer for TSeq 2021-07-19 13:34:45 +08:00
pca006132 f51603f6da cleanup 2021-07-19 09:52:25 +08:00
pca006132 d67407716c function unification... 2021-07-16 15:55:52 +08:00
pca006132 f4121b570d added documentation 2021-07-16 14:34:52 +08:00
pca006132 8b078dfa1b naming 2021-07-16 13:59:08 +08:00
pca006132 62736bd4bf cleanup: we don't actually need arena 2021-07-16 13:58:02 +08:00
pca006132 c2d00aa762 occur check 2021-07-15 16:51:55 +08:00
pca006132 d94f25583b added tests 2021-07-15 16:00:23 +08:00
pca006132 1df3f4e757 most of unification... 2021-07-14 17:20:12 +08:00
pca006132 97fe450a0b occur check 2021-07-14 16:40:50 +08:00
pca006132 e8c5189fce simplified code with Rc<RefCell<T>> 2021-07-14 15:58:58 +08:00
pca006132 291e642699 partial implementation 2021-07-14 15:24:00 +08:00
pca006132 e554737b68 tmp 2021-07-14 08:12:47 +08:00
pca006132 84c980fed3 type scheme instantiation 2021-06-30 17:18:56 +08:00
pca006132 2985b88351 refactor for HM style inference... 2021-06-30 16:28:18 +08:00
pca006132 eb12f6f082 updated inference_context error msg 2021-06-28 16:36:24 +08:00
pca006132 f43e225845 updated inference_context rules 2021-06-28 16:32:46 +08:00
pca006132 e72d96f165 added location information for diagnostics 2021-06-28 15:05:05 +08:00
pca006132 ed04cef431 added symbol resolver... 2021-06-28 14:48:04 +08:00
pca006132 7c9919256c begin refactoring 2021-06-28 10:49:41 +08:00
pca006132 42511334f7 fixed some inference rules... 2021-06-25 16:49:58 +08:00
pca006132 5292f32835 removed method for type variables 2021-06-25 16:08:32 +08:00
pca006132 4902f9f645 added expression_inference tests 2021-01-04 14:55:11 +08:00
pca006132 24d512c30f added expression_inference 2021-01-04 14:54:57 +08:00
pca006132 5b5e9ce04f added magic methods 2021-01-04 14:53:52 +08:00
pca006132 6824b9c4d3 added inference_core tests 2021-01-04 14:53:33 +08:00
pca006132 7c9e80cc1b added inference core 2021-01-04 14:52:50 +08:00
pca006132 bde52f7ad3 added primitives 2021-01-04 14:52:00 +08:00
pca006132 04e9f9c077 added inference context 2021-01-04 14:51:43 +08:00
pca006132 7523b43a08 added top level context 2021-01-04 14:51:25 +08:00
pca006132 7eb40e25dd added typedef 2021-01-04 14:49:48 +08:00
pca006132 96317686af enabled clippy 2021-01-04 14:49:14 +08:00
Sebastien Bourdeauducq 703059adab nac3standalone: renames 2020-12-18 22:35:59 +08:00
Sebastien Bourdeauducq 947a528656 libnac3 -> nac3core 2020-12-18 10:18:21 +08:00