Make specialization IDs optional in the can AST

Derived impls won't use specialization IDs
This commit is contained in:
Ayaz Hafiz 2022-06-25 11:15:10 -04:00
parent 9aeda3efd7
commit d22c1be05b
No known key found for this signature in database
GPG key ID: 0E2A37416A25EF58
4 changed files with 32 additions and 26 deletions

View file

@ -99,8 +99,10 @@ pub enum Expr {
AbilityMember(
/// Actual member name
Symbol,
/// Specialization to use, and its variable
SpecializationId,
/// Specialization to use, and its variable.
/// The specialization id may be [`None`] if construction of an ability member usage can
/// prove the usage is polymorphic.
Option<SpecializationId>,
Variable,
),
@ -1351,7 +1353,7 @@ fn canonicalize_var_lookup(
if scope.abilities_store.is_ability_member_name(symbol) {
AbilityMember(
symbol,
scope.abilities_store.fresh_specialization_id(),
Some(scope.abilities_store.fresh_specialization_id()),
var_store.fresh(),
)
} else {
@ -1374,7 +1376,7 @@ fn canonicalize_var_lookup(
if scope.abilities_store.is_ability_member_name(symbol) {
AbilityMember(
symbol,
scope.abilities_store.fresh_specialization_id(),
Some(scope.abilities_store.fresh_specialization_id()),
var_store.fresh(),
)
} else {