diff options
Diffstat (limited to 'src/unify.cpp')
-rw-r--r-- | src/unify.cpp | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/src/unify.cpp b/src/unify.cpp index d2bd055..864ea81 100644 --- a/src/unify.cpp +++ b/src/unify.cpp @@ -89,11 +89,12 @@ unify(const Constraints& constraints) cp.replace(t, s); return Subst::compose(unify(cp), Subst(t, s)); } else if (s->kind == AType::EXPR && s->kind == t->kind && s->size() == t->size()) { - for (size_t i = 0; i < s->size(); ++i) { + assert(*s->at(0)->to<ASymbol*>() == *t->at(0)->to<ASymbol*>()); + for (size_t i = 1; i < s->size(); ++i) { AType* si = s->at(i)->to<AType*>(); AType* ti = t->at(i)->to<AType*>(); - if (si && ti) - cp.push_back(Constraint(si, ti, si->loc)); + assert(si && ti); + cp.push_back(Constraint(si, ti, si->loc)); } return unify(cp); } else { |