mirror of
https://github.com/roc-lang/roc.git
synced 2024-09-21 15:59:20 +03:00
Remove dead let-identifier code
This commit is contained in:
parent
24279e12d0
commit
02bff35203
@ -15,6 +15,7 @@ use roc_debug_flags::{
|
|||||||
dbg_do, ROC_PRINT_IR_AFTER_REFCOUNT, ROC_PRINT_IR_AFTER_RESET_REUSE,
|
dbg_do, ROC_PRINT_IR_AFTER_REFCOUNT, ROC_PRINT_IR_AFTER_RESET_REUSE,
|
||||||
ROC_PRINT_IR_AFTER_SPECIALIZATION,
|
ROC_PRINT_IR_AFTER_SPECIALIZATION,
|
||||||
};
|
};
|
||||||
|
use roc_error_macros::internal_error;
|
||||||
use roc_exhaustive::{Ctor, CtorName, Guard, RenderAs, TagId};
|
use roc_exhaustive::{Ctor, CtorName, Guard, RenderAs, TagId};
|
||||||
use roc_module::ident::{ForeignSymbol, Lowercase, TagName};
|
use roc_module::ident::{ForeignSymbol, Lowercase, TagName};
|
||||||
use roc_module::low_level::LowLevel;
|
use roc_module::low_level::LowLevel;
|
||||||
@ -5867,68 +5868,49 @@ pub fn from_can<'a>(
|
|||||||
};
|
};
|
||||||
|
|
||||||
if let Pattern::Identifier(symbol) = mono_pattern {
|
if let Pattern::Identifier(symbol) = mono_pattern {
|
||||||
let mut hole =
|
internal_error!("Identifier patterns should be handled in a higher code pass!")
|
||||||
env.arena
|
}
|
||||||
.alloc(from_can(env, variable, cont.value, procs, layout_cache));
|
|
||||||
|
|
||||||
for (symbol, variable, expr) in assignments {
|
// convert the continuation
|
||||||
let stmt = with_hole(env, expr, variable, procs, layout_cache, symbol, hole);
|
let mut stmt = from_can(env, variable, cont.value, procs, layout_cache);
|
||||||
|
|
||||||
hole = env.arena.alloc(stmt);
|
// layer on any default record fields
|
||||||
}
|
for (symbol, variable, expr) in assignments {
|
||||||
|
let specialization_symbol = procs
|
||||||
|
.symbol_specializations
|
||||||
|
.remove_single(symbol)
|
||||||
|
// Can happen when the symbol was never used under this body, and hence has no
|
||||||
|
// requested specialization.
|
||||||
|
.unwrap_or(symbol);
|
||||||
|
|
||||||
|
let hole = env.arena.alloc(stmt);
|
||||||
|
stmt = with_hole(
|
||||||
|
env,
|
||||||
|
expr,
|
||||||
|
variable,
|
||||||
|
procs,
|
||||||
|
layout_cache,
|
||||||
|
specialization_symbol,
|
||||||
|
hole,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if let roc_can::expr::Expr::Var(outer_symbol) = def.loc_expr.value {
|
||||||
|
store_pattern(env, procs, layout_cache, &mono_pattern, outer_symbol, stmt)
|
||||||
|
} else {
|
||||||
|
let outer_symbol = env.unique_symbol();
|
||||||
|
stmt = store_pattern(env, procs, layout_cache, &mono_pattern, outer_symbol, stmt);
|
||||||
|
|
||||||
|
// convert the def body, store in outer_symbol
|
||||||
with_hole(
|
with_hole(
|
||||||
env,
|
env,
|
||||||
def.loc_expr.value,
|
def.loc_expr.value,
|
||||||
def.expr_var,
|
def.expr_var,
|
||||||
procs,
|
procs,
|
||||||
layout_cache,
|
layout_cache,
|
||||||
symbol,
|
outer_symbol,
|
||||||
hole,
|
env.arena.alloc(stmt),
|
||||||
)
|
)
|
||||||
} else {
|
|
||||||
// convert the continuation
|
|
||||||
let mut stmt = from_can(env, variable, cont.value, procs, layout_cache);
|
|
||||||
|
|
||||||
// layer on any default record fields
|
|
||||||
for (symbol, variable, expr) in assignments {
|
|
||||||
let specialization_symbol = procs
|
|
||||||
.symbol_specializations
|
|
||||||
.remove_single(symbol)
|
|
||||||
// Can happen when the symbol was never used under this body, and hence has no
|
|
||||||
// requested specialization.
|
|
||||||
.unwrap_or(symbol);
|
|
||||||
|
|
||||||
let hole = env.arena.alloc(stmt);
|
|
||||||
stmt = with_hole(
|
|
||||||
env,
|
|
||||||
expr,
|
|
||||||
variable,
|
|
||||||
procs,
|
|
||||||
layout_cache,
|
|
||||||
specialization_symbol,
|
|
||||||
hole,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
if let roc_can::expr::Expr::Var(outer_symbol) = def.loc_expr.value {
|
|
||||||
store_pattern(env, procs, layout_cache, &mono_pattern, outer_symbol, stmt)
|
|
||||||
} else {
|
|
||||||
let outer_symbol = env.unique_symbol();
|
|
||||||
stmt =
|
|
||||||
store_pattern(env, procs, layout_cache, &mono_pattern, outer_symbol, stmt);
|
|
||||||
|
|
||||||
// convert the def body, store in outer_symbol
|
|
||||||
with_hole(
|
|
||||||
env,
|
|
||||||
def.loc_expr.value,
|
|
||||||
def.expr_var,
|
|
||||||
procs,
|
|
||||||
layout_cache,
|
|
||||||
outer_symbol,
|
|
||||||
env.arena.alloc(stmt),
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user