Skip to content

Commit

Permalink
fix dropping the wrong argument for List.map when it captures
Browse files Browse the repository at this point in the history
  • Loading branch information
folkertdev committed Nov 27, 2023
1 parent d5511a5 commit a5f0b69
Showing 1 changed file with 19 additions and 1 deletion.
20 changes: 19 additions & 1 deletion crates/compiler/mono/src/code_gen_help/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -673,7 +673,25 @@ impl<'a> CallerProc<'a> {

let argument_layouts = match capture_layout {
None => passed_function.argument_layouts,
Some(_) => &passed_function.argument_layouts[1..],
Some(capture_layout) => {
let capture_layout_index = passed_function.argument_layouts.len() - 1;

#[cfg(debug_assertions)]
{
let passed_capture_layout =
passed_function.argument_layouts[capture_layout_index];
let repr = layout_interner.get_repr(passed_capture_layout);

if let LayoutRepr::LambdaSet(lambda_set) = repr {
assert!(layout_interner
.equiv(capture_layout, lambda_set.runtime_representation()));
} else {
panic!("unexpected layout for capture argument");
}
}

&passed_function.argument_layouts[..capture_layout_index]
}
};

let capture_symbol = ARG_SYMBOLS[0];
Expand Down

0 comments on commit a5f0b69

Please sign in to comment.