Account for ability specialization in reuse_symbol

This commit is contained in:
Ayaz Hafiz 2022-05-06 17:41:03 -04:00 committed by ayazhafiz
parent 5a5fc0162d
commit 8bff2875b0

View file

@ -7000,10 +7000,20 @@ fn can_reuse_symbol<'a>(
procs: &Procs<'a>,
expr: &roc_can::expr::Expr,
) -> ReuseSymbol {
use roc_can::expr::Expr::*;
use ReuseSymbol::*;
if let roc_can::expr::Expr::Var(symbol) = expr {
let symbol = *symbol;
let symbol = match expr {
AbilityMember(_, specialization) => {
let specialization_symbol = specialization
.read()
.unwrap()
.expect("Specialization must be known!");
specialization_symbol
}
Var(symbol) => *symbol,
_ => return NotASymbol,
};
let arguments = [
Symbol::ARG_1,
@ -7026,9 +7036,6 @@ fn can_reuse_symbol<'a>(
} else {
Value(symbol)
}
} else {
NotASymbol
}
}
fn possible_reuse_symbol_or_specialize<'a>(