mirror of
https://github.com/roc-lang/roc.git
synced 2025-09-17 01:05:02 +00:00
Put the capture niche in the lambda name instead of generating new names
This commit is contained in:
parent
1ed2e1a8e9
commit
019ebd93f7
20 changed files with 592 additions and 486 deletions
|
@ -106,8 +106,8 @@ trait Backend<'a> {
|
|||
proc: Proc<'a>,
|
||||
layout_ids: &mut LayoutIds<'a>,
|
||||
) -> (Vec<u8>, Vec<Relocation>, Vec<'a, (Symbol, String)>) {
|
||||
let layout_id = layout_ids.get(proc.name.call_name(), &proc.ret_layout);
|
||||
let proc_name = self.symbol_to_string(proc.name.call_name(), layout_id);
|
||||
let layout_id = layout_ids.get(proc.name.name(), &proc.ret_layout);
|
||||
let proc_name = self.symbol_to_string(proc.name.name(), layout_id);
|
||||
self.reset(proc_name, proc.is_self_recursive);
|
||||
self.load_args(proc.args, &proc.ret_layout);
|
||||
for (layout, sym) in proc.args {
|
||||
|
@ -263,7 +263,7 @@ trait Backend<'a> {
|
|||
..
|
||||
} => {
|
||||
if let LowLevelWrapperType::CanBeReplacedBy(lowlevel) =
|
||||
LowLevelWrapperType::from_symbol(*func_sym)
|
||||
LowLevelWrapperType::from_symbol(func_sym.name())
|
||||
{
|
||||
self.build_run_low_level(
|
||||
sym,
|
||||
|
@ -272,14 +272,20 @@ trait Backend<'a> {
|
|||
arg_layouts,
|
||||
ret_layout,
|
||||
)
|
||||
} else if self.defined_in_app_module(*func_sym) {
|
||||
let layout_id = LayoutIds::default().get(*func_sym, layout);
|
||||
let fn_name = self.symbol_to_string(*func_sym, layout_id);
|
||||
} else if self.defined_in_app_module(func_sym.name()) {
|
||||
let layout_id = LayoutIds::default().get(func_sym.name(), layout);
|
||||
let fn_name = self.symbol_to_string(func_sym.name(), layout_id);
|
||||
// Now that the arguments are needed, load them if they are literals.
|
||||
self.load_literal_symbols(arguments);
|
||||
self.build_fn_call(sym, fn_name, arguments, arg_layouts, ret_layout)
|
||||
} else {
|
||||
self.build_builtin(sym, *func_sym, arguments, arg_layouts, ret_layout)
|
||||
self.build_builtin(
|
||||
sym,
|
||||
func_sym.name(),
|
||||
arguments,
|
||||
arg_layouts,
|
||||
ret_layout,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue