Phantom types

Closes #3314
This commit is contained in:
Ayaz Hafiz 2022-07-05 19:07:41 -04:00
parent e674c33b89
commit fc1617bf17
No known key found for this signature in database
GPG key ID: 0E2A37416A25EF58
3 changed files with 139 additions and 8 deletions

View file

@ -351,15 +351,28 @@ fn canonicalize_alias<'a>(
region: loc_lowercase.region,
});
}
None => {
is_phantom = true;
None => match kind {
AliasKind::Structural => {
is_phantom = true;
env.problems.push(Problem::PhantomTypeArgument {
typ: symbol,
variable_region: loc_lowercase.region,
variable_name: loc_lowercase.value.clone(),
});
}
env.problems.push(Problem::PhantomTypeArgument {
typ: symbol,
variable_region: loc_lowercase.region,
variable_name: loc_lowercase.value.clone(),
});
}
AliasKind::Opaque => {
// Opaques can have phantom types.
can_vars.push(Loc {
value: AliasVar {
name: loc_lowercase.value.clone(),
var: var_store.fresh(),
opt_bound_ability: None,
},
region: loc_lowercase.region,
});
}
},
}
}