Basic veriadic, ext, and declaration only support, allowing us to use printf! Unifying with veriadic might need work (does it need ref treatment?)

This commit is contained in:
Nathan Braswell
2018-12-29 14:50:58 -05:00
parent 4ec59690cf
commit 235775c077
2 changed files with 36 additions and 15 deletions

View File

@@ -55,7 +55,8 @@ fun unify(t1: *binding<type>, t2: *binding<type>) {
t1->bound_to->_fun.first.second.first = t2->bound_to->_fun.first.second.first
if (t2->bound_to->_fun.first.second.first == ref_type::_unknown())
t2->bound_to->_fun.first.second.first = t1->bound_to->_fun.first.second.first
for (var i = 0; i < t1->bound_to->_fun.first.first.size; i++;) {
// might be veradic...
for (var i = 0; i < t1->bound_to->_fun.first.first.size && i < t2->bound_to->_fun.first.first.size; i++;) {
unify(t1->bound_to->_fun.first.first[i].second, t2->bound_to->_fun.first.first[i].second)
if (t1->bound_to->_fun.first.first[i].first == ref_type::_unknown())
t1->bound_to->_fun.first.first[i].first = t2->bound_to->_fun.first.first[i].first