mirror of
https://github.com/roc-lang/roc.git
synced 2025-10-02 16:21:11 +00:00
fix list gen tests
This commit is contained in:
parent
f3199ed2a7
commit
8f55706d5d
3 changed files with 28 additions and 21 deletions
|
@ -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,
|
||||||
|
|
|
@ -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"),
|
||||||
}
|
}
|
||||||
|
|
|
@ -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(),
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue