Make the can equal interface more permissive with associated types

This commit is contained in:
Philip Herron 2022-03-30 14:56:34 +01:00
parent e7e6527975
commit 0e7eef6556
1 changed files with 7 additions and 4 deletions

View File

@ -43,16 +43,19 @@ public:
return ok;
}
}
else if (other->get_kind () == TypeKind::PLACEHOLDER)
if (other->get_kind () == TypeKind::PLACEHOLDER)
{
const PlaceholderType *p = static_cast<const PlaceholderType *> (other);
if (p->can_resolve ())
{
const BaseType *resolved = p->resolve ();
resolved->accept_vis (*this);
return ok;
other = p->resolve ();
}
}
if (other->get_kind () == TypeKind::PROJECTION)
{
const ProjectionType *p = static_cast<const ProjectionType *> (other);
other = p->get ();
}
other->accept_vis (*this);
return ok;