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