fix list gen tests

This commit is contained in:
Folkert 2021-05-19 22:45:30 +02:00
parent f3199ed2a7
commit 8f55706d5d
3 changed files with 28 additions and 21 deletions

View file

@ -303,7 +303,6 @@ pub fn listMap3(
list1: RocList, list1: RocList,
list2: RocList, list2: RocList,
list3: RocList, list3: RocList,
transform: Opaque,
caller: Caller3, caller: Caller3,
data: Opaque, data: Opaque,
inc_n_data: IncN, inc_n_data: IncN,

View file

@ -3777,9 +3777,12 @@ fn run_higher_order_low_level<'a, 'ctx, 'env>(
let (closure, closure_layout) = load_symbol_and_layout(scope, &args[2]); let (closure, closure_layout) = load_symbol_and_layout(scope, &args[2]);
match list_layout { match (list_layout, return_layout) {
Layout::Builtin(Builtin::EmptyList) => empty_list(env), (Layout::Builtin(Builtin::EmptyList), _) => empty_list(env),
Layout::Builtin(Builtin::List(_, element_layout)) => { (
Layout::Builtin(Builtin::List(_, element_layout)),
Layout::Builtin(Builtin::List(_, result_layout)),
) => {
let argument_layouts = &[**element_layout]; let argument_layouts = &[**element_layout];
let roc_function_call = roc_function_call( let roc_function_call = roc_function_call(
@ -3792,7 +3795,7 @@ fn run_higher_order_low_level<'a, 'ctx, 'env>(
argument_layouts, argument_layouts,
); );
list_map(env, roc_function_call, list, element_layout, return_layout) list_map(env, roc_function_call, list, element_layout, result_layout)
} }
_ => unreachable!("invalid list layout"), _ => unreachable!("invalid list layout"),
} }
@ -3806,10 +3809,11 @@ fn run_higher_order_low_level<'a, 'ctx, 'env>(
let function = passed_function_at_index!(2); let function = passed_function_at_index!(2);
let (closure, closure_layout) = load_symbol_and_layout(scope, &args[3]); let (closure, closure_layout) = load_symbol_and_layout(scope, &args[3]);
match (list1_layout, list2_layout) { match (list1_layout, list2_layout, return_layout) {
( (
Layout::Builtin(Builtin::List(_, element1_layout)), Layout::Builtin(Builtin::List(_, element1_layout)),
Layout::Builtin(Builtin::List(_, element2_layout)), Layout::Builtin(Builtin::List(_, element2_layout)),
Layout::Builtin(Builtin::List(_, result_layout)),
) => { ) => {
let argument_layouts = &[**element1_layout, **element2_layout]; let argument_layouts = &[**element1_layout, **element2_layout];
@ -3831,11 +3835,11 @@ fn run_higher_order_low_level<'a, 'ctx, 'env>(
list2, list2,
element1_layout, element1_layout,
element2_layout, element2_layout,
return_layout, result_layout,
) )
} }
(Layout::Builtin(Builtin::EmptyList), _) (Layout::Builtin(Builtin::EmptyList), _, _)
| (_, Layout::Builtin(Builtin::EmptyList)) => empty_list(env), | (_, Layout::Builtin(Builtin::EmptyList), _) => empty_list(env),
_ => unreachable!("invalid list layout"), _ => unreachable!("invalid list layout"),
} }
} }
@ -3849,11 +3853,12 @@ fn run_higher_order_low_level<'a, 'ctx, 'env>(
let function = passed_function_at_index!(3); let function = passed_function_at_index!(3);
let (closure, closure_layout) = load_symbol_and_layout(scope, &args[4]); let (closure, closure_layout) = load_symbol_and_layout(scope, &args[4]);
match (list1_layout, list2_layout, list3_layout) { match (list1_layout, list2_layout, list3_layout, return_layout) {
( (
Layout::Builtin(Builtin::List(_, element1_layout)), Layout::Builtin(Builtin::List(_, element1_layout)),
Layout::Builtin(Builtin::List(_, element2_layout)), Layout::Builtin(Builtin::List(_, element2_layout)),
Layout::Builtin(Builtin::List(_, element3_layout)), Layout::Builtin(Builtin::List(_, element3_layout)),
Layout::Builtin(Builtin::List(_, result_layout)),
) => { ) => {
let argument_layouts = let argument_layouts =
&[**element1_layout, **element2_layout, **element3_layout]; &[**element1_layout, **element2_layout, **element3_layout];
@ -3878,12 +3883,12 @@ fn run_higher_order_low_level<'a, 'ctx, 'env>(
element1_layout, element1_layout,
element2_layout, element2_layout,
element3_layout, element3_layout,
return_layout, result_layout,
) )
} }
(Layout::Builtin(Builtin::EmptyList), _, _) (Layout::Builtin(Builtin::EmptyList), _, _, _)
| (_, Layout::Builtin(Builtin::EmptyList), _) | (_, Layout::Builtin(Builtin::EmptyList), _, _)
| (_, _, Layout::Builtin(Builtin::EmptyList)) => empty_list(env), | (_, _, Layout::Builtin(Builtin::EmptyList), _) => empty_list(env),
_ => unreachable!("invalid list layout"), _ => unreachable!("invalid list layout"),
} }
} }
@ -3897,9 +3902,12 @@ fn run_higher_order_low_level<'a, 'ctx, 'env>(
let (closure, closure_layout) = load_symbol_and_layout(scope, &args[2]); let (closure, closure_layout) = load_symbol_and_layout(scope, &args[2]);
match list_layout { match (list_layout, return_layout) {
Layout::Builtin(Builtin::EmptyList) => empty_list(env), (Layout::Builtin(Builtin::EmptyList), _) => empty_list(env),
Layout::Builtin(Builtin::List(_, element_layout)) => { (
Layout::Builtin(Builtin::List(_, element_layout)),
Layout::Builtin(Builtin::List(_, result_layout)),
) => {
let argument_layouts = &[Layout::Builtin(Builtin::Usize), **element_layout]; let argument_layouts = &[Layout::Builtin(Builtin::Usize), **element_layout];
let roc_function_call = roc_function_call( let roc_function_call = roc_function_call(
@ -3912,7 +3920,7 @@ fn run_higher_order_low_level<'a, 'ctx, 'env>(
argument_layouts, argument_layouts,
); );
list_map_with_index(env, roc_function_call, list, element_layout, return_layout) list_map_with_index(env, roc_function_call, list, element_layout, result_layout)
} }
_ => unreachable!("invalid list layout"), _ => unreachable!("invalid list layout"),
} }

View file

@ -865,7 +865,7 @@ pub fn list_map3<'a, 'ctx, 'env>(
element1_layout: &Layout<'a>, element1_layout: &Layout<'a>,
element2_layout: &Layout<'a>, element2_layout: &Layout<'a>,
element3_layout: &Layout<'a>, element3_layout: &Layout<'a>,
return_layout: &Layout<'a>, result_layout: &Layout<'a>,
) -> BasicValueEnum<'ctx> { ) -> BasicValueEnum<'ctx> {
let dec_a = build_dec_wrapper(env, layout_ids, element1_layout); let dec_a = build_dec_wrapper(env, layout_ids, element1_layout);
let dec_b = build_dec_wrapper(env, layout_ids, element2_layout); let dec_b = build_dec_wrapper(env, layout_ids, element2_layout);
@ -881,11 +881,11 @@ pub fn list_map3<'a, 'ctx, 'env>(
pass_as_opaque(env, roc_function_call.data), pass_as_opaque(env, roc_function_call.data),
roc_function_call.inc_n_data.into(), roc_function_call.inc_n_data.into(),
roc_function_call.data_is_owned.into(), roc_function_call.data_is_owned.into(),
alignment_intvalue(env, return_layout), alignment_intvalue(env, result_layout),
layout_width(env, element1_layout), layout_width(env, element1_layout),
layout_width(env, element2_layout), layout_width(env, element2_layout),
layout_width(env, element3_layout), layout_width(env, element3_layout),
layout_width(env, return_layout), layout_width(env, result_layout),
dec_a.as_global_value().as_pointer_value().into(), dec_a.as_global_value().as_pointer_value().into(),
dec_b.as_global_value().as_pointer_value().into(), dec_b.as_global_value().as_pointer_value().into(),
dec_c.as_global_value().as_pointer_value().into(), dec_c.as_global_value().as_pointer_value().into(),