mirror of
https://github.com/roc-lang/roc.git
synced 2024-09-22 08:17:40 +03:00
represent byte/bool closure as unit
This commit is contained in:
parent
3ea63ee18f
commit
2c1ab68ea7
@ -415,13 +415,10 @@ impl<'a> LambdaSet<'a> {
|
||||
use UnionVariant::*;
|
||||
match variant {
|
||||
Never => Layout::Union(UnionLayout::NonRecursive(&[])),
|
||||
Unit | UnitWithArguments => Layout::Struct(&[]),
|
||||
BoolUnion { .. } => {
|
||||
// Layout::Builtin(Builtin::Int1),
|
||||
|
||||
Unit | UnitWithArguments | BoolUnion { .. } | ByteUnion(_) => {
|
||||
// no useful information to store
|
||||
Layout::Struct(&[])
|
||||
}
|
||||
ByteUnion(_) => Layout::Builtin(Builtin::Int8),
|
||||
Newtype {
|
||||
arguments: layouts, ..
|
||||
} => Layout::Struct(layouts.into_bump_slice()),
|
||||
|
@ -2554,7 +2554,7 @@ fn mirror_llvm_alignment_padding() {
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn code_gen_unified_closure() {
|
||||
fn lambda_set_bool() {
|
||||
assert_evals_to!(
|
||||
indoc!(
|
||||
r#"
|
||||
@ -2576,3 +2576,28 @@ fn code_gen_unified_closure() {
|
||||
i64
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn lambda_set_byte() {
|
||||
assert_evals_to!(
|
||||
indoc!(
|
||||
r#"
|
||||
app "test" provides [ main ] to "./platform"
|
||||
|
||||
p1 = (\u -> u == 97)
|
||||
p2 = (\u -> u == 98)
|
||||
p3 = (\u -> u == 99)
|
||||
|
||||
main : I64
|
||||
main =
|
||||
oneOfResult = List.map [p1, p2, p3] (\p -> p 42)
|
||||
|
||||
when oneOfResult is
|
||||
_ -> 32
|
||||
|
||||
"#
|
||||
),
|
||||
32,
|
||||
i64
|
||||
);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user