mirror of
https://github.com/roc-lang/roc.git
synced 2025-09-28 14:24:45 +00:00
Account for ability specialization in reuse_symbol
This commit is contained in:
parent
5a5fc0162d
commit
8bff2875b0
1 changed files with 31 additions and 24 deletions
|
@ -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>(
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue