Commit Graph

20 Commits

Author SHA1 Message Date
Nathan Braswell
2bc9ce497b FINALLY FIXED THE PROBLEM - was using set instead of set_single, so it set it's child as well, causing the type loop. Also, the binding replace child evaluated the parameters first, changing t's parent before t->parent->replace_child happened 2019-07-13 18:01:04 -04:00
Nathan Braswell
c2495a04f8 binding epochs compile, but segfault. too late tonight to keep going 2019-01-06 01:06:15 -05:00
Nathan Braswell
ed57d2b2a9 Added sizeof and fixed inferencing from explicitly instantiated template functions so that new and delete work! (though not traits yet...) 2018-12-29 16:35:47 -05:00
Nathan Braswell
235775c077 Basic veriadic, ext, and declaration only support, allowing us to use printf! Unifying with veriadic might need work (does it need ref treatment?) 2018-12-29 14:50:58 -05:00
Nathan Braswell
eccc4c87a6 Finally, ref lowering! A little hacky, but not terrible... 2018-12-29 12:19:54 -05:00
Nathan Braswell
deda17e18b groundwork for refs, moved ref indicator into fun type 2018-12-27 15:14:28 -05:00
Nathan Braswell
66f82062ba Almost have scoped . working, in fact it is, but having objects with member names has problems (like o.o) if the member function is in scope. (it thinks maybe you're trying to call o on itself...) 2018-12-18 02:51:44 -05:00
Nathan Braswell
3f2d51ba75 Fixed type unification for templates! Next up is adding to the scope for . 2018-12-07 01:08:12 -05:00
Nathan Braswell
0153054a4c work on k 2018-12-05 23:43:24 -05:00
Nathan Braswell
8177bc7fd0 Add struct access! Uses new translation_unit_generative pass depended on by scope lookups to generate compiler_intrinsics that access members of structs' 2018-10-27 18:00:26 -04:00
Nathan Braswell
194842397f address of and dereference implemented as templated compiler intrinsics 2018-10-16 19:12:10 -04:00
Nathan Braswell
c0a6b614d0 Fix pointer/ref parsing 2018-10-10 01:13:47 -04:00
Nathan Braswell
379d9f612e Template functions (instantiated implicitly) work! 2018-10-09 23:00:57 -04:00
Nathan Braswell
39ecf24e69 Can't finish template inst tonight. 2018-10-08 00:28:42 -04:00
Nathan Braswell
fb179cfcf7 Added primitive math ops, and realized when chaining them that overload resolution had to happen for different functions at different times (esp now that we don't just go outside in). Added a iterative resolver to solve the overloads, which iterates over each one and binds the one that only has one option and unifing types based on that, then running through them all again. If progress is not made for a whole iteration, it errors out and shows the first ambigious call. It could show all ambigious calls... 2018-10-01 01:19:51 -04:00
Nathan Braswell
4dcf102cb0 Also regular overloading works now, by counting remaining unknowns as equal during overload filtering time (so that function calls as statements, which get an inferenced return type of _unknown can match a function with any return type 2018-09-24 00:21:39 -04:00
Nathan Braswell
2148577523 HM-style return type overloaded function infrencing works! 2018-09-24 00:09:30 -04:00
Nathan Braswell
0505a0e7d6 Move types into binding also 2018-09-22 14:54:52 -04:00
Nathan Braswell
1cae1b1504 parse types into initial ast 2018-06-22 23:13:08 -04:00
Nathan Braswell
e851d0eac5 Add basis for types in k, and move to new poset setup (depend on individual imports, functions, types, and global variables) 2018-06-22 20:58:47 -04:00