mirror of
https://github.com/roc-lang/roc.git
synced 2025-08-04 12:18:19 +00:00
move record index to start of update
This commit is contained in:
parent
9b58c0fb9c
commit
378a298b45
6 changed files with 291 additions and 106 deletions
|
@ -1,13 +1,13 @@
|
|||
procedure Test.1 ():
|
||||
let Test.7 : U8 = 1i64;
|
||||
let Test.8 : U8 = 2i64;
|
||||
let Test.6 : {U8, U8} = Struct {Test.7, Test.8};
|
||||
ret Test.6;
|
||||
let Test.10 : U8 = 1i64;
|
||||
let Test.11 : U8 = 2i64;
|
||||
let Test.9 : {U8, U8} = Struct {Test.10, Test.11};
|
||||
ret Test.9;
|
||||
|
||||
procedure Test.0 ():
|
||||
let Test.9 : {U8, U8} = CallByName Test.1;
|
||||
let Test.3 : U8 = StructAtIndex 0 Test.9;
|
||||
let Test.5 : {U8, U8} = CallByName Test.1;
|
||||
let Test.4 : U8 = StructAtIndex 1 Test.5;
|
||||
let Test.2 : List U8 = Array [Test.3, Test.4];
|
||||
let Test.13 : {U8, U8} = CallByName Test.1;
|
||||
let Test.4 : U8 = StructAtIndex 0 Test.13;
|
||||
let Test.8 : {U8, U8} = CallByName Test.1;
|
||||
let Test.6 : U8 = StructAtIndex 1 Test.8;
|
||||
let Test.2 : List U8 = Array [Test.4, Test.6];
|
||||
ret Test.2;
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
procedure Test.1 (Test.2):
|
||||
dec Test.2;
|
||||
let Test.7 : Str = "ux";
|
||||
let Test.8 : Str = "uy";
|
||||
let Test.6 : {Str, Str} = Struct {Test.7, Test.8};
|
||||
ret Test.6;
|
||||
let Test.8 : Str = "ux";
|
||||
let Test.9 : Str = "uy";
|
||||
let Test.7 : {Str, Str} = Struct {Test.8, Test.9};
|
||||
ret Test.7;
|
||||
|
||||
procedure Test.0 ():
|
||||
let Test.10 : Str = "x";
|
||||
let Test.11 : Str = "y";
|
||||
let Test.9 : {Str, Str} = Struct {Test.10, Test.11};
|
||||
let Test.3 : {Str, Str} = CallByName Test.1 Test.9;
|
||||
let Test.11 : Str = "x";
|
||||
let Test.12 : Str = "y";
|
||||
let Test.10 : {Str, Str} = Struct {Test.11, Test.12};
|
||||
let Test.3 : {Str, Str} = CallByName Test.1 Test.10;
|
||||
ret Test.3;
|
||||
|
|
47
crates/compiler/test_mono/generated/record_update.txt
Normal file
47
crates/compiler/test_mono/generated/record_update.txt
Normal file
|
@ -0,0 +1,47 @@
|
|||
procedure List.3 (List.104, List.105, List.106):
|
||||
let List.503 : {List U64, U64} = CallByName List.64 List.104 List.105 List.106;
|
||||
let List.502 : List U64 = StructAtIndex 0 List.503;
|
||||
ret List.502;
|
||||
|
||||
procedure List.6 (#Attr.2):
|
||||
let List.501 : U64 = lowlevel ListLen #Attr.2;
|
||||
ret List.501;
|
||||
|
||||
procedure List.64 (List.101, List.102, List.103):
|
||||
let List.500 : U64 = CallByName List.6 List.101;
|
||||
let List.497 : Int1 = CallByName Num.22 List.102 List.500;
|
||||
if List.497 then
|
||||
let List.498 : {List U64, U64} = CallByName List.67 List.101 List.102 List.103;
|
||||
ret List.498;
|
||||
else
|
||||
let List.496 : {List U64, U64} = Struct {List.101, List.103};
|
||||
ret List.496;
|
||||
|
||||
procedure List.67 (#Attr.2, #Attr.3, #Attr.4):
|
||||
let List.499 : {List U64, U64} = lowlevel ListReplaceUnsafe #Attr.2 #Attr.3 #Attr.4;
|
||||
ret List.499;
|
||||
|
||||
procedure Num.22 (#Attr.2, #Attr.3):
|
||||
let Num.281 : Int1 = lowlevel NumLt #Attr.2 #Attr.3;
|
||||
ret Num.281;
|
||||
|
||||
procedure Test.1 (Test.2):
|
||||
let Test.10 : List U64 = StructAtIndex 2 Test.2;
|
||||
let Test.8 : List U64 = StructAtIndex 1 Test.2;
|
||||
let Test.6 : List U64 = StructAtIndex 0 Test.2;
|
||||
let Test.13 : U64 = 8i64;
|
||||
let Test.14 : U64 = 8i64;
|
||||
let Test.9 : List U64 = CallByName List.3 Test.8 Test.13 Test.14;
|
||||
let Test.11 : U64 = 7i64;
|
||||
let Test.12 : U64 = 7i64;
|
||||
let Test.7 : List U64 = CallByName List.3 Test.6 Test.11 Test.12;
|
||||
let Test.5 : {List U64, List U64, List U64} = Struct {Test.7, Test.9, Test.10};
|
||||
ret Test.5;
|
||||
|
||||
procedure Test.0 ():
|
||||
let Test.15 : List U64 = Array [];
|
||||
let Test.16 : List U64 = Array [];
|
||||
let Test.17 : List U64 = Array [];
|
||||
let Test.4 : {List U64, List U64, List U64} = Struct {Test.15, Test.16, Test.17};
|
||||
let Test.3 : {List U64, List U64, List U64} = CallByName Test.1 Test.4;
|
||||
ret Test.3;
|
|
@ -3013,3 +3013,17 @@ fn rb_tree_fbip() {
|
|||
"#
|
||||
)
|
||||
}
|
||||
|
||||
#[mono_test]
|
||||
fn record_update() {
|
||||
indoc!(
|
||||
r#"
|
||||
app "test" provides [main] to "./platform"
|
||||
|
||||
main = f {a: [], b: [], c:[]}
|
||||
|
||||
f : {a: List Nat, b: List Nat, c: List Nat} -> {a: List Nat, b: List Nat, c: List Nat}
|
||||
f = \record -> {record & a: List.set record.a 7 7, b: List.set record.b 8 8}
|
||||
"#
|
||||
)
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue