Polymorphism Fixes #104
|
@ -148,8 +148,9 @@ impl ConcreteTypeStore {
|
|||
.borrow()
|
||||
.iter()
|
||||
.filter_map(|(name, ty)| {
|
||||
// filter out functions as they can have type vars and
|
||||
// will not affect codegen
|
||||
// here we should not have type vars, but some partial instantiated
|
||||
// class methods can still have uninstantiated type vars, so
|
||||
// filter out all the methods, as this will not affect codegen
|
||||
if let TypeEnum::TFunc( .. ) = &*unifier.get_ty(ty.0) {
|
||||
None
|
||||
} else {
|
||||
|
|
|
@ -725,8 +725,9 @@ impl Unifier {
|
|||
if let TypeEnum::TVar { id, range, .. } =
|
||||
self.unification_table.probe_value(*v).as_ref()
|
||||
{
|
||||
// need to do this for partial instantiated function
|
||||
// (in class methods that contains type vars not in class)
|
||||
// for class methods that contain type vars not in class declaration,
|
||||
// as long as there exits one uninstantiated type var, the function is not instantiated,
|
||||
// and need to do substitution on those type vars
|
||||
if k == id {
|
||||
instantiated = false;
|
||||
vars.push((*k, range.clone()));
|
||||
|
|
Loading…
Reference in New Issue