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
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
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