diff options
author | Jonathan Protzenko | 2022-01-06 10:12:44 -0800 |
---|---|---|
committer | Jonathan Protzenko | 2022-01-06 10:12:44 -0800 |
commit | c3c1d91a976fdac52830239adb6429f09ea888a8 (patch) | |
tree | 15205f3a6356ad80effdc8b48641fff23a89466c /tests | |
parent | 9872966d3c7a97ce8cd9ef16ab934ffa09c23e13 (diff) | |
parent | a310c6036568d8f62e09804c67064686d106afd4 (diff) |
Merge remote-tracking branch 'refs/remotes/origin/main'
Diffstat (limited to '')
-rw-r--r-- | tests/trace_reference.txt | 23692 |
1 files changed, 21676 insertions, 2016 deletions
diff --git a/tests/trace_reference.txt b/tests/trace_reference.txt index 52edcc93..767b6cbb 100644 --- a/tests/trace_reference.txt +++ b/tests/trace_reference.txt @@ -31,9 +31,9 @@ fn add_test(x : u32, y : u32) -> u32 { var@4 : u32; var@5 : (u32, bool); - var@3 := copy x - var@4 := copy y - var@0 := copy var@3 + copy var@4 + var@3 := copy x; + var@4 := copy y; + var@0 := copy var@3 + copy var@4; return } @@ -45,9 +45,9 @@ fn subs_test(x : u32, y : u32) -> u32 { var@4 : u32; var@5 : (u32, bool); - var@3 := copy x - var@4 := copy y - var@0 := copy var@3 - copy var@4 + var@3 := copy x; + var@4 := copy y; + var@0 := copy var@3 - copy var@4; return } @@ -59,9 +59,9 @@ fn div_test(x : u32, y : u32) -> u32 { var@4 : u32; var@5 : bool; - var@3 := copy x - var@4 := copy y - var@0 := move var@3 / move var@4 + var@3 := copy x; + var@4 := copy y; + var@0 := move var@3 / move var@4; return } @@ -73,9 +73,9 @@ fn rem_test(x : u32, y : u32) -> u32 { var@4 : u32; var@5 : bool; - var@3 := copy x - var@4 := copy y - var@0 := move var@3 % move var@4 + var@3 := copy x; + var@4 := copy y; + var@0 := move var@3 % move var@4; return } @@ -92,18 +92,18 @@ fn test2() { e1 : test1::EmptyEnum; enum0 : test1::Enum; - x := 23: u32 - y := 44: u32 - z := 67: u32 - var@5 := copy x - (p).x := move var@5 - (p).y := 67: u32 - (s as test1::Sum::Right).0 := true - set_discriminant(s, 1) - (o as test1::One::One).0 := 3: u64 - set_discriminant(o, 0) - set_discriminant(e0, 0) - set_discriminant(enum0, 0) + x := 23: u32; + y := 44: u32; + z := 67: u32; + var@5 := copy x; + (p).x := move var@5; + (p).y := 67: u32; + (s as test1::Sum::Right).0 := true; + set_discriminant(s, 1); + (o as test1::One::One).0 := 3: u64; + set_discriminant(o, 0); + set_discriminant(e0, 0); + set_discriminant(enum0, 0); return } @@ -115,15 +115,15 @@ fn get_max(x : u32, y : u32) -> u32 { var@4 : u32; var@5 : u32; - var@4 := copy x - var@5 := copy y - var@3 := move var@4 >= move var@5 + var@4 := copy x; + var@5 := copy y; + var@3 := move var@4 >= move var@5; if (move var@3) { var@0 := copy x } else { var@0 := copy y - } + }; return } @@ -139,15 +139,15 @@ fn test3() { var@8 : bool; var@9 : u32; - x := move get_max(4: u32, 3: u32) - y := move get_max(10: u32, 11: u32) - var@4 := copy x - var@5 := copy y - z := copy var@4 + copy var@5 - var@9 := copy z - var@8 := move var@9 == 15: u32 - var@7 := ¬ move var@8 - assert(¬move var@7) + x := move get_max(4: u32, 3: u32); + y := move get_max(10: u32, 11: u32); + var@4 := copy x; + var@5 := copy y; + z := copy var@4 + copy var@5; + var@9 := copy z; + var@8 := move var@9 == 15: u32; + var@7 := ¬ move var@8; + assert(¬move var@7); return } @@ -157,10 +157,10 @@ fn test_neg(x : i32) -> i32 { var@2 : i32; var@3 : bool; - var@2 := copy x - var@3 := copy var@2 == -2147483648: i32 - assert(¬move var@3) - var@0 := - move var@2 + var@2 := copy x; + var@3 := copy var@2 == -2147483648: i32; + assert(¬move var@3); + var@0 := - move var@2; return } @@ -169,8 +169,8 @@ fn test_neg1() { x : i32; y : i32; - x := 3: i32 - y := -3: i32 + x := 3: i32; + y := -3: i32; return } @@ -183,14 +183,14 @@ fn refs_test1() { var@5 : bool; var@6 : i32; - x := 0: i32 - px := &mut x - ppx := &mut px - *(*(ppx)) := 1: i32 - var@6 := copy x - var@5 := move var@6 == 1: i32 - var@4 := ¬ move var@5 - assert(¬move var@4) + x := 0: i32; + px := &mut x; + ppx := &mut px; + *(*(ppx)) := 1: i32; + var@6 := copy x; + var@5 := move var@6 == 1: i32; + var@4 := ¬ move var@5; + assert(¬move var@4); return } @@ -215,30 +215,30 @@ fn refs_test2() { var@17 : bool; var@18 : i32; - x := 0: i32 - y := 1: i32 - px := &mut x - py := &mut y - ppx := &mut px - var@6 := &mut *(py) - *(ppx) := move var@6 - *(*(ppx)) := 2: i32 - var@9 := copy *(px) - var@8 := move var@9 == 2: i32 - var@7 := ¬ move var@8 - assert(¬move var@7) - var@12 := copy x - var@11 := move var@12 == 0: i32 - var@10 := ¬ move var@11 - assert(¬move var@10) - var@15 := copy *(py) - var@14 := move var@15 == 2: i32 - var@13 := ¬ move var@14 - assert(¬move var@13) - var@18 := copy y - var@17 := move var@18 == 2: i32 - var@16 := ¬ move var@17 - assert(¬move var@16) + x := 0: i32; + y := 1: i32; + px := &mut x; + py := &mut y; + ppx := &mut px; + var@6 := &mut *(py); + *(ppx) := move var@6; + *(*(ppx)) := 2: i32; + var@9 := copy *(px); + var@8 := move var@9 == 2: i32; + var@7 := ¬ move var@8; + assert(¬move var@7); + var@12 := copy x; + var@11 := move var@12 == 0: i32; + var@10 := ¬ move var@11; + assert(¬move var@10); + var@15 := copy *(py); + var@14 := move var@15 == 2: i32; + var@13 := ¬ move var@14; + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 2: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); return } @@ -248,12 +248,12 @@ fn test_list1() { var@2 : std::boxed::Box<test1::List<i32>>; var@3 : test1::List<i32>; - set_discriminant(var@3, 1) - var@2 := move alloc::boxed::Box<test1::List<i32>>::new(move var@3) - (l as test1::List::Cons).0 := 0: i32 - (l as test1::List::Cons).1 := move var@2 - set_discriminant(l, 0) -drop(l) + set_discriminant(var@3, 1); + var@2 := move alloc::boxed::Box<test1::List<i32>>::new(move var@3); + (l as test1::List::Cons).0 := 0: i32; + (l as test1::List::Cons).1 := move var@2; + set_discriminant(l, 0); + drop(l); return } @@ -268,17 +268,17 @@ fn test_box1() { var@7 : bool; var@8 : i32; - b := move alloc::boxed::Box<i32>::new(0: i32) - var@3 := &two-phase b - x := move core::ops::deref::DerefMut<i32>::deref_mut(move var@3) - *(x) := 1: i32 - var@5 := &b - x := move core::ops::deref::Deref<Box<i32>>::deref(move var@5) - var@8 := copy *(x) - var@7 := move var@8 == 1: i32 - var@6 := ¬ move var@7 - assert(¬move var@6) -drop(b) + b := move alloc::boxed::Box<i32>::new(0: i32); + var@3 := &two-phase b; + x := move core::ops::deref::DerefMut<i32>::deref_mut(move var@3); + *(x) := 1: i32; + var@5 := &b; + x := move core::ops::deref::Deref<Box<i32>>::deref(move var@5); + var@8 := copy *(x); + var@7 := move var@8 == 1: i32; + var@6 := ¬ move var@7; + assert(¬move var@6); + drop(b); return } @@ -286,7 +286,7 @@ fn copy_int(x : i32) -> i32 { var@0 : i32; x : i32; - var@0 := copy x + var@0 := copy x; return } @@ -301,15 +301,15 @@ fn test_copy_int() { var@7 : i32; var@8 : i32; - x := 0: i32 - px := &x - var@4 := copy x - y := move copy_int(move var@4) - var@7 := copy *(px) - var@8 := copy y - var@6 := move var@7 == move var@8 - var@5 := ¬ move var@6 - assert(¬move var@5) + x := 0: i32; + px := &x; + var@4 := copy x; + y := move copy_int(move var@4); + var@7 := copy *(px); + var@8 := copy y; + var@6 := move var@7 == move var@8; + var@5 := ¬ move var@6; + assert(¬move var@5); return } @@ -318,7 +318,7 @@ fn is_cons<0,T>(l : &0 (test1::List<T>)) -> bool { l : &'_ (test1::List<T>); var@2 : isize; - var@2 := discriminant(*(l)) + var@2 := discriminant(*(l)); switch (move var@2) { 0: isize => { var@0 := true @@ -329,7 +329,7 @@ fn is_cons<0,T>(l : &0 (test1::List<T>)) -> bool { _ => { panic } - } + }; return } @@ -343,17 +343,17 @@ fn test_is_cons() { var@6 : &'_ (test1::List<i32>); var@7 : &'_ (test1::List<i32>); - set_discriminant(var@3, 1) - var@2 := move alloc::boxed::Box<test1::List<i32>>::new(move var@3) - (l as test1::List::Cons).0 := 0: i32 - (l as test1::List::Cons).1 := move var@2 - set_discriminant(l, 0) - var@7 := &l - var@6 := copy var@7 - var@5 := move is_cons<i32>(move var@6) - var@4 := ¬ move var@5 - assert(¬move var@4) -drop(l) + set_discriminant(var@3, 1); + var@2 := move alloc::boxed::Box<test1::List<i32>>::new(move var@3); + (l as test1::List::Cons).0 := 0: i32; + (l as test1::List::Cons).1 := move var@2; + set_discriminant(l, 0); + var@7 := &l; + var@6 := copy var@7; + var@5 := move is_cons<i32>(move var@6); + var@4 := ¬ move var@5; + assert(¬move var@4); + drop(l); return } @@ -370,22 +370,22 @@ fn split_list<T>(l : test1::List<T>) -> (T, test1::List<T>) { var@9 : (); var@10 : isize; - var@8 := false - var@7 := false - var@7 := true - var@8 := true - var@2 := discriminant(l) + var@8 := false; + var@7 := false; + var@7 := true; + var@8 := true; + var@2 := discriminant(l); switch (move var@2) { 0: isize => { - var@8 := false - hd := move (l as test1::List::Cons).0 - var@7 := false - tl := move (l as test1::List::Cons).1 - var@5 := move hd - var@6 := move deref_box(tl) - (var@0).0 := move var@5 - (var@0).1 := move var@6 - var@9 := move alloc::alloc::box_free<test1::List<T>>(move tl) + var@8 := false; + hd := move (l as test1::List::Cons).0; + var@7 := false; + tl := move (l as test1::List::Cons).1; + var@5 := move hd; + var@6 := move deref_box(tl); + (var@0).0 := move var@5; + (var@0).1 := move var@6; + var@9 := move alloc::alloc::box_free<test1::List<T>>(move tl); return } _ => { @@ -407,20 +407,20 @@ fn test_split_list() { var@9 : bool; var@10 : i32; - set_discriminant(var@3, 1) - var@2 := move alloc::boxed::Box<test1::List<i32>>::new(move var@3) - (l as test1::List::Cons).0 := 0: i32 - (l as test1::List::Cons).1 := move var@2 - set_discriminant(l, 0) - var@7 := move l - var@6 := move split_list<i32>(move var@7) - hd := copy (var@6).0 - tl := move (var@6).1 - var@10 := copy hd - var@9 := move var@10 == 0: i32 - var@8 := ¬ move var@9 - assert(¬move var@8) -drop(tl) + set_discriminant(var@3, 1); + var@2 := move alloc::boxed::Box<test1::List<i32>>::new(move var@3); + (l as test1::List::Cons).0 := 0: i32; + (l as test1::List::Cons).1 := move var@2; + set_discriminant(l, 0); + var@7 := move l; + var@6 := move split_list<i32>(move var@7); + hd := copy (var@6).0; + tl := move (var@6).1; + var@10 := copy hd; + var@9 := move var@10 == 0: i32; + var@8 := ¬ move var@9; + assert(¬move var@8); + drop(tl); return } @@ -431,13 +431,13 @@ fn get_elem<'a,T>(b : bool, x : &'a mut (T), y : &'a mut (T)) -> &'a mut (T) { y : &'_ mut (T); var@4 : bool; - var@4 := copy b + var@4 := copy b; if (move var@4) { var@0 := &mut *(x) } else { var@0 := move y - } + }; return } @@ -462,27 +462,27 @@ fn get_elem_test() { var@17 : bool; var@18 : i32; - x := 0: i32 - y := 0: i32 - var@5 := &mut x - var@4 := &two-phase *(var@5) - var@7 := &mut y - var@6 := &two-phase *(var@7) - z := move get_elem<i32>(true, move var@4, move var@6) - var@8 := copy *(z) - *(z) := copy var@8 + 1: i32 - var@12 := copy *(z) - var@11 := move var@12 == 1: i32 - var@10 := ¬ move var@11 - assert(¬move var@10) - var@15 := copy x - var@14 := move var@15 == 1: i32 - var@13 := ¬ move var@14 - assert(¬move var@13) - var@18 := copy y - var@17 := move var@18 == 0: i32 - var@16 := ¬ move var@17 - assert(¬move var@16) + x := 0: i32; + y := 0: i32; + var@5 := &mut x; + var@4 := &two-phase *(var@5); + var@7 := &mut y; + var@6 := &two-phase *(var@7); + z := move get_elem<i32>(true, move var@4, move var@6); + var@8 := copy *(z); + *(z) := copy var@8 + 1: i32; + var@12 := copy *(z); + var@11 := move var@12 == 1: i32; + var@10 := ¬ move var@11; + assert(¬move var@10); + var@15 := copy x; + var@14 := move var@15 == 1: i32; + var@13 := ¬ move var@14; + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 0: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); return } @@ -491,8 +491,8 @@ fn id_mut_mut<'a,'b,T>(x : &'a mut (&'b mut (T))) -> &'a mut (&'b mut (T)) { x : &'_ mut (&'_ mut (T)); var@2 : &'_ mut (&'_ mut (T)); - var@2 := &mut *(x) - var@0 := &mut *(var@2) + var@2 := &mut *(x); + var@0 := &mut *(var@2); return } @@ -501,8 +501,8 @@ fn id_mut_pair<'a,T>(x : &'a mut ((&'a mut (T), u32))) -> &'a mut ((&'a mut (T), x : &'_ mut ((&'_ mut (T), u32)); var@2 : &'_ mut ((&'_ mut (T), u32)); - var@2 := &mut *(x) - var@0 := &mut *(var@2) + var@2 := &mut *(x); + var@0 := &mut *(var@2); return } @@ -519,19 +519,19 @@ fn id_mut_pair_test1() { var@9 : &'_ mut (u32); var@10 : &'_ mut (u32); - x := 0: u32 - px := &mut x - var@4 := move px - (p).0 := move var@4 - (p).1 := 1: u32 - pp0 := &mut p - var@7 := &two-phase *(pp0) - pp1 := move id_mut_pair<u32>(move var@7) - y := 2: u32 - var@10 := &mut y - var@9 := &mut *(var@10) - *((pp1).0) := move var@9 - *((pp1).1) := 3: u32 + x := 0: u32; + px := &mut x; + var@4 := move px; + (p).0 := move var@4; + (p).1 := 1: u32; + pp0 := &mut p; + var@7 := &two-phase *(pp0); + pp1 := move id_mut_pair<u32>(move var@7); + y := 2: u32; + var@10 := &mut y; + var@9 := &mut *(var@10); + *((pp1).0) := move var@9; + *((pp1).1) := 3: u32; return } @@ -540,8 +540,8 @@ fn id_mut_mut_pair<'a,T>(x : &'a mut (&'a mut ((&'a mut (T), u32)))) -> &'a mut x : &'_ mut (&'_ mut ((&'_ mut (T), u32))); var@2 : &'_ mut (&'_ mut ((&'_ mut (T), u32))); - var@2 := &mut *(x) - var@0 := &mut *(var@2) + var@2 := &mut *(x); + var@0 := &mut *(var@2); return } @@ -550,8 +550,8 @@ fn id_mut_mut_mut_same<'a,T>(x : &'a mut (&'a mut (&'a mut (u32)))) -> &'a mut ( x : &'_ mut (&'_ mut (&'_ mut (u32))); var@2 : &'_ mut (&'_ mut (&'_ mut (u32))); - var@2 := &mut *(x) - var@0 := &mut *(var@2) + var@2 := &mut *(x); + var@0 := &mut *(var@2); return } @@ -575,23 +575,23 @@ fn test_loop1(max : u32) -> u32 { var@8 : (u32, bool); var@9 : (u32, bool); - i := 0: u32 - s := 0: u32 + i := 0: u32; + s := 0: u32; loop { - var@4 := copy i - var@5 := copy max - var@3 := move var@4 < move var@5 + var@4 := copy i; + var@5 := copy max; + var@3 := move var@4 < move var@5; if (move var@3) { - var@6 := copy i - s := copy s + copy var@6 - i := copy i + 1: u32 + var@6 := copy i; + s := copy s + copy var@6; + i := copy i + 1: u32; continue 0 } else { break 0 } - } - s := copy s * 2: u32 + }; + s := copy s * 2: u32; return } @@ -607,22 +607,22 @@ fn test_loop2(max : u32) -> u32 { var@8 : (u32, bool); var@9 : (u32, bool); - i := 0: u32 - s := 0: u32 + i := 0: u32; + s := 0: u32; loop { - var@4 := copy i - var@5 := copy max - var@3 := move var@4 < move var@5 + var@4 := copy i; + var@5 := copy max; + var@3 := move var@4 < move var@5; if (move var@3) { - var@6 := copy i + var@6 := copy i; switch (move var@6) { 17: u32 => { break 0 } _ => { - var@7 := copy i - s := copy s + copy var@7 - i := copy i + 1: u32 + var@7 := copy i; + s := copy s + copy var@7; + i := copy i + 1: u32; continue 0 } } @@ -630,7 +630,7 @@ fn test_loop2(max : u32) -> u32 { else { break 0 } - } + }; return } @@ -656,22 +656,22 @@ fn test_loop3(max : u32) -> u32 { var@18 : (u32, bool); var@19 : (u32, bool); - i := 0: u32 - j := 0: u32 - s := 0: u32 + i := 0: u32; + j := 0: u32; + s := 0: u32; loop { - var@5 := copy i - var@6 := copy max - var@4 := move var@5 < move var@6 + var@5 := copy i; + var@6 := copy max; + var@4 := move var@5 < move var@6; if (move var@4) { loop { - var@8 := copy j - var@9 := copy max - var@7 := move var@8 < move var@9 + var@8 := copy j; + var@9 := copy max; + var@7 := move var@8 < move var@9; if (move var@7) { - var@11 := copy i - var@12 := copy j - var@10 := copy var@11 + copy var@12 + var@11 := copy i; + var@12 := copy j; + var@10 := copy var@11 + copy var@12; switch (move var@10) { 17: u32 => { continue 0 @@ -679,26 +679,26 @@ fn test_loop3(max : u32) -> u32 { _ => { nop } - } - var@14 := copy i - s := copy s + copy var@14 - j := copy j + 1: u32 + }; + var@14 := copy i; + s := copy s + copy var@14; + j := copy j + 1: u32; continue 1 } else { break 0 } - } - j := 0: u32 - var@17 := copy i - s := copy s + copy var@17 - i := copy i + 1: u32 + }; + j := 0: u32; + var@17 := copy i; + s := copy s + copy var@17; + i := copy i + 1: u32; continue 0 } else { break 0 } - } + }; return } @@ -724,22 +724,22 @@ fn test_loop4(max : u32) -> u32 { var@18 : (u32, bool); var@19 : (u32, bool); - i := 0: u32 - j := 0: u32 - s := 0: u32 + i := 1: u32; + j := 0: u32; + s := 0: u32; loop { - var@5 := copy i - var@6 := copy max - var@4 := move var@5 < move var@6 + var@5 := copy i; + var@6 := copy max; + var@4 := move var@5 < move var@6; if (move var@4) { loop { - var@8 := copy j - var@9 := copy max - var@7 := move var@8 < move var@9 + var@8 := copy j; + var@9 := copy max; + var@7 := move var@8 < move var@9; if (move var@7) { - var@11 := copy i - var@12 := copy j - var@10 := copy var@11 + copy var@12 + var@11 := copy i; + var@12 := copy j; + var@10 := copy var@11 + copy var@12; switch (move var@10) { 17: u32 => { continue 0 @@ -747,26 +747,26 @@ fn test_loop4(max : u32) -> u32 { _ => { nop } - } - var@14 := copy i - s := copy s + copy var@14 - j := copy j + 1: u32 + }; + var@14 := copy i; + s := copy s + copy var@14; + j := copy j + 1: u32; break 1 } else { break 0 } - } - j := 0: u32 - var@17 := copy i - s := copy s + copy var@17 - i := copy i + 1: u32 + }; + j := 0: u32; + var@17 := copy i; + s := copy s + copy var@17; + i := copy i + 1: u32; continue 0 } else { break 0 } - } + }; return } @@ -788,37 +788,37 @@ fn test_loop5(max : u32) -> u32 { var@14 : (u32, bool); var@15 : (u32, bool); - i := 0: u32 - j := 0: u32 - s := 0: u32 + i := 0: u32; + j := 0: u32; + s := 0: u32; loop { - var@5 := copy i - var@6 := copy max - var@4 := move var@5 < move var@6 + var@5 := copy i; + var@6 := copy max; + var@4 := move var@5 < move var@6; if (move var@4) { loop { - var@8 := copy j - var@9 := copy max - var@7 := move var@8 < move var@9 + var@8 := copy j; + var@9 := copy max; + var@7 := move var@8 < move var@9; if (move var@7) { - var@10 := copy j - s := copy s + copy var@10 - j := copy j + 1: u32 + var@10 := copy j; + s := copy s + copy var@10; + j := copy j + 1: u32; continue 0 } else { break 0 } - } - var@13 := copy i - s := copy s + copy var@13 - i := copy i + 1: u32 + }; + var@13 := copy i; + s := copy s + copy var@13; + i := copy i + 1: u32; continue 0 } else { break 0 } - } + }; return } @@ -836,30 +836,30 @@ fn test_loop6(max : u32) -> u32 { var@10 : (u32, bool); var@11 : (u32, bool); - i := 0: u32 - s := 0: u32 + i := 0: u32; + s := 0: u32; loop { - var@4 := copy i - var@5 := copy max - var@3 := move var@4 < move var@5 + var@4 := copy i; + var@5 := copy max; + var@3 := move var@4 < move var@5; if (move var@3) { - var@7 := copy i - var@6 := move var@7 > 3: u32 + var@7 := copy i; + var@6 := move var@7 > 3: u32; if (move var@6) { break 0 } else { - var@8 := copy i - s := copy s + copy var@8 - i := copy i + 1: u32 + var@8 := copy i; + s := copy s + copy var@8; + i := copy i + 1: u32; continue 0 } } else { break 0 } - } - s := copy s + 1: u32 + }; + s := copy s + 1: u32; return } @@ -867,19 +867,37 @@ fn test_static(x : &'static (u32)) -> &'static (u32) { var@0 : &'_ (u32); x : &'_ (u32); - var@0 := copy x + var@0 := copy x; return } fn test_char() -> char { var@0 : char; - var@0 := a + var@0 := a; return } [[32mDebug[39m] test_unit_function: test2 [[32mDebug[39m] +**About to evaluate statement**: [ + x := 23: u32; + y := 44: u32; + z := 67: u32; + var@5 := copy x; + (p).x := move var@5; + (p).y := 67: u32; + (s as test1::Sum::Right).0 := true; + set_discriminant(s, 1); + (o as test1::One::One).0 := 3: u64; + set_discriminant(o, 0); + set_discriminant(e0, 0); + set_discriminant(enum0, 0); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -897,21 +915,15 @@ fn test_char() -> char { enum0 -> ⊥ : test1::Enum ; } -About to evaluate statement: x := 23: u32 -y := 44: u32 -z := 67: u32 -var@5 := copy x -(p).x := move var@5 -(p).y := 67: u32 -(s as test1::Sum::Right).0 := true -set_discriminant(s, 1) -(o as test1::One::One).0 := 3: u64 -set_discriminant(o, 0) -set_discriminant(e0, 0) -set_discriminant(enum0, 0) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + x := 23: u32 +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -929,10 +941,11 @@ return enum0 -> ⊥ : test1::Enum ; } -About to evaluate statement: x := 23: u32 + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -955,6 +968,23 @@ About to evaluate statement: x := 23: u32 23: u32 [[32mDebug[39m] +**About to evaluate statement**: [ + y := 44: u32; + z := 67: u32; + var@5 := copy x; + (p).x := move var@5; + (p).y := 67: u32; + (s as test1::Sum::Right).0 := true; + set_discriminant(s, 1); + (o as test1::One::One).0 := 3: u64; + set_discriminant(o, 0); + set_discriminant(e0, 0); + set_discriminant(enum0, 0); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -972,20 +1002,15 @@ About to evaluate statement: x := 23: u32 enum0 -> ⊥ : test1::Enum ; } -About to evaluate statement: y := 44: u32 -z := 67: u32 -var@5 := copy x -(p).x := move var@5 -(p).y := 67: u32 -(s as test1::Sum::Right).0 := true -set_discriminant(s, 1) -(o as test1::One::One).0 := 3: u64 -set_discriminant(o, 0) -set_discriminant(e0, 0) -set_discriminant(enum0, 0) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + y := 44: u32 +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -1003,10 +1028,11 @@ return enum0 -> ⊥ : test1::Enum ; } -About to evaluate statement: y := 44: u32 + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -1029,6 +1055,22 @@ About to evaluate statement: y := 44: u32 44: u32 [[32mDebug[39m] +**About to evaluate statement**: [ + z := 67: u32; + var@5 := copy x; + (p).x := move var@5; + (p).y := 67: u32; + (s as test1::Sum::Right).0 := true; + set_discriminant(s, 1); + (o as test1::One::One).0 := 3: u64; + set_discriminant(o, 0); + set_discriminant(e0, 0); + set_discriminant(enum0, 0); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -1046,19 +1088,15 @@ About to evaluate statement: y := 44: u32 enum0 -> ⊥ : test1::Enum ; } -About to evaluate statement: z := 67: u32 -var@5 := copy x -(p).x := move var@5 -(p).y := 67: u32 -(s as test1::Sum::Right).0 := true -set_discriminant(s, 1) -(o as test1::One::One).0 := 3: u64 -set_discriminant(o, 0) -set_discriminant(e0, 0) -set_discriminant(enum0, 0) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + z := 67: u32 +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -1076,10 +1114,11 @@ return enum0 -> ⊥ : test1::Enum ; } -About to evaluate statement: z := 67: u32 + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -1102,6 +1141,21 @@ About to evaluate statement: z := 67: u32 67: u32 [[32mDebug[39m] +**About to evaluate statement**: [ + var@5 := copy x; + (p).x := move var@5; + (p).y := 67: u32; + (s as test1::Sum::Right).0 := true; + set_discriminant(s, 1); + (o as test1::One::One).0 := 3: u64; + set_discriminant(o, 0); + set_discriminant(e0, 0); + set_discriminant(enum0, 0); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -1119,18 +1173,15 @@ About to evaluate statement: z := 67: u32 enum0 -> ⊥ : test1::Enum ; } -About to evaluate statement: var@5 := copy x -(p).x := move var@5 -(p).y := 67: u32 -(s as test1::Sum::Right).0 := true -set_discriminant(s, 1) -(o as test1::One::One).0 := 3: u64 -set_discriminant(o, 0) -set_discriminant(e0, 0) -set_discriminant(enum0, 0) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + var@5 := copy x +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -1148,10 +1199,11 @@ return enum0 -> ⊥ : test1::Enum ; } -About to evaluate statement: var@5 := copy x + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -1176,6 +1228,20 @@ copy x [[32mDebug[39m] Value to copy: 23: u32 [[32mDebug[39m] +**About to evaluate statement**: [ + (p).x := move var@5; + (p).y := 67: u32; + (s as test1::Sum::Right).0 := true; + set_discriminant(s, 1); + (o as test1::One::One).0 := 3: u64; + set_discriminant(o, 0); + set_discriminant(e0, 0); + set_discriminant(enum0, 0); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -1193,17 +1259,15 @@ copy x enum0 -> ⊥ : test1::Enum ; } -About to evaluate statement: (p).x := move var@5 -(p).y := 67: u32 -(s as test1::Sum::Right).0 := true -set_discriminant(s, 1) -(o as test1::One::One).0 := 3: u64 -set_discriminant(o, 0) -set_discriminant(e0, 0) -set_discriminant(enum0, 0) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + (p).x := move var@5 +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -1221,10 +1285,11 @@ return enum0 -> ⊥ : test1::Enum ; } -About to evaluate statement: (p).x := move var@5 + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -1253,6 +1318,19 @@ pe: (Expressions.Field ((Expressions.ProjAdt (0, None)), 0)) ty: (Types.Adt ((Types.AdtId 0), [], [(Types.Integer Types.U32); (Types.Integer Types.U32)])) [[32mDebug[39m] +**About to evaluate statement**: [ + (p).y := 67: u32; + (s as test1::Sum::Right).0 := true; + set_discriminant(s, 1); + (o as test1::One::One).0 := 3: u64; + set_discriminant(o, 0); + set_discriminant(e0, 0); + set_discriminant(enum0, 0); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -1270,16 +1348,15 @@ ty: (Types.Adt ((Types.AdtId 0), [], enum0 -> ⊥ : test1::Enum ; } -About to evaluate statement: (p).y := 67: u32 -(s as test1::Sum::Right).0 := true -set_discriminant(s, 1) -(o as test1::One::One).0 := 3: u64 -set_discriminant(o, 0) -set_discriminant(e0, 0) -set_discriminant(enum0, 0) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + (p).y := 67: u32 +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -1297,10 +1374,11 @@ return enum0 -> ⊥ : test1::Enum ; } -About to evaluate statement: (p).y := 67: u32 + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -1323,6 +1401,18 @@ About to evaluate statement: (p).y := 67: u32 67: u32 [[32mDebug[39m] +**About to evaluate statement**: [ + (s as test1::Sum::Right).0 := true; + set_discriminant(s, 1); + (o as test1::One::One).0 := 3: u64; + set_discriminant(o, 0); + set_discriminant(e0, 0); + set_discriminant(enum0, 0); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -1340,15 +1430,15 @@ About to evaluate statement: (p).y := 67: u32 enum0 -> ⊥ : test1::Enum ; } -About to evaluate statement: (s as test1::Sum::Right).0 := true -set_discriminant(s, 1) -(o as test1::One::One).0 := 3: u64 -set_discriminant(o, 0) -set_discriminant(e0, 0) -set_discriminant(enum0, 0) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + (s as test1::Sum::Right).0 := true +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -1366,10 +1456,11 @@ return enum0 -> ⊥ : test1::Enum ; } -About to evaluate statement: (s as test1::Sum::Right).0 := true + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -1395,6 +1486,17 @@ true pe: (Expressions.Field ((Expressions.ProjAdt (6, (Some 1))), 0)) ty: (Types.Adt ((Types.AdtId 6), [], [(Types.Integer Types.U32); Types.Bool])) [[32mDebug[39m] +**About to evaluate statement**: [ + set_discriminant(s, 1); + (o as test1::One::One).0 := 3: u64; + set_discriminant(o, 0); + set_discriminant(e0, 0); + set_discriminant(enum0, 0); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -1412,14 +1514,15 @@ ty: (Types.Adt ((Types.AdtId 6), [], [(Types.Integer Types.U32); Types.Bool])) enum0 -> ⊥ : test1::Enum ; } -About to evaluate statement: set_discriminant(s, 1) -(o as test1::One::One).0 := 3: u64 -set_discriminant(o, 0) -set_discriminant(e0, 0) -set_discriminant(enum0, 0) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + set_discriminant(s, 1) +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -1437,9 +1540,19 @@ return enum0 -> ⊥ : test1::Enum ; } -About to evaluate statement: set_discriminant(s, 1) + [[32mDebug[39m] +**About to evaluate statement**: [ + (o as test1::One::One).0 := 3: u64; + set_discriminant(o, 0); + set_discriminant(e0, 0); + set_discriminant(enum0, 0); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -1457,13 +1570,15 @@ About to evaluate statement: set_discriminant(s, 1) enum0 -> ⊥ : test1::Enum ; } -About to evaluate statement: (o as test1::One::One).0 := 3: u64 -set_discriminant(o, 0) -set_discriminant(e0, 0) -set_discriminant(enum0, 0) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + (o as test1::One::One).0 := 3: u64 +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -1481,10 +1596,11 @@ return enum0 -> ⊥ : test1::Enum ; } -About to evaluate statement: (o as test1::One::One).0 := 3: u64 + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -1510,6 +1626,15 @@ About to evaluate statement: (o as test1::One::One).0 := 3: u64 pe: (Expressions.Field ((Expressions.ProjAdt (2, (Some 0))), 0)) ty: (Types.Adt ((Types.AdtId 2), [], [(Types.Integer Types.U64)])) [[32mDebug[39m] +**About to evaluate statement**: [ + set_discriminant(o, 0); + set_discriminant(e0, 0); + set_discriminant(enum0, 0); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -1527,12 +1652,15 @@ ty: (Types.Adt ((Types.AdtId 2), [], [(Types.Integer Types.U64)])) enum0 -> ⊥ : test1::Enum ; } -About to evaluate statement: set_discriminant(o, 0) -set_discriminant(e0, 0) -set_discriminant(enum0, 0) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + set_discriminant(o, 0) +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -1550,9 +1678,17 @@ return enum0 -> ⊥ : test1::Enum ; } -About to evaluate statement: set_discriminant(o, 0) + [[32mDebug[39m] +**About to evaluate statement**: [ + set_discriminant(e0, 0); + set_discriminant(enum0, 0); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -1570,11 +1706,15 @@ About to evaluate statement: set_discriminant(o, 0) enum0 -> ⊥ : test1::Enum ; } -About to evaluate statement: set_discriminant(e0, 0) -set_discriminant(enum0, 0) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + set_discriminant(e0, 0) +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -1592,9 +1732,16 @@ return enum0 -> ⊥ : test1::Enum ; } -About to evaluate statement: set_discriminant(e0, 0) + [[32mDebug[39m] +**About to evaluate statement**: [ + set_discriminant(enum0, 0); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -1612,10 +1759,15 @@ About to evaluate statement: set_discriminant(e0, 0) enum0 -> ⊥ : test1::Enum ; } -About to evaluate statement: set_discriminant(enum0, 0) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + set_discriminant(enum0, 0) +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -1633,9 +1785,15 @@ return enum0 -> ⊥ : test1::Enum ; } -About to evaluate statement: set_discriminant(enum0, 0) + [[32mDebug[39m] +**About to evaluate statement**: [ + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -1653,10 +1811,25 @@ About to evaluate statement: set_discriminant(enum0, 0) enum0 -> test1::Enum::Variant1 ; } -About to evaluate statement: return + [[32mDebug[39m] test_unit_function: test3 [[32mDebug[39m] +**About to evaluate statement**: [ + x := move get_max(4: u32, 3: u32); + y := move get_max(10: u32, 11: u32); + var@4 := copy x; + var@5 := copy y; + z := copy var@4 + copy var@5; + var@9 := copy z; + var@8 := move var@9 == 15: u32; + var@7 := ¬ move var@8; + assert(¬move var@7); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -1673,18 +1846,15 @@ About to evaluate statement: return var@9 -> ⊥ : u32 ; } -About to evaluate statement: x := move get_max(4: u32, 3: u32) -y := move get_max(10: u32, 11: u32) -var@4 := copy x -var@5 := copy y -z := copy var@4 + copy var@5 -var@9 := copy z -var@8 := move var@9 == 15: u32 -var@7 := ¬ move var@8 -assert(¬move var@7) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + x := move get_max(4: u32, 3: u32) +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -1701,10 +1871,11 @@ return var@9 -> ⊥ : u32 ; } -About to evaluate statement: x := move get_max(4: u32, 3: u32) + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -1727,6 +1898,7 @@ About to evaluate statement: x := move get_max(4: u32, 3: u32) [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -1748,6 +1920,21 @@ About to evaluate statement: x := move get_max(4: u32, 3: u32) 3: u32 [[32mDebug[39m] +**About to evaluate statement**: [ + var@4 := copy x; + var@5 := copy y; + var@3 := move var@4 >= move var@5; + if (move var@3) { + var@0 := copy x + } + else { + var@0 := copy y + }; + return +] + +**Context**: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -1774,18 +1961,15 @@ About to evaluate statement: x := move get_max(4: u32, 3: u32) var@5 -> ⊥ : u32 ; } -About to evaluate statement: var@4 := copy x -var@5 := copy y -var@3 := move var@4 >= move var@5 -if (move var@3) { - var@0 := copy x -} -else { - var@0 := copy y -} -return + [[32mDebug[39m] +**About to evaluate statement**: [ + var@4 := copy x +] + +**Context**: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -1812,10 +1996,11 @@ return var@5 -> ⊥ : u32 ; } -About to evaluate statement: var@4 := copy x + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -1849,6 +2034,20 @@ copy x [[32mDebug[39m] Value to copy: 4: u32 [[32mDebug[39m] +**About to evaluate statement**: [ + var@5 := copy y; + var@3 := move var@4 >= move var@5; + if (move var@3) { + var@0 := copy x + } + else { + var@0 := copy y + }; + return +] + +**Context**: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -1875,17 +2074,15 @@ copy x var@5 -> ⊥ : u32 ; } -About to evaluate statement: var@5 := copy y -var@3 := move var@4 >= move var@5 -if (move var@3) { - var@0 := copy x -} -else { - var@0 := copy y -} -return + [[32mDebug[39m] +**About to evaluate statement**: [ + var@5 := copy y +] + +**Context**: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -1912,10 +2109,11 @@ return var@5 -> ⊥ : u32 ; } -About to evaluate statement: var@5 := copy y + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -1949,6 +2147,19 @@ copy y [[32mDebug[39m] Value to copy: 3: u32 [[32mDebug[39m] +**About to evaluate statement**: [ + var@3 := move var@4 >= move var@5; + if (move var@3) { + var@0 := copy x + } + else { + var@0 := copy y + }; + return +] + +**Context**: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -1975,16 +2186,15 @@ copy y var@5 -> 3: u32 ; } -About to evaluate statement: var@3 := move var@4 >= move var@5 -if (move var@3) { - var@0 := copy x -} -else { - var@0 := copy y -} -return + [[32mDebug[39m] +**About to evaluate statement**: [ + var@3 := move var@4 >= move var@5 +] + +**Context**: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -2011,10 +2221,11 @@ return var@5 -> 3: u32 ; } -About to evaluate statement: var@3 := move var@4 >= move var@5 + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -2049,6 +2260,7 @@ move var@4 4: u32 [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -2082,6 +2294,18 @@ move var@5 [[32mDebug[39m] Value to move: 3: u32 [[32mDebug[39m] +**About to evaluate statement**: [ + if (move var@3) { + var@0 := copy x + } + else { + var@0 := copy y + }; + return +] + +**Context**: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -2108,15 +2332,20 @@ move var@5 var@5 -> ⊥ : u32 ; } -About to evaluate statement: if (move var@3) { - var@0 := copy x -} -else { - var@0 := copy y -} -return + [[32mDebug[39m] +**About to evaluate statement**: [ + if (move var@3) { + var@0 := copy x + } + else { + var@0 := copy y + } +] + +**Context**: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -2143,15 +2372,11 @@ return var@5 -> ⊥ : u32 ; } -About to evaluate statement: if (move var@3) { - var@0 := copy x -} -else { - var@0 := copy y -} + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -2185,6 +2410,12 @@ move var@3 [[32mDebug[39m] Value to move: true [[32mDebug[39m] +**About to evaluate statement**: [ + var@0 := copy x +] + +**Context**: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -2211,10 +2442,11 @@ true var@5 -> ⊥ : u32 ; } -About to evaluate statement: var@0 := copy x + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -2248,6 +2480,12 @@ copy x [[32mDebug[39m] Value to copy: 4: u32 [[32mDebug[39m] +**About to evaluate statement**: [ + return +] + +**Context**: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -2274,9 +2512,10 @@ copy x var@5 -> ⊥ : u32 ; } -About to evaluate statement: return + [[32mDebug[39m] ctx_pop_frame: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -2310,6 +2549,7 @@ About to evaluate statement: return [[32mDebug[39m] drop_value: place: y [[32mDebug[39m] drop_value: place: x [[32mDebug[39m] ctx_pop_frame: after dropping local variables: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -2338,6 +2578,7 @@ About to evaluate statement: return [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -2371,6 +2612,20 @@ move var@0 [[32mDebug[39m] Value to move: 4: u32 [[32mDebug[39m] +**About to evaluate statement**: [ + y := move get_max(10: u32, 11: u32); + var@4 := copy x; + var@5 := copy y; + z := copy var@4 + copy var@5; + var@9 := copy z; + var@8 := move var@9 == 15: u32; + var@7 := ¬ move var@8; + assert(¬move var@7); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -2387,17 +2642,15 @@ move var@0 var@9 -> ⊥ : u32 ; } -About to evaluate statement: y := move get_max(10: u32, 11: u32) -var@4 := copy x -var@5 := copy y -z := copy var@4 + copy var@5 -var@9 := copy z -var@8 := move var@9 == 15: u32 -var@7 := ¬ move var@8 -assert(¬move var@7) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + y := move get_max(10: u32, 11: u32) +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -2414,10 +2667,11 @@ return var@9 -> ⊥ : u32 ; } -About to evaluate statement: y := move get_max(10: u32, 11: u32) + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -2440,6 +2694,7 @@ About to evaluate statement: y := move get_max(10: u32, 11: u32) [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -2461,6 +2716,21 @@ About to evaluate statement: y := move get_max(10: u32, 11: u32) 11: u32 [[32mDebug[39m] +**About to evaluate statement**: [ + var@4 := copy x; + var@5 := copy y; + var@3 := move var@4 >= move var@5; + if (move var@3) { + var@0 := copy x + } + else { + var@0 := copy y + }; + return +] + +**Context**: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -2487,18 +2757,15 @@ About to evaluate statement: y := move get_max(10: u32, 11: u32) var@5 -> ⊥ : u32 ; } -About to evaluate statement: var@4 := copy x -var@5 := copy y -var@3 := move var@4 >= move var@5 -if (move var@3) { - var@0 := copy x -} -else { - var@0 := copy y -} -return + [[32mDebug[39m] +**About to evaluate statement**: [ + var@4 := copy x +] + +**Context**: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -2525,10 +2792,11 @@ return var@5 -> ⊥ : u32 ; } -About to evaluate statement: var@4 := copy x + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -2562,6 +2830,20 @@ copy x [[32mDebug[39m] Value to copy: 10: u32 [[32mDebug[39m] +**About to evaluate statement**: [ + var@5 := copy y; + var@3 := move var@4 >= move var@5; + if (move var@3) { + var@0 := copy x + } + else { + var@0 := copy y + }; + return +] + +**Context**: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -2588,17 +2870,15 @@ copy x var@5 -> ⊥ : u32 ; } -About to evaluate statement: var@5 := copy y -var@3 := move var@4 >= move var@5 -if (move var@3) { - var@0 := copy x -} -else { - var@0 := copy y -} -return + [[32mDebug[39m] +**About to evaluate statement**: [ + var@5 := copy y +] + +**Context**: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -2625,10 +2905,11 @@ return var@5 -> ⊥ : u32 ; } -About to evaluate statement: var@5 := copy y + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -2662,6 +2943,19 @@ copy y [[32mDebug[39m] Value to copy: 11: u32 [[32mDebug[39m] +**About to evaluate statement**: [ + var@3 := move var@4 >= move var@5; + if (move var@3) { + var@0 := copy x + } + else { + var@0 := copy y + }; + return +] + +**Context**: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -2688,16 +2982,15 @@ copy y var@5 -> 11: u32 ; } -About to evaluate statement: var@3 := move var@4 >= move var@5 -if (move var@3) { - var@0 := copy x -} -else { - var@0 := copy y -} -return + [[32mDebug[39m] +**About to evaluate statement**: [ + var@3 := move var@4 >= move var@5 +] + +**Context**: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -2724,10 +3017,11 @@ return var@5 -> 11: u32 ; } -About to evaluate statement: var@3 := move var@4 >= move var@5 + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -2762,6 +3056,7 @@ move var@4 10: u32 [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -2795,6 +3090,18 @@ move var@5 [[32mDebug[39m] Value to move: 11: u32 [[32mDebug[39m] +**About to evaluate statement**: [ + if (move var@3) { + var@0 := copy x + } + else { + var@0 := copy y + }; + return +] + +**Context**: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -2821,15 +3128,20 @@ move var@5 var@5 -> ⊥ : u32 ; } -About to evaluate statement: if (move var@3) { - var@0 := copy x -} -else { - var@0 := copy y -} -return + [[32mDebug[39m] +**About to evaluate statement**: [ + if (move var@3) { + var@0 := copy x + } + else { + var@0 := copy y + } +] + +**Context**: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -2856,15 +3168,11 @@ return var@5 -> ⊥ : u32 ; } -About to evaluate statement: if (move var@3) { - var@0 := copy x -} -else { - var@0 := copy y -} + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -2898,6 +3206,12 @@ move var@3 [[32mDebug[39m] Value to move: false [[32mDebug[39m] +**About to evaluate statement**: [ + var@0 := copy y +] + +**Context**: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -2924,10 +3238,11 @@ false var@5 -> ⊥ : u32 ; } -About to evaluate statement: var@0 := copy y + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -2961,6 +3276,12 @@ copy y [[32mDebug[39m] Value to copy: 11: u32 [[32mDebug[39m] +**About to evaluate statement**: [ + return +] + +**Context**: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -2987,9 +3308,10 @@ copy y var@5 -> ⊥ : u32 ; } -About to evaluate statement: return + [[32mDebug[39m] ctx_pop_frame: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -3023,6 +3345,7 @@ About to evaluate statement: return [[32mDebug[39m] drop_value: place: y [[32mDebug[39m] drop_value: place: x [[32mDebug[39m] ctx_pop_frame: after dropping local variables: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -3051,6 +3374,7 @@ About to evaluate statement: return [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -3084,6 +3408,19 @@ move var@0 [[32mDebug[39m] Value to move: 11: u32 [[32mDebug[39m] +**About to evaluate statement**: [ + var@4 := copy x; + var@5 := copy y; + z := copy var@4 + copy var@5; + var@9 := copy z; + var@8 := move var@9 == 15: u32; + var@7 := ¬ move var@8; + assert(¬move var@7); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -3100,16 +3437,15 @@ move var@0 var@9 -> ⊥ : u32 ; } -About to evaluate statement: var@4 := copy x -var@5 := copy y -z := copy var@4 + copy var@5 -var@9 := copy z -var@8 := move var@9 == 15: u32 -var@7 := ¬ move var@8 -assert(¬move var@7) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + var@4 := copy x +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -3126,10 +3462,11 @@ return var@9 -> ⊥ : u32 ; } -About to evaluate statement: var@4 := copy x + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -3153,6 +3490,18 @@ copy x [[32mDebug[39m] Value to copy: 4: u32 [[32mDebug[39m] +**About to evaluate statement**: [ + var@5 := copy y; + z := copy var@4 + copy var@5; + var@9 := copy z; + var@8 := move var@9 == 15: u32; + var@7 := ¬ move var@8; + assert(¬move var@7); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -3169,15 +3518,15 @@ copy x var@9 -> ⊥ : u32 ; } -About to evaluate statement: var@5 := copy y -z := copy var@4 + copy var@5 -var@9 := copy z -var@8 := move var@9 == 15: u32 -var@7 := ¬ move var@8 -assert(¬move var@7) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + var@5 := copy y +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -3194,10 +3543,11 @@ return var@9 -> ⊥ : u32 ; } -About to evaluate statement: var@5 := copy y + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -3221,6 +3571,17 @@ copy y [[32mDebug[39m] Value to copy: 11: u32 [[32mDebug[39m] +**About to evaluate statement**: [ + z := copy var@4 + copy var@5; + var@9 := copy z; + var@8 := move var@9 == 15: u32; + var@7 := ¬ move var@8; + assert(¬move var@7); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -3237,14 +3598,15 @@ copy y var@9 -> ⊥ : u32 ; } -About to evaluate statement: z := copy var@4 + copy var@5 -var@9 := copy z -var@8 := move var@9 == 15: u32 -var@7 := ¬ move var@8 -assert(¬move var@7) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + z := copy var@4 + copy var@5 +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -3261,10 +3623,11 @@ return var@9 -> ⊥ : u32 ; } -About to evaluate statement: z := copy var@4 + copy var@5 + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -3289,6 +3652,7 @@ copy var@4 4: u32 [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -3312,6 +3676,16 @@ copy var@5 [[32mDebug[39m] Value to copy: 11: u32 [[32mDebug[39m] +**About to evaluate statement**: [ + var@9 := copy z; + var@8 := move var@9 == 15: u32; + var@7 := ¬ move var@8; + assert(¬move var@7); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -3328,13 +3702,15 @@ copy var@5 var@9 -> ⊥ : u32 ; } -About to evaluate statement: var@9 := copy z -var@8 := move var@9 == 15: u32 -var@7 := ¬ move var@8 -assert(¬move var@7) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + var@9 := copy z +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -3351,10 +3727,11 @@ return var@9 -> ⊥ : u32 ; } -About to evaluate statement: var@9 := copy z + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -3378,6 +3755,15 @@ copy z [[32mDebug[39m] Value to copy: 15: u32 [[32mDebug[39m] +**About to evaluate statement**: [ + var@8 := move var@9 == 15: u32; + var@7 := ¬ move var@8; + assert(¬move var@7); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -3394,12 +3780,15 @@ copy z var@9 -> 15: u32 ; } -About to evaluate statement: var@8 := move var@9 == 15: u32 -var@7 := ¬ move var@8 -assert(¬move var@7) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + var@8 := move var@9 == 15: u32 +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -3416,10 +3805,11 @@ return var@9 -> 15: u32 ; } -About to evaluate statement: var@8 := move var@9 == 15: u32 + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -3444,6 +3834,7 @@ move var@9 15: u32 [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -3465,6 +3856,14 @@ move var@9 15: u32 [[32mDebug[39m] +**About to evaluate statement**: [ + var@7 := ¬ move var@8; + assert(¬move var@7); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -3481,11 +3880,15 @@ move var@9 var@9 -> ⊥ : u32 ; } -About to evaluate statement: var@7 := ¬ move var@8 -assert(¬move var@7) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + var@7 := ¬ move var@8 +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -3502,10 +3905,11 @@ return var@9 -> ⊥ : u32 ; } -About to evaluate statement: var@7 := ¬ move var@8 + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -3529,6 +3933,13 @@ move var@8 [[32mDebug[39m] Value to move: true [[32mDebug[39m] +**About to evaluate statement**: [ + assert(¬move var@7); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -3545,10 +3956,15 @@ true var@9 -> ⊥ : u32 ; } -About to evaluate statement: assert(¬move var@7) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + assert(¬move var@7) +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -3565,10 +3981,11 @@ return var@9 -> ⊥ : u32 ; } -About to evaluate statement: assert(¬move var@7) + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -3592,6 +4009,12 @@ move var@7 [[32mDebug[39m] Value to move: false [[32mDebug[39m] +**About to evaluate statement**: [ + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -3608,10 +4031,18 @@ false var@9 -> ⊥ : u32 ; } -About to evaluate statement: return + [[32mDebug[39m] test_unit_function: test_neg1 [[32mDebug[39m] +**About to evaluate statement**: [ + x := 3: i32; + y := -3: i32; + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -3621,11 +4052,15 @@ About to evaluate statement: return y -> ⊥ : i32 ; } -About to evaluate statement: x := 3: i32 -y := -3: i32 -return + [[32mDebug[39m] +**About to evaluate statement**: [ + x := 3: i32 +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -3635,10 +4070,11 @@ return y -> ⊥ : i32 ; } -About to evaluate statement: x := 3: i32 + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -3653,6 +4089,13 @@ About to evaluate statement: x := 3: i32 3: i32 [[32mDebug[39m] +**About to evaluate statement**: [ + y := -3: i32; + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -3662,10 +4105,15 @@ About to evaluate statement: x := 3: i32 y -> ⊥ : i32 ; } -About to evaluate statement: y := -3: i32 -return + [[32mDebug[39m] +**About to evaluate statement**: [ + y := -3: i32 +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -3675,10 +4123,11 @@ return y -> ⊥ : i32 ; } -About to evaluate statement: y := -3: i32 + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -3693,6 +4142,12 @@ About to evaluate statement: y := -3: i32 -3: i32 [[32mDebug[39m] +**About to evaluate statement**: [ + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -3702,10 +4157,24 @@ About to evaluate statement: y := -3: i32 y -> -3: i32 ; } -About to evaluate statement: return + [[32mDebug[39m] test_unit_function: refs_test1 [[32mDebug[39m] +**About to evaluate statement**: [ + x := 0: i32; + px := &mut x; + ppx := &mut px; + *(*(ppx)) := 1: i32; + var@6 := copy x; + var@5 := move var@6 == 1: i32; + var@4 := ¬ move var@5; + assert(¬move var@4); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -3719,17 +4188,15 @@ About to evaluate statement: return var@6 -> ⊥ : i32 ; } -About to evaluate statement: x := 0: i32 -px := &mut x -ppx := &mut px -*(*(ppx)) := 1: i32 -var@6 := copy x -var@5 := move var@6 == 1: i32 -var@4 := ¬ move var@5 -assert(¬move var@4) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + x := 0: i32 +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -3743,10 +4210,11 @@ return var@6 -> ⊥ : i32 ; } -About to evaluate statement: x := 0: i32 + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -3765,6 +4233,19 @@ About to evaluate statement: x := 0: i32 0: i32 [[32mDebug[39m] +**About to evaluate statement**: [ + px := &mut x; + ppx := &mut px; + *(*(ppx)) := 1: i32; + var@6 := copy x; + var@5 := move var@6 == 1: i32; + var@4 := ¬ move var@5; + assert(¬move var@4); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -3778,16 +4259,15 @@ About to evaluate statement: x := 0: i32 var@6 -> ⊥ : i32 ; } -About to evaluate statement: px := &mut x -ppx := &mut px -*(*(ppx)) := 1: i32 -var@6 := copy x -var@5 := move var@6 == 1: i32 -var@4 := ¬ move var@5 -assert(¬move var@4) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + px := &mut x +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -3801,9 +4281,21 @@ return var@6 -> ⊥ : i32 ; } -About to evaluate statement: px := &mut x + [[32mDebug[39m] +**About to evaluate statement**: [ + ppx := &mut px; + *(*(ppx)) := 1: i32; + var@6 := copy x; + var@5 := move var@6 == 1: i32; + var@4 := ¬ move var@5; + assert(¬move var@4); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -3817,15 +4309,15 @@ About to evaluate statement: px := &mut x var@6 -> ⊥ : i32 ; } -About to evaluate statement: ppx := &mut px -*(*(ppx)) := 1: i32 -var@6 := copy x -var@5 := move var@6 == 1: i32 -var@4 := ¬ move var@5 -assert(¬move var@4) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + ppx := &mut px +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -3839,9 +4331,20 @@ return var@6 -> ⊥ : i32 ; } -About to evaluate statement: ppx := &mut px + [[32mDebug[39m] +**About to evaluate statement**: [ + *(*(ppx)) := 1: i32; + var@6 := copy x; + var@5 := move var@6 == 1: i32; + var@4 := ¬ move var@5; + assert(¬move var@4); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -3855,14 +4358,15 @@ About to evaluate statement: ppx := &mut px var@6 -> ⊥ : i32 ; } -About to evaluate statement: *(*(ppx)) := 1: i32 -var@6 := copy x -var@5 := move var@6 == 1: i32 -var@4 := ¬ move var@5 -assert(¬move var@4) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + *(*(ppx)) := 1: i32 +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -3876,10 +4380,11 @@ return var@6 -> ⊥ : i32 ; } -About to evaluate statement: *(*(ppx)) := 1: i32 + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -3898,6 +4403,16 @@ About to evaluate statement: *(*(ppx)) := 1: i32 1: i32 [[32mDebug[39m] +**About to evaluate statement**: [ + var@6 := copy x; + var@5 := move var@6 == 1: i32; + var@4 := ¬ move var@5; + assert(¬move var@4); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -3911,13 +4426,15 @@ About to evaluate statement: *(*(ppx)) := 1: i32 var@6 -> ⊥ : i32 ; } -About to evaluate statement: var@6 := copy x -var@5 := move var@6 == 1: i32 -var@4 := ¬ move var@5 -assert(¬move var@4) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + var@6 := copy x +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -3931,10 +4448,11 @@ return var@6 -> ⊥ : i32 ; } -About to evaluate statement: var@6 := copy x + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -3955,6 +4473,15 @@ copy x [[32mDebug[39m] Value to copy: 1: i32 [[32mDebug[39m] +**About to evaluate statement**: [ + var@5 := move var@6 == 1: i32; + var@4 := ¬ move var@5; + assert(¬move var@4); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -3968,12 +4495,15 @@ copy x var@6 -> 1: i32 ; } -About to evaluate statement: var@5 := move var@6 == 1: i32 -var@4 := ¬ move var@5 -assert(¬move var@4) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + var@5 := move var@6 == 1: i32 +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -3987,10 +4517,11 @@ return var@6 -> 1: i32 ; } -About to evaluate statement: var@5 := move var@6 == 1: i32 + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -4012,6 +4543,7 @@ move var@6 1: i32 [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -4030,6 +4562,14 @@ move var@6 1: i32 [[32mDebug[39m] +**About to evaluate statement**: [ + var@4 := ¬ move var@5; + assert(¬move var@4); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -4043,11 +4583,15 @@ move var@6 var@6 -> ⊥ : i32 ; } -About to evaluate statement: var@4 := ¬ move var@5 -assert(¬move var@4) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + var@4 := ¬ move var@5 +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -4061,10 +4605,11 @@ return var@6 -> ⊥ : i32 ; } -About to evaluate statement: var@4 := ¬ move var@5 + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -4085,6 +4630,13 @@ move var@5 [[32mDebug[39m] Value to move: true [[32mDebug[39m] +**About to evaluate statement**: [ + assert(¬move var@4); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -4098,10 +4650,15 @@ true var@6 -> ⊥ : i32 ; } -About to evaluate statement: assert(¬move var@4) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + assert(¬move var@4) +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -4115,10 +4672,11 @@ return var@6 -> ⊥ : i32 ; } -About to evaluate statement: assert(¬move var@4) + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -4139,6 +4697,12 @@ move var@4 [[32mDebug[39m] Value to move: false [[32mDebug[39m] +**About to evaluate statement**: [ + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -4152,10 +4716,40 @@ false var@6 -> ⊥ : i32 ; } -About to evaluate statement: return + [[32mDebug[39m] test_unit_function: refs_test2 [[32mDebug[39m] +**About to evaluate statement**: [ + x := 0: i32; + y := 1: i32; + px := &mut x; + py := &mut y; + ppx := &mut px; + var@6 := &mut *(py); + *(ppx) := move var@6; + *(*(ppx)) := 2: i32; + var@9 := copy *(px); + var@8 := move var@9 == 2: i32; + var@7 := ¬ move var@8; + assert(¬move var@7); + var@12 := copy x; + var@11 := move var@12 == 0: i32; + var@10 := ¬ move var@11; + assert(¬move var@10); + var@15 := copy *(py); + var@14 := move var@15 == 2: i32; + var@13 := ¬ move var@14; + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 2: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -4181,33 +4775,15 @@ About to evaluate statement: return var@18 -> ⊥ : i32 ; } -About to evaluate statement: x := 0: i32 -y := 1: i32 -px := &mut x -py := &mut y -ppx := &mut px -var@6 := &mut *(py) -*(ppx) := move var@6 -*(*(ppx)) := 2: i32 -var@9 := copy *(px) -var@8 := move var@9 == 2: i32 -var@7 := ¬ move var@8 -assert(¬move var@7) -var@12 := copy x -var@11 := move var@12 == 0: i32 -var@10 := ¬ move var@11 -assert(¬move var@10) -var@15 := copy *(py) -var@14 := move var@15 == 2: i32 -var@13 := ¬ move var@14 -assert(¬move var@13) -var@18 := copy y -var@17 := move var@18 == 2: i32 -var@16 := ¬ move var@17 -assert(¬move var@16) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + x := 0: i32 +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -4233,10 +4809,11 @@ return var@18 -> ⊥ : i32 ; } -About to evaluate statement: x := 0: i32 + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -4267,6 +4844,35 @@ About to evaluate statement: x := 0: i32 0: i32 [[32mDebug[39m] +**About to evaluate statement**: [ + y := 1: i32; + px := &mut x; + py := &mut y; + ppx := &mut px; + var@6 := &mut *(py); + *(ppx) := move var@6; + *(*(ppx)) := 2: i32; + var@9 := copy *(px); + var@8 := move var@9 == 2: i32; + var@7 := ¬ move var@8; + assert(¬move var@7); + var@12 := copy x; + var@11 := move var@12 == 0: i32; + var@10 := ¬ move var@11; + assert(¬move var@10); + var@15 := copy *(py); + var@14 := move var@15 == 2: i32; + var@13 := ¬ move var@14; + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 2: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -4292,32 +4898,15 @@ About to evaluate statement: x := 0: i32 var@18 -> ⊥ : i32 ; } -About to evaluate statement: y := 1: i32 -px := &mut x -py := &mut y -ppx := &mut px -var@6 := &mut *(py) -*(ppx) := move var@6 -*(*(ppx)) := 2: i32 -var@9 := copy *(px) -var@8 := move var@9 == 2: i32 -var@7 := ¬ move var@8 -assert(¬move var@7) -var@12 := copy x -var@11 := move var@12 == 0: i32 -var@10 := ¬ move var@11 -assert(¬move var@10) -var@15 := copy *(py) -var@14 := move var@15 == 2: i32 -var@13 := ¬ move var@14 -assert(¬move var@13) -var@18 := copy y -var@17 := move var@18 == 2: i32 -var@16 := ¬ move var@17 -assert(¬move var@16) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + y := 1: i32 +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -4343,10 +4932,11 @@ return var@18 -> ⊥ : i32 ; } -About to evaluate statement: y := 1: i32 + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -4377,6 +4967,34 @@ About to evaluate statement: y := 1: i32 1: i32 [[32mDebug[39m] +**About to evaluate statement**: [ + px := &mut x; + py := &mut y; + ppx := &mut px; + var@6 := &mut *(py); + *(ppx) := move var@6; + *(*(ppx)) := 2: i32; + var@9 := copy *(px); + var@8 := move var@9 == 2: i32; + var@7 := ¬ move var@8; + assert(¬move var@7); + var@12 := copy x; + var@11 := move var@12 == 0: i32; + var@10 := ¬ move var@11; + assert(¬move var@10); + var@15 := copy *(py); + var@14 := move var@15 == 2: i32; + var@13 := ¬ move var@14; + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 2: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -4402,31 +5020,15 @@ About to evaluate statement: y := 1: i32 var@18 -> ⊥ : i32 ; } -About to evaluate statement: px := &mut x -py := &mut y -ppx := &mut px -var@6 := &mut *(py) -*(ppx) := move var@6 -*(*(ppx)) := 2: i32 -var@9 := copy *(px) -var@8 := move var@9 == 2: i32 -var@7 := ¬ move var@8 -assert(¬move var@7) -var@12 := copy x -var@11 := move var@12 == 0: i32 -var@10 := ¬ move var@11 -assert(¬move var@10) -var@15 := copy *(py) -var@14 := move var@15 == 2: i32 -var@13 := ¬ move var@14 -assert(¬move var@13) -var@18 := copy y -var@17 := move var@18 == 2: i32 -var@16 := ¬ move var@17 -assert(¬move var@16) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + px := &mut x +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -4452,9 +5054,36 @@ return var@18 -> ⊥ : i32 ; } -About to evaluate statement: px := &mut x + [[32mDebug[39m] +**About to evaluate statement**: [ + py := &mut y; + ppx := &mut px; + var@6 := &mut *(py); + *(ppx) := move var@6; + *(*(ppx)) := 2: i32; + var@9 := copy *(px); + var@8 := move var@9 == 2: i32; + var@7 := ¬ move var@8; + assert(¬move var@7); + var@12 := copy x; + var@11 := move var@12 == 0: i32; + var@10 := ¬ move var@11; + assert(¬move var@10); + var@15 := copy *(py); + var@14 := move var@15 == 2: i32; + var@13 := ¬ move var@14; + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 2: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -4480,30 +5109,15 @@ About to evaluate statement: px := &mut x var@18 -> ⊥ : i32 ; } -About to evaluate statement: py := &mut y -ppx := &mut px -var@6 := &mut *(py) -*(ppx) := move var@6 -*(*(ppx)) := 2: i32 -var@9 := copy *(px) -var@8 := move var@9 == 2: i32 -var@7 := ¬ move var@8 -assert(¬move var@7) -var@12 := copy x -var@11 := move var@12 == 0: i32 -var@10 := ¬ move var@11 -assert(¬move var@10) -var@15 := copy *(py) -var@14 := move var@15 == 2: i32 -var@13 := ¬ move var@14 -assert(¬move var@13) -var@18 := copy y -var@17 := move var@18 == 2: i32 -var@16 := ¬ move var@17 -assert(¬move var@16) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + py := &mut y +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -4529,9 +5143,35 @@ return var@18 -> ⊥ : i32 ; } -About to evaluate statement: py := &mut y + [[32mDebug[39m] +**About to evaluate statement**: [ + ppx := &mut px; + var@6 := &mut *(py); + *(ppx) := move var@6; + *(*(ppx)) := 2: i32; + var@9 := copy *(px); + var@8 := move var@9 == 2: i32; + var@7 := ¬ move var@8; + assert(¬move var@7); + var@12 := copy x; + var@11 := move var@12 == 0: i32; + var@10 := ¬ move var@11; + assert(¬move var@10); + var@15 := copy *(py); + var@14 := move var@15 == 2: i32; + var@13 := ¬ move var@14; + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 2: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -4557,29 +5197,15 @@ About to evaluate statement: py := &mut y var@18 -> ⊥ : i32 ; } -About to evaluate statement: ppx := &mut px -var@6 := &mut *(py) -*(ppx) := move var@6 -*(*(ppx)) := 2: i32 -var@9 := copy *(px) -var@8 := move var@9 == 2: i32 -var@7 := ¬ move var@8 -assert(¬move var@7) -var@12 := copy x -var@11 := move var@12 == 0: i32 -var@10 := ¬ move var@11 -assert(¬move var@10) -var@15 := copy *(py) -var@14 := move var@15 == 2: i32 -var@13 := ¬ move var@14 -assert(¬move var@13) -var@18 := copy y -var@17 := move var@18 == 2: i32 -var@16 := ¬ move var@17 -assert(¬move var@16) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + ppx := &mut px +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -4605,9 +5231,34 @@ return var@18 -> ⊥ : i32 ; } -About to evaluate statement: ppx := &mut px + [[32mDebug[39m] +**About to evaluate statement**: [ + var@6 := &mut *(py); + *(ppx) := move var@6; + *(*(ppx)) := 2: i32; + var@9 := copy *(px); + var@8 := move var@9 == 2: i32; + var@7 := ¬ move var@8; + assert(¬move var@7); + var@12 := copy x; + var@11 := move var@12 == 0: i32; + var@10 := ¬ move var@11; + assert(¬move var@10); + var@15 := copy *(py); + var@14 := move var@15 == 2: i32; + var@13 := ¬ move var@14; + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 2: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -4633,28 +5284,15 @@ About to evaluate statement: ppx := &mut px var@18 -> ⊥ : i32 ; } -About to evaluate statement: var@6 := &mut *(py) -*(ppx) := move var@6 -*(*(ppx)) := 2: i32 -var@9 := copy *(px) -var@8 := move var@9 == 2: i32 -var@7 := ¬ move var@8 -assert(¬move var@7) -var@12 := copy x -var@11 := move var@12 == 0: i32 -var@10 := ¬ move var@11 -assert(¬move var@10) -var@15 := copy *(py) -var@14 := move var@15 == 2: i32 -var@13 := ¬ move var@14 -assert(¬move var@13) -var@18 := copy y -var@17 := move var@18 == 2: i32 -var@16 := ¬ move var@17 -assert(¬move var@16) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + var@6 := &mut *(py) +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -4680,9 +5318,33 @@ return var@18 -> ⊥ : i32 ; } -About to evaluate statement: var@6 := &mut *(py) + [[32mDebug[39m] +**About to evaluate statement**: [ + *(ppx) := move var@6; + *(*(ppx)) := 2: i32; + var@9 := copy *(px); + var@8 := move var@9 == 2: i32; + var@7 := ¬ move var@8; + assert(¬move var@7); + var@12 := copy x; + var@11 := move var@12 == 0: i32; + var@10 := ¬ move var@11; + assert(¬move var@10); + var@15 := copy *(py); + var@14 := move var@15 == 2: i32; + var@13 := ¬ move var@14; + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 2: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -4708,27 +5370,15 @@ About to evaluate statement: var@6 := &mut *(py) var@18 -> ⊥ : i32 ; } -About to evaluate statement: *(ppx) := move var@6 -*(*(ppx)) := 2: i32 -var@9 := copy *(px) -var@8 := move var@9 == 2: i32 -var@7 := ¬ move var@8 -assert(¬move var@7) -var@12 := copy x -var@11 := move var@12 == 0: i32 -var@10 := ¬ move var@11 -assert(¬move var@10) -var@15 := copy *(py) -var@14 := move var@15 == 2: i32 -var@13 := ¬ move var@14 -assert(¬move var@13) -var@18 := copy y -var@17 := move var@18 == 2: i32 -var@16 := ¬ move var@17 -assert(¬move var@16) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + *(ppx) := move var@6 +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -4754,10 +5404,11 @@ return var@18 -> ⊥ : i32 ; } -About to evaluate statement: *(ppx) := move var@6 + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -4790,6 +5441,29 @@ move var@6 [[32mDebug[39m] Value to move: &mut@3 (1: i32) [[32mDebug[39m] +**About to evaluate statement**: [ + *(*(ppx)) := 2: i32; + var@9 := copy *(px); + var@8 := move var@9 == 2: i32; + var@7 := ¬ move var@8; + assert(¬move var@7); + var@12 := copy x; + var@11 := move var@12 == 0: i32; + var@10 := ¬ move var@11; + assert(¬move var@10); + var@15 := copy *(py); + var@14 := move var@15 == 2: i32; + var@13 := ¬ move var@14; + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 2: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -4815,26 +5489,15 @@ move var@6 var@18 -> ⊥ : i32 ; } -About to evaluate statement: *(*(ppx)) := 2: i32 -var@9 := copy *(px) -var@8 := move var@9 == 2: i32 -var@7 := ¬ move var@8 -assert(¬move var@7) -var@12 := copy x -var@11 := move var@12 == 0: i32 -var@10 := ¬ move var@11 -assert(¬move var@10) -var@15 := copy *(py) -var@14 := move var@15 == 2: i32 -var@13 := ¬ move var@14 -assert(¬move var@13) -var@18 := copy y -var@17 := move var@18 == 2: i32 -var@16 := ¬ move var@17 -assert(¬move var@16) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + *(*(ppx)) := 2: i32 +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -4860,10 +5523,11 @@ return var@18 -> ⊥ : i32 ; } -About to evaluate statement: *(*(ppx)) := 2: i32 + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -4894,6 +5558,28 @@ About to evaluate statement: *(*(ppx)) := 2: i32 2: i32 [[32mDebug[39m] +**About to evaluate statement**: [ + var@9 := copy *(px); + var@8 := move var@9 == 2: i32; + var@7 := ¬ move var@8; + assert(¬move var@7); + var@12 := copy x; + var@11 := move var@12 == 0: i32; + var@10 := ¬ move var@11; + assert(¬move var@10); + var@15 := copy *(py); + var@14 := move var@15 == 2: i32; + var@13 := ¬ move var@14; + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 2: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -4919,25 +5605,15 @@ About to evaluate statement: *(*(ppx)) := 2: i32 var@18 -> ⊥ : i32 ; } -About to evaluate statement: var@9 := copy *(px) -var@8 := move var@9 == 2: i32 -var@7 := ¬ move var@8 -assert(¬move var@7) -var@12 := copy x -var@11 := move var@12 == 0: i32 -var@10 := ¬ move var@11 -assert(¬move var@10) -var@15 := copy *(py) -var@14 := move var@15 == 2: i32 -var@13 := ¬ move var@14 -assert(¬move var@13) -var@18 := copy y -var@17 := move var@18 == 2: i32 -var@16 := ¬ move var@17 -assert(¬move var@16) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + var@9 := copy *(px) +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -4963,10 +5639,11 @@ return var@18 -> ⊥ : i32 ; } -About to evaluate statement: var@9 := copy *(px) + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -4999,6 +5676,27 @@ copy *(px) [[32mDebug[39m] Value to copy: 2: i32 [[32mDebug[39m] +**About to evaluate statement**: [ + var@8 := move var@9 == 2: i32; + var@7 := ¬ move var@8; + assert(¬move var@7); + var@12 := copy x; + var@11 := move var@12 == 0: i32; + var@10 := ¬ move var@11; + assert(¬move var@10); + var@15 := copy *(py); + var@14 := move var@15 == 2: i32; + var@13 := ¬ move var@14; + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 2: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -5024,24 +5722,15 @@ copy *(px) var@18 -> ⊥ : i32 ; } -About to evaluate statement: var@8 := move var@9 == 2: i32 -var@7 := ¬ move var@8 -assert(¬move var@7) -var@12 := copy x -var@11 := move var@12 == 0: i32 -var@10 := ¬ move var@11 -assert(¬move var@10) -var@15 := copy *(py) -var@14 := move var@15 == 2: i32 -var@13 := ¬ move var@14 -assert(¬move var@13) -var@18 := copy y -var@17 := move var@18 == 2: i32 -var@16 := ¬ move var@17 -assert(¬move var@16) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + var@8 := move var@9 == 2: i32 +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -5067,10 +5756,11 @@ return var@18 -> ⊥ : i32 ; } -About to evaluate statement: var@8 := move var@9 == 2: i32 + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -5104,6 +5794,7 @@ move var@9 2: i32 [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -5134,6 +5825,26 @@ move var@9 2: i32 [[32mDebug[39m] +**About to evaluate statement**: [ + var@7 := ¬ move var@8; + assert(¬move var@7); + var@12 := copy x; + var@11 := move var@12 == 0: i32; + var@10 := ¬ move var@11; + assert(¬move var@10); + var@15 := copy *(py); + var@14 := move var@15 == 2: i32; + var@13 := ¬ move var@14; + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 2: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -5159,23 +5870,15 @@ move var@9 var@18 -> ⊥ : i32 ; } -About to evaluate statement: var@7 := ¬ move var@8 -assert(¬move var@7) -var@12 := copy x -var@11 := move var@12 == 0: i32 -var@10 := ¬ move var@11 -assert(¬move var@10) -var@15 := copy *(py) -var@14 := move var@15 == 2: i32 -var@13 := ¬ move var@14 -assert(¬move var@13) -var@18 := copy y -var@17 := move var@18 == 2: i32 -var@16 := ¬ move var@17 -assert(¬move var@16) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + var@7 := ¬ move var@8 +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -5201,10 +5904,11 @@ return var@18 -> ⊥ : i32 ; } -About to evaluate statement: var@7 := ¬ move var@8 + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -5237,6 +5941,25 @@ move var@8 [[32mDebug[39m] Value to move: true [[32mDebug[39m] +**About to evaluate statement**: [ + assert(¬move var@7); + var@12 := copy x; + var@11 := move var@12 == 0: i32; + var@10 := ¬ move var@11; + assert(¬move var@10); + var@15 := copy *(py); + var@14 := move var@15 == 2: i32; + var@13 := ¬ move var@14; + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 2: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -5262,22 +5985,15 @@ true var@18 -> ⊥ : i32 ; } -About to evaluate statement: assert(¬move var@7) -var@12 := copy x -var@11 := move var@12 == 0: i32 -var@10 := ¬ move var@11 -assert(¬move var@10) -var@15 := copy *(py) -var@14 := move var@15 == 2: i32 -var@13 := ¬ move var@14 -assert(¬move var@13) -var@18 := copy y -var@17 := move var@18 == 2: i32 -var@16 := ¬ move var@17 -assert(¬move var@16) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + assert(¬move var@7) +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -5303,10 +6019,11 @@ return var@18 -> ⊥ : i32 ; } -About to evaluate statement: assert(¬move var@7) + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -5339,6 +6056,24 @@ move var@7 [[32mDebug[39m] Value to move: false [[32mDebug[39m] +**About to evaluate statement**: [ + var@12 := copy x; + var@11 := move var@12 == 0: i32; + var@10 := ¬ move var@11; + assert(¬move var@10); + var@15 := copy *(py); + var@14 := move var@15 == 2: i32; + var@13 := ¬ move var@14; + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 2: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -5364,21 +6099,15 @@ false var@18 -> ⊥ : i32 ; } -About to evaluate statement: var@12 := copy x -var@11 := move var@12 == 0: i32 -var@10 := ¬ move var@11 -assert(¬move var@10) -var@15 := copy *(py) -var@14 := move var@15 == 2: i32 -var@13 := ¬ move var@14 -assert(¬move var@13) -var@18 := copy y -var@17 := move var@18 == 2: i32 -var@16 := ¬ move var@17 -assert(¬move var@16) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + var@12 := copy x +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -5404,10 +6133,11 @@ return var@18 -> ⊥ : i32 ; } -About to evaluate statement: var@12 := copy x + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -5440,6 +6170,23 @@ copy x [[32mDebug[39m] Value to copy: 0: i32 [[32mDebug[39m] +**About to evaluate statement**: [ + var@11 := move var@12 == 0: i32; + var@10 := ¬ move var@11; + assert(¬move var@10); + var@15 := copy *(py); + var@14 := move var@15 == 2: i32; + var@13 := ¬ move var@14; + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 2: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -5465,20 +6212,15 @@ copy x var@18 -> ⊥ : i32 ; } -About to evaluate statement: var@11 := move var@12 == 0: i32 -var@10 := ¬ move var@11 -assert(¬move var@10) -var@15 := copy *(py) -var@14 := move var@15 == 2: i32 -var@13 := ¬ move var@14 -assert(¬move var@13) -var@18 := copy y -var@17 := move var@18 == 2: i32 -var@16 := ¬ move var@17 -assert(¬move var@16) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + var@11 := move var@12 == 0: i32 +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -5504,10 +6246,11 @@ return var@18 -> ⊥ : i32 ; } -About to evaluate statement: var@11 := move var@12 == 0: i32 + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -5541,6 +6284,7 @@ move var@12 0: i32 [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -5571,6 +6315,22 @@ move var@12 0: i32 [[32mDebug[39m] +**About to evaluate statement**: [ + var@10 := ¬ move var@11; + assert(¬move var@10); + var@15 := copy *(py); + var@14 := move var@15 == 2: i32; + var@13 := ¬ move var@14; + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 2: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -5596,19 +6356,15 @@ move var@12 var@18 -> ⊥ : i32 ; } -About to evaluate statement: var@10 := ¬ move var@11 -assert(¬move var@10) -var@15 := copy *(py) -var@14 := move var@15 == 2: i32 -var@13 := ¬ move var@14 -assert(¬move var@13) -var@18 := copy y -var@17 := move var@18 == 2: i32 -var@16 := ¬ move var@17 -assert(¬move var@16) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + var@10 := ¬ move var@11 +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -5634,10 +6390,11 @@ return var@18 -> ⊥ : i32 ; } -About to evaluate statement: var@10 := ¬ move var@11 + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -5670,6 +6427,21 @@ move var@11 [[32mDebug[39m] Value to move: true [[32mDebug[39m] +**About to evaluate statement**: [ + assert(¬move var@10); + var@15 := copy *(py); + var@14 := move var@15 == 2: i32; + var@13 := ¬ move var@14; + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 2: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -5695,18 +6467,15 @@ true var@18 -> ⊥ : i32 ; } -About to evaluate statement: assert(¬move var@10) -var@15 := copy *(py) -var@14 := move var@15 == 2: i32 -var@13 := ¬ move var@14 -assert(¬move var@13) -var@18 := copy y -var@17 := move var@18 == 2: i32 -var@16 := ¬ move var@17 -assert(¬move var@16) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + assert(¬move var@10) +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -5732,10 +6501,11 @@ return var@18 -> ⊥ : i32 ; } -About to evaluate statement: assert(¬move var@10) + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -5768,6 +6538,20 @@ move var@10 [[32mDebug[39m] Value to move: false [[32mDebug[39m] +**About to evaluate statement**: [ + var@15 := copy *(py); + var@14 := move var@15 == 2: i32; + var@13 := ¬ move var@14; + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 2: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -5793,17 +6577,15 @@ false var@18 -> ⊥ : i32 ; } -About to evaluate statement: var@15 := copy *(py) -var@14 := move var@15 == 2: i32 -var@13 := ¬ move var@14 -assert(¬move var@13) -var@18 := copy y -var@17 := move var@18 == 2: i32 -var@16 := ¬ move var@17 -assert(¬move var@16) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + var@15 := copy *(py) +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -5829,10 +6611,11 @@ return var@18 -> ⊥ : i32 ; } -About to evaluate statement: var@15 := copy *(py) + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -5865,6 +6648,19 @@ copy *(py) [[32mDebug[39m] Value to copy: 2: i32 [[32mDebug[39m] +**About to evaluate statement**: [ + var@14 := move var@15 == 2: i32; + var@13 := ¬ move var@14; + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 2: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -5890,16 +6686,15 @@ copy *(py) var@18 -> ⊥ : i32 ; } -About to evaluate statement: var@14 := move var@15 == 2: i32 -var@13 := ¬ move var@14 -assert(¬move var@13) -var@18 := copy y -var@17 := move var@18 == 2: i32 -var@16 := ¬ move var@17 -assert(¬move var@16) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + var@14 := move var@15 == 2: i32 +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -5925,10 +6720,11 @@ return var@18 -> ⊥ : i32 ; } -About to evaluate statement: var@14 := move var@15 == 2: i32 + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -5962,6 +6758,7 @@ move var@15 2: i32 [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -5992,6 +6789,18 @@ move var@15 2: i32 [[32mDebug[39m] +**About to evaluate statement**: [ + var@13 := ¬ move var@14; + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 2: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -6017,15 +6826,15 @@ move var@15 var@18 -> ⊥ : i32 ; } -About to evaluate statement: var@13 := ¬ move var@14 -assert(¬move var@13) -var@18 := copy y -var@17 := move var@18 == 2: i32 -var@16 := ¬ move var@17 -assert(¬move var@16) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + var@13 := ¬ move var@14 +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -6051,10 +6860,11 @@ return var@18 -> ⊥ : i32 ; } -About to evaluate statement: var@13 := ¬ move var@14 + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -6087,6 +6897,17 @@ move var@14 [[32mDebug[39m] Value to move: true [[32mDebug[39m] +**About to evaluate statement**: [ + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 2: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -6112,14 +6933,15 @@ true var@18 -> ⊥ : i32 ; } -About to evaluate statement: assert(¬move var@13) -var@18 := copy y -var@17 := move var@18 == 2: i32 -var@16 := ¬ move var@17 -assert(¬move var@16) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + assert(¬move var@13) +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -6145,10 +6967,11 @@ return var@18 -> ⊥ : i32 ; } -About to evaluate statement: assert(¬move var@13) + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -6181,6 +7004,16 @@ move var@13 [[32mDebug[39m] Value to move: false [[32mDebug[39m] +**About to evaluate statement**: [ + var@18 := copy y; + var@17 := move var@18 == 2: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -6206,13 +7039,15 @@ false var@18 -> ⊥ : i32 ; } -About to evaluate statement: var@18 := copy y -var@17 := move var@18 == 2: i32 -var@16 := ¬ move var@17 -assert(¬move var@16) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + var@18 := copy y +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -6238,10 +7073,11 @@ return var@18 -> ⊥ : i32 ; } -About to evaluate statement: var@18 := copy y + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -6274,6 +7110,15 @@ copy y [[32mDebug[39m] Value to copy: 2: i32 [[32mDebug[39m] +**About to evaluate statement**: [ + var@17 := move var@18 == 2: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -6299,12 +7144,15 @@ copy y var@18 -> 2: i32 ; } -About to evaluate statement: var@17 := move var@18 == 2: i32 -var@16 := ¬ move var@17 -assert(¬move var@16) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + var@17 := move var@18 == 2: i32 +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -6330,10 +7178,11 @@ return var@18 -> 2: i32 ; } -About to evaluate statement: var@17 := move var@18 == 2: i32 + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -6367,6 +7216,7 @@ move var@18 2: i32 [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -6397,6 +7247,14 @@ move var@18 2: i32 [[32mDebug[39m] +**About to evaluate statement**: [ + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -6422,11 +7280,15 @@ move var@18 var@18 -> ⊥ : i32 ; } -About to evaluate statement: var@16 := ¬ move var@17 -assert(¬move var@16) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + var@16 := ¬ move var@17 +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -6452,10 +7314,11 @@ return var@18 -> ⊥ : i32 ; } -About to evaluate statement: var@16 := ¬ move var@17 + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -6488,6 +7351,13 @@ move var@17 [[32mDebug[39m] Value to move: true [[32mDebug[39m] +**About to evaluate statement**: [ + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -6513,10 +7383,15 @@ true var@18 -> ⊥ : i32 ; } -About to evaluate statement: assert(¬move var@16) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + assert(¬move var@16) +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -6542,10 +7417,11 @@ return var@18 -> ⊥ : i32 ; } -About to evaluate statement: assert(¬move var@16) + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -6578,6 +7454,12 @@ move var@16 [[32mDebug[39m] Value to move: false [[32mDebug[39m] +**About to evaluate statement**: [ + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -6603,10 +7485,22 @@ false var@18 -> ⊥ : i32 ; } -About to evaluate statement: return + [[32mDebug[39m] test_unit_function: test_list1 [[32mDebug[39m] +**About to evaluate statement**: [ + set_discriminant(var@3, 1); + var@2 := move alloc::boxed::Box<test1::List<i32>>::new(move var@3); + (l as test1::List::Cons).0 := 0: i32; + (l as test1::List::Cons).1 := move var@2; + set_discriminant(l, 0); + drop(l); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -6617,15 +7511,15 @@ About to evaluate statement: return var@3 -> ⊥ : test1::List<i32> ; } -About to evaluate statement: set_discriminant(var@3, 1) -var@2 := move alloc::boxed::Box<test1::List<i32>>::new(move var@3) -(l as test1::List::Cons).0 := 0: i32 -(l as test1::List::Cons).1 := move var@2 -set_discriminant(l, 0) -drop(l) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + set_discriminant(var@3, 1) +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -6636,9 +7530,20 @@ return var@3 -> ⊥ : test1::List<i32> ; } -About to evaluate statement: set_discriminant(var@3, 1) + [[32mDebug[39m] +**About to evaluate statement**: [ + var@2 := move alloc::boxed::Box<test1::List<i32>>::new(move var@3); + (l as test1::List::Cons).0 := 0: i32; + (l as test1::List::Cons).1 := move var@2; + set_discriminant(l, 0); + drop(l); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -6649,14 +7554,15 @@ About to evaluate statement: set_discriminant(var@3, 1) var@3 -> test1::List::Nil ; } -About to evaluate statement: var@2 := move alloc::boxed::Box<test1::List<i32>>::new(move var@3) -(l as test1::List::Cons).0 := 0: i32 -(l as test1::List::Cons).1 := move var@2 -set_discriminant(l, 0) -drop(l) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + var@2 := move alloc::boxed::Box<test1::List<i32>>::new(move var@3) +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -6667,7 +7573,7 @@ return var@3 -> test1::List::Nil ; } -About to evaluate statement: var@2 := move alloc::boxed::Box<test1::List<i32>>::new(move var@3) + [[32mDebug[39m] eval_non_local_function_call: - fid:CfimAst.BoxNew @@ -6676,6 +7582,7 @@ About to evaluate statement: var@2 := move alloc::boxed::Box<test1::List<i32>>:: - dest: var@2 [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -6694,6 +7601,7 @@ move var@3 test1::List::Nil [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -6717,6 +7625,7 @@ move var@1 [[32mDebug[39m] Value to move: test1::List::Nil [[32mDebug[39m] ctx_pop_frame: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -6736,6 +7645,7 @@ test1::List::Nil [[32mDebug[39m] ctx_pop_frame: locals to drop: [1] [[32mDebug[39m] drop_value: place: var@1 [[32mDebug[39m] ctx_pop_frame: after dropping local variables: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -6754,6 +7664,7 @@ test1::List::Nil [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -6777,6 +7688,16 @@ move @return [[32mDebug[39m] Value to move: @Box(test1::List::Nil) [[32mDebug[39m] +**About to evaluate statement**: [ + (l as test1::List::Cons).0 := 0: i32; + (l as test1::List::Cons).1 := move var@2; + set_discriminant(l, 0); + drop(l); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -6787,13 +7708,15 @@ move @return var@3 -> ⊥ : test1::List<i32> ; } -About to evaluate statement: (l as test1::List::Cons).0 := 0: i32 -(l as test1::List::Cons).1 := move var@2 -set_discriminant(l, 0) -drop(l) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + (l as test1::List::Cons).0 := 0: i32 +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -6804,10 +7727,11 @@ return var@3 -> ⊥ : test1::List<i32> ; } -About to evaluate statement: (l as test1::List::Cons).0 := 0: i32 + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -6826,6 +7750,15 @@ About to evaluate statement: (l as test1::List::Cons).0 := 0: i32 pe: (Expressions.Field ((Expressions.ProjAdt (1, (Some 0))), 0)) ty: (Types.Adt ((Types.AdtId 1), [], [(Types.Integer Types.I32)])) [[32mDebug[39m] +**About to evaluate statement**: [ + (l as test1::List::Cons).1 := move var@2; + set_discriminant(l, 0); + drop(l); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -6836,12 +7769,15 @@ ty: (Types.Adt ((Types.AdtId 1), [], [(Types.Integer Types.I32)])) var@3 -> ⊥ : test1::List<i32> ; } -About to evaluate statement: (l as test1::List::Cons).1 := move var@2 -set_discriminant(l, 0) -drop(l) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + (l as test1::List::Cons).1 := move var@2 +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -6852,10 +7788,11 @@ return var@3 -> ⊥ : test1::List<i32> ; } -About to evaluate statement: (l as test1::List::Cons).1 := move var@2 + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -6873,6 +7810,14 @@ move var@2 [[32mDebug[39m] Value to move: @Box(test1::List::Nil) [[32mDebug[39m] +**About to evaluate statement**: [ + set_discriminant(l, 0); + drop(l); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -6883,11 +7828,15 @@ move var@2 var@3 -> ⊥ : test1::List<i32> ; } -About to evaluate statement: set_discriminant(l, 0) -drop(l) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + set_discriminant(l, 0) +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -6898,9 +7847,16 @@ return var@3 -> ⊥ : test1::List<i32> ; } -About to evaluate statement: set_discriminant(l, 0) + [[32mDebug[39m] +**About to evaluate statement**: [ + drop(l); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -6911,10 +7867,15 @@ About to evaluate statement: set_discriminant(l, 0) var@3 -> ⊥ : test1::List<i32> ; } -About to evaluate statement: drop(l) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + drop(l) +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -6925,10 +7886,16 @@ return var@3 -> ⊥ : test1::List<i32> ; } -About to evaluate statement: drop(l) + [[32mDebug[39m] drop_value: place: l [[32mDebug[39m] +**About to evaluate statement**: [ + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -6939,10 +7906,27 @@ About to evaluate statement: drop(l) var@3 -> ⊥ : test1::List<i32> ; } -About to evaluate statement: return + [[32mDebug[39m] test_unit_function: test_box1 [[32mDebug[39m] +**About to evaluate statement**: [ + b := move alloc::boxed::Box<i32>::new(0: i32); + var@3 := &two-phase b; + x := move core::ops::deref::DerefMut<i32>::deref_mut(move var@3); + *(x) := 1: i32; + var@5 := &b; + x := move core::ops::deref::Deref<Box<i32>>::deref(move var@5); + var@8 := copy *(x); + var@7 := move var@8 == 1: i32; + var@6 := ¬ move var@7; + assert(¬move var@6); + drop(b); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -6958,20 +7942,15 @@ About to evaluate statement: return var@8 -> ⊥ : i32 ; } -About to evaluate statement: b := move alloc::boxed::Box<i32>::new(0: i32) -var@3 := &two-phase b -x := move core::ops::deref::DerefMut<i32>::deref_mut(move var@3) -*(x) := 1: i32 -var@5 := &b -x := move core::ops::deref::Deref<Box<i32>>::deref(move var@5) -var@8 := copy *(x) -var@7 := move var@8 == 1: i32 -var@6 := ¬ move var@7 -assert(¬move var@6) -drop(b) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + b := move alloc::boxed::Box<i32>::new(0: i32) +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -6987,7 +7966,7 @@ return var@8 -> ⊥ : i32 ; } -About to evaluate statement: b := move alloc::boxed::Box<i32>::new(0: i32) + [[32mDebug[39m] eval_non_local_function_call: - fid:CfimAst.BoxNew @@ -6996,6 +7975,7 @@ About to evaluate statement: b := move alloc::boxed::Box<i32>::new(0: i32) - dest: b [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -7017,6 +7997,7 @@ About to evaluate statement: b := move alloc::boxed::Box<i32>::new(0: i32) [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -7045,6 +8026,7 @@ move var@1 [[32mDebug[39m] Value to move: 0: i32 [[32mDebug[39m] ctx_pop_frame: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -7069,6 +8051,7 @@ move var@1 [[32mDebug[39m] ctx_pop_frame: locals to drop: [1] [[32mDebug[39m] drop_value: place: var@1 [[32mDebug[39m] ctx_pop_frame: after dropping local variables: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -7092,6 +8075,7 @@ move var@1 [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -7120,6 +8104,22 @@ move @return [[32mDebug[39m] Value to move: @Box(0: i32) [[32mDebug[39m] +**About to evaluate statement**: [ + var@3 := &two-phase b; + x := move core::ops::deref::DerefMut<i32>::deref_mut(move var@3); + *(x) := 1: i32; + var@5 := &b; + x := move core::ops::deref::Deref<Box<i32>>::deref(move var@5); + var@8 := copy *(x); + var@7 := move var@8 == 1: i32; + var@6 := ¬ move var@7; + assert(¬move var@6); + drop(b); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -7135,19 +8135,15 @@ move @return var@8 -> ⊥ : i32 ; } -About to evaluate statement: var@3 := &two-phase b -x := move core::ops::deref::DerefMut<i32>::deref_mut(move var@3) -*(x) := 1: i32 -var@5 := &b -x := move core::ops::deref::Deref<Box<i32>>::deref(move var@5) -var@8 := copy *(x) -var@7 := move var@8 == 1: i32 -var@6 := ¬ move var@7 -assert(¬move var@6) -drop(b) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + var@3 := &two-phase b +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -7163,9 +8159,24 @@ return var@8 -> ⊥ : i32 ; } -About to evaluate statement: var@3 := &two-phase b + [[32mDebug[39m] +**About to evaluate statement**: [ + x := move core::ops::deref::DerefMut<i32>::deref_mut(move var@3); + *(x) := 1: i32; + var@5 := &b; + x := move core::ops::deref::Deref<Box<i32>>::deref(move var@5); + var@8 := copy *(x); + var@7 := move var@8 == 1: i32; + var@6 := ¬ move var@7; + assert(¬move var@6); + drop(b); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -7181,18 +8192,15 @@ About to evaluate statement: var@3 := &two-phase b var@8 -> ⊥ : i32 ; } -About to evaluate statement: x := move core::ops::deref::DerefMut<i32>::deref_mut(move var@3) -*(x) := 1: i32 -var@5 := &b -x := move core::ops::deref::Deref<Box<i32>>::deref(move var@5) -var@8 := copy *(x) -var@7 := move var@8 == 1: i32 -var@6 := ¬ move var@7 -assert(¬move var@6) -drop(b) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + x := move core::ops::deref::DerefMut<i32>::deref_mut(move var@3) +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -7208,7 +8216,7 @@ return var@8 -> ⊥ : i32 ; } -About to evaluate statement: x := move core::ops::deref::DerefMut<i32>::deref_mut(move var@3) + [[32mDebug[39m] eval_non_local_function_call: - fid:CfimAst.BoxDerefMut @@ -7217,6 +8225,7 @@ About to evaluate statement: x := move core::ops::deref::DerefMut<i32>::deref_mu - dest: x [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -7252,6 +8261,7 @@ move var@3 [[32mDebug[39m] Value to move: &mut@0 (@Box(0: i32)) [[32mDebug[39m] ctx_pop_frame: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -7276,6 +8286,7 @@ move var@3 [[32mDebug[39m] ctx_pop_frame: locals to drop: [1] [[32mDebug[39m] drop_value: place: var@1 [[32mDebug[39m] ctx_pop_frame: after dropping local variables: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -7299,6 +8310,7 @@ move var@3 [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -7327,6 +8339,20 @@ move @return [[32mDebug[39m] Value to move: &mut@1 (0: i32) [[32mDebug[39m] +**About to evaluate statement**: [ + *(x) := 1: i32; + var@5 := &b; + x := move core::ops::deref::Deref<Box<i32>>::deref(move var@5); + var@8 := copy *(x); + var@7 := move var@8 == 1: i32; + var@6 := ¬ move var@7; + assert(¬move var@6); + drop(b); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -7342,17 +8368,15 @@ move @return var@8 -> ⊥ : i32 ; } -About to evaluate statement: *(x) := 1: i32 -var@5 := &b -x := move core::ops::deref::Deref<Box<i32>>::deref(move var@5) -var@8 := copy *(x) -var@7 := move var@8 == 1: i32 -var@6 := ¬ move var@7 -assert(¬move var@6) -drop(b) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + *(x) := 1: i32 +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -7368,10 +8392,11 @@ return var@8 -> ⊥ : i32 ; } -About to evaluate statement: *(x) := 1: i32 + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -7392,6 +8417,19 @@ About to evaluate statement: *(x) := 1: i32 1: i32 [[32mDebug[39m] +**About to evaluate statement**: [ + var@5 := &b; + x := move core::ops::deref::Deref<Box<i32>>::deref(move var@5); + var@8 := copy *(x); + var@7 := move var@8 == 1: i32; + var@6 := ¬ move var@7; + assert(¬move var@6); + drop(b); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -7407,16 +8445,15 @@ About to evaluate statement: *(x) := 1: i32 var@8 -> ⊥ : i32 ; } -About to evaluate statement: var@5 := &b -x := move core::ops::deref::Deref<Box<i32>>::deref(move var@5) -var@8 := copy *(x) -var@7 := move var@8 == 1: i32 -var@6 := ¬ move var@7 -assert(¬move var@6) -drop(b) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + var@5 := &b +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -7432,9 +8469,21 @@ return var@8 -> ⊥ : i32 ; } -About to evaluate statement: var@5 := &b + [[32mDebug[39m] +**About to evaluate statement**: [ + x := move core::ops::deref::Deref<Box<i32>>::deref(move var@5); + var@8 := copy *(x); + var@7 := move var@8 == 1: i32; + var@6 := ¬ move var@7; + assert(¬move var@6); + drop(b); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -7450,15 +8499,15 @@ About to evaluate statement: var@5 := &b var@8 -> ⊥ : i32 ; } -About to evaluate statement: x := move core::ops::deref::Deref<Box<i32>>::deref(move var@5) -var@8 := copy *(x) -var@7 := move var@8 == 1: i32 -var@6 := ¬ move var@7 -assert(¬move var@6) -drop(b) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + x := move core::ops::deref::Deref<Box<i32>>::deref(move var@5) +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -7474,7 +8523,7 @@ return var@8 -> ⊥ : i32 ; } -About to evaluate statement: x := move core::ops::deref::Deref<Box<i32>>::deref(move var@5) + [[32mDebug[39m] eval_non_local_function_call: - fid:CfimAst.BoxDeref @@ -7483,6 +8532,7 @@ About to evaluate statement: x := move core::ops::deref::Deref<Box<i32>>::deref( - dest: x [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -7505,6 +8555,7 @@ move var@5 [[32mDebug[39m] Value to move: ⌊shared@2⌋ [[32mDebug[39m] ctx_pop_frame: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -7529,6 +8580,7 @@ move var@5 [[32mDebug[39m] ctx_pop_frame: locals to drop: [1] [[32mDebug[39m] drop_value: place: var@1 [[32mDebug[39m] ctx_pop_frame: after dropping local variables: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -7552,6 +8604,7 @@ move var@5 [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -7580,6 +8633,17 @@ move @return [[32mDebug[39m] Value to move: ⌊shared@3⌋ [[32mDebug[39m] +**About to evaluate statement**: [ + var@8 := copy *(x); + var@7 := move var@8 == 1: i32; + var@6 := ¬ move var@7; + assert(¬move var@6); + drop(b); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -7595,14 +8659,15 @@ move @return var@8 -> ⊥ : i32 ; } -About to evaluate statement: var@8 := copy *(x) -var@7 := move var@8 == 1: i32 -var@6 := ¬ move var@7 -assert(¬move var@6) -drop(b) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + var@8 := copy *(x) +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -7618,10 +8683,11 @@ return var@8 -> ⊥ : i32 ; } -About to evaluate statement: var@8 := copy *(x) + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -7644,6 +8710,16 @@ copy *(x) [[32mDebug[39m] Value to copy: 1: i32 [[32mDebug[39m] +**About to evaluate statement**: [ + var@7 := move var@8 == 1: i32; + var@6 := ¬ move var@7; + assert(¬move var@6); + drop(b); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -7659,13 +8735,15 @@ copy *(x) var@8 -> 1: i32 ; } -About to evaluate statement: var@7 := move var@8 == 1: i32 -var@6 := ¬ move var@7 -assert(¬move var@6) -drop(b) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + var@7 := move var@8 == 1: i32 +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -7681,10 +8759,11 @@ return var@8 -> 1: i32 ; } -About to evaluate statement: var@7 := move var@8 == 1: i32 + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -7708,6 +8787,7 @@ move var@8 1: i32 [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -7728,6 +8808,15 @@ move var@8 1: i32 [[32mDebug[39m] +**About to evaluate statement**: [ + var@6 := ¬ move var@7; + assert(¬move var@6); + drop(b); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -7743,12 +8832,15 @@ move var@8 var@8 -> ⊥ : i32 ; } -About to evaluate statement: var@6 := ¬ move var@7 -assert(¬move var@6) -drop(b) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + var@6 := ¬ move var@7 +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -7764,10 +8856,11 @@ return var@8 -> ⊥ : i32 ; } -About to evaluate statement: var@6 := ¬ move var@7 + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -7790,6 +8883,14 @@ move var@7 [[32mDebug[39m] Value to move: true [[32mDebug[39m] +**About to evaluate statement**: [ + assert(¬move var@6); + drop(b); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -7805,11 +8906,15 @@ true var@8 -> ⊥ : i32 ; } -About to evaluate statement: assert(¬move var@6) -drop(b) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + assert(¬move var@6) +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -7825,10 +8930,11 @@ return var@8 -> ⊥ : i32 ; } -About to evaluate statement: assert(¬move var@6) + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -7851,6 +8957,13 @@ move var@6 [[32mDebug[39m] Value to move: false [[32mDebug[39m] +**About to evaluate statement**: [ + drop(b); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -7866,10 +8979,15 @@ false var@8 -> ⊥ : i32 ; } -About to evaluate statement: drop(b) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + drop(b) +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -7885,10 +9003,16 @@ return var@8 -> ⊥ : i32 ; } -About to evaluate statement: drop(b) + [[32mDebug[39m] drop_value: place: b [[32mDebug[39m] +**About to evaluate statement**: [ + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -7904,10 +9028,25 @@ About to evaluate statement: drop(b) var@8 -> ⊥ : i32 ; } -About to evaluate statement: return + [[32mDebug[39m] test_unit_function: test_copy_int [[32mDebug[39m] +**About to evaluate statement**: [ + x := 0: i32; + px := &x; + var@4 := copy x; + y := move copy_int(move var@4); + var@7 := copy *(px); + var@8 := copy y; + var@6 := move var@7 == move var@8; + var@5 := ¬ move var@6; + assert(¬move var@5); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -7923,18 +9062,15 @@ About to evaluate statement: return var@8 -> ⊥ : i32 ; } -About to evaluate statement: x := 0: i32 -px := &x -var@4 := copy x -y := move copy_int(move var@4) -var@7 := copy *(px) -var@8 := copy y -var@6 := move var@7 == move var@8 -var@5 := ¬ move var@6 -assert(¬move var@5) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + x := 0: i32 +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -7950,10 +9086,11 @@ return var@8 -> ⊥ : i32 ; } -About to evaluate statement: x := 0: i32 + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -7974,6 +9111,20 @@ About to evaluate statement: x := 0: i32 0: i32 [[32mDebug[39m] +**About to evaluate statement**: [ + px := &x; + var@4 := copy x; + y := move copy_int(move var@4); + var@7 := copy *(px); + var@8 := copy y; + var@6 := move var@7 == move var@8; + var@5 := ¬ move var@6; + assert(¬move var@5); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -7989,17 +9140,15 @@ About to evaluate statement: x := 0: i32 var@8 -> ⊥ : i32 ; } -About to evaluate statement: px := &x -var@4 := copy x -y := move copy_int(move var@4) -var@7 := copy *(px) -var@8 := copy y -var@6 := move var@7 == move var@8 -var@5 := ¬ move var@6 -assert(¬move var@5) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + px := &x +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -8015,9 +9164,22 @@ return var@8 -> ⊥ : i32 ; } -About to evaluate statement: px := &x + [[32mDebug[39m] +**About to evaluate statement**: [ + var@4 := copy x; + y := move copy_int(move var@4); + var@7 := copy *(px); + var@8 := copy y; + var@6 := move var@7 == move var@8; + var@5 := ¬ move var@6; + assert(¬move var@5); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -8033,16 +9195,15 @@ About to evaluate statement: px := &x var@8 -> ⊥ : i32 ; } -About to evaluate statement: var@4 := copy x -y := move copy_int(move var@4) -var@7 := copy *(px) -var@8 := copy y -var@6 := move var@7 == move var@8 -var@5 := ¬ move var@6 -assert(¬move var@5) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + var@4 := copy x +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -8058,10 +9219,11 @@ return var@8 -> ⊥ : i32 ; } -About to evaluate statement: var@4 := copy x + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -8084,6 +9246,18 @@ copy x [[32mDebug[39m] Value to copy: @shared_loan({0}, 0: i32) [[32mDebug[39m] +**About to evaluate statement**: [ + y := move copy_int(move var@4); + var@7 := copy *(px); + var@8 := copy y; + var@6 := move var@7 == move var@8; + var@5 := ¬ move var@6; + assert(¬move var@5); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -8099,15 +9273,15 @@ copy x var@8 -> ⊥ : i32 ; } -About to evaluate statement: y := move copy_int(move var@4) -var@7 := copy *(px) -var@8 := copy y -var@6 := move var@7 == move var@8 -var@5 := ¬ move var@6 -assert(¬move var@5) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + y := move copy_int(move var@4) +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -8123,10 +9297,11 @@ return var@8 -> ⊥ : i32 ; } -About to evaluate statement: y := move copy_int(move var@4) + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -8149,6 +9324,13 @@ move var@4 [[32mDebug[39m] Value to move: 0: i32 [[32mDebug[39m] +**About to evaluate statement**: [ + var@0 := copy x; + return +] + +**Context**: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -8170,10 +9352,15 @@ move var@4 x -> 0: i32 ; } -About to evaluate statement: var@0 := copy x -return + [[32mDebug[39m] +**About to evaluate statement**: [ + var@0 := copy x +] + +**Context**: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -8195,10 +9382,11 @@ return x -> 0: i32 ; } -About to evaluate statement: var@0 := copy x + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -8227,6 +9415,12 @@ copy x [[32mDebug[39m] Value to copy: 0: i32 [[32mDebug[39m] +**About to evaluate statement**: [ + return +] + +**Context**: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -8248,9 +9442,10 @@ copy x x -> 0: i32 ; } -About to evaluate statement: return + [[32mDebug[39m] ctx_pop_frame: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -8275,6 +9470,7 @@ About to evaluate statement: return [[32mDebug[39m] ctx_pop_frame: locals to drop: [1] [[32mDebug[39m] drop_value: place: x [[32mDebug[39m] ctx_pop_frame: after dropping local variables: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -8298,6 +9494,7 @@ About to evaluate statement: return [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -8326,6 +9523,17 @@ move var@0 [[32mDebug[39m] Value to move: 0: i32 [[32mDebug[39m] +**About to evaluate statement**: [ + var@7 := copy *(px); + var@8 := copy y; + var@6 := move var@7 == move var@8; + var@5 := ¬ move var@6; + assert(¬move var@5); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -8341,14 +9549,15 @@ move var@0 var@8 -> ⊥ : i32 ; } -About to evaluate statement: var@7 := copy *(px) -var@8 := copy y -var@6 := move var@7 == move var@8 -var@5 := ¬ move var@6 -assert(¬move var@5) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + var@7 := copy *(px) +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -8364,10 +9573,11 @@ return var@8 -> ⊥ : i32 ; } -About to evaluate statement: var@7 := copy *(px) + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -8390,6 +9600,16 @@ copy *(px) [[32mDebug[39m] Value to copy: 0: i32 [[32mDebug[39m] +**About to evaluate statement**: [ + var@8 := copy y; + var@6 := move var@7 == move var@8; + var@5 := ¬ move var@6; + assert(¬move var@5); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -8405,13 +9625,15 @@ copy *(px) var@8 -> ⊥ : i32 ; } -About to evaluate statement: var@8 := copy y -var@6 := move var@7 == move var@8 -var@5 := ¬ move var@6 -assert(¬move var@5) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + var@8 := copy y +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -8427,10 +9649,11 @@ return var@8 -> ⊥ : i32 ; } -About to evaluate statement: var@8 := copy y + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -8453,6 +9676,15 @@ copy y [[32mDebug[39m] Value to copy: 0: i32 [[32mDebug[39m] +**About to evaluate statement**: [ + var@6 := move var@7 == move var@8; + var@5 := ¬ move var@6; + assert(¬move var@5); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -8468,12 +9700,15 @@ copy y var@8 -> 0: i32 ; } -About to evaluate statement: var@6 := move var@7 == move var@8 -var@5 := ¬ move var@6 -assert(¬move var@5) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + var@6 := move var@7 == move var@8 +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -8489,10 +9724,11 @@ return var@8 -> 0: i32 ; } -About to evaluate statement: var@6 := move var@7 == move var@8 + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -8516,6 +9752,7 @@ move var@7 0: i32 [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -8538,6 +9775,14 @@ move var@8 [[32mDebug[39m] Value to move: 0: i32 [[32mDebug[39m] +**About to evaluate statement**: [ + var@5 := ¬ move var@6; + assert(¬move var@5); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -8553,11 +9798,15 @@ move var@8 var@8 -> ⊥ : i32 ; } -About to evaluate statement: var@5 := ¬ move var@6 -assert(¬move var@5) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + var@5 := ¬ move var@6 +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -8573,10 +9822,11 @@ return var@8 -> ⊥ : i32 ; } -About to evaluate statement: var@5 := ¬ move var@6 + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -8599,6 +9849,13 @@ move var@6 [[32mDebug[39m] Value to move: true [[32mDebug[39m] +**About to evaluate statement**: [ + assert(¬move var@5); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -8614,10 +9871,15 @@ true var@8 -> ⊥ : i32 ; } -About to evaluate statement: assert(¬move var@5) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + assert(¬move var@5) +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -8633,10 +9895,11 @@ return var@8 -> ⊥ : i32 ; } -About to evaluate statement: assert(¬move var@5) + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -8659,6 +9922,12 @@ move var@5 [[32mDebug[39m] Value to move: false [[32mDebug[39m] +**About to evaluate statement**: [ + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -8674,10 +9943,27 @@ false var@8 -> ⊥ : i32 ; } -About to evaluate statement: return + [[32mDebug[39m] test_unit_function: test_is_cons [[32mDebug[39m] +**About to evaluate statement**: [ + set_discriminant(var@3, 1); + var@2 := move alloc::boxed::Box<test1::List<i32>>::new(move var@3); + (l as test1::List::Cons).0 := 0: i32; + (l as test1::List::Cons).1 := move var@2; + set_discriminant(l, 0); + var@7 := &l; + var@6 := copy var@7; + var@5 := move is_cons<i32>(move var@6); + var@4 := ¬ move var@5; + assert(¬move var@4); + drop(l); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -8692,20 +9978,15 @@ About to evaluate statement: return var@7 -> ⊥ : &'_ (test1::List<i32>) ; } -About to evaluate statement: set_discriminant(var@3, 1) -var@2 := move alloc::boxed::Box<test1::List<i32>>::new(move var@3) -(l as test1::List::Cons).0 := 0: i32 -(l as test1::List::Cons).1 := move var@2 -set_discriminant(l, 0) -var@7 := &l -var@6 := copy var@7 -var@5 := move is_cons<i32>(move var@6) -var@4 := ¬ move var@5 -assert(¬move var@4) -drop(l) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + set_discriminant(var@3, 1) +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -8720,9 +10001,25 @@ return var@7 -> ⊥ : &'_ (test1::List<i32>) ; } -About to evaluate statement: set_discriminant(var@3, 1) + [[32mDebug[39m] +**About to evaluate statement**: [ + var@2 := move alloc::boxed::Box<test1::List<i32>>::new(move var@3); + (l as test1::List::Cons).0 := 0: i32; + (l as test1::List::Cons).1 := move var@2; + set_discriminant(l, 0); + var@7 := &l; + var@6 := copy var@7; + var@5 := move is_cons<i32>(move var@6); + var@4 := ¬ move var@5; + assert(¬move var@4); + drop(l); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -8737,19 +10034,15 @@ About to evaluate statement: set_discriminant(var@3, 1) var@7 -> ⊥ : &'_ (test1::List<i32>) ; } -About to evaluate statement: var@2 := move alloc::boxed::Box<test1::List<i32>>::new(move var@3) -(l as test1::List::Cons).0 := 0: i32 -(l as test1::List::Cons).1 := move var@2 -set_discriminant(l, 0) -var@7 := &l -var@6 := copy var@7 -var@5 := move is_cons<i32>(move var@6) -var@4 := ¬ move var@5 -assert(¬move var@4) -drop(l) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + var@2 := move alloc::boxed::Box<test1::List<i32>>::new(move var@3) +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -8764,7 +10057,7 @@ return var@7 -> ⊥ : &'_ (test1::List<i32>) ; } -About to evaluate statement: var@2 := move alloc::boxed::Box<test1::List<i32>>::new(move var@3) + [[32mDebug[39m] eval_non_local_function_call: - fid:CfimAst.BoxNew @@ -8773,6 +10066,7 @@ About to evaluate statement: var@2 := move alloc::boxed::Box<test1::List<i32>>:: - dest: var@2 [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -8795,6 +10089,7 @@ move var@3 test1::List::Nil [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -8822,6 +10117,7 @@ move var@1 [[32mDebug[39m] Value to move: test1::List::Nil [[32mDebug[39m] ctx_pop_frame: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -8845,6 +10141,7 @@ test1::List::Nil [[32mDebug[39m] ctx_pop_frame: locals to drop: [1] [[32mDebug[39m] drop_value: place: var@1 [[32mDebug[39m] ctx_pop_frame: after dropping local variables: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -8867,6 +10164,7 @@ test1::List::Nil [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -8894,6 +10192,21 @@ move @return [[32mDebug[39m] Value to move: @Box(test1::List::Nil) [[32mDebug[39m] +**About to evaluate statement**: [ + (l as test1::List::Cons).0 := 0: i32; + (l as test1::List::Cons).1 := move var@2; + set_discriminant(l, 0); + var@7 := &l; + var@6 := copy var@7; + var@5 := move is_cons<i32>(move var@6); + var@4 := ¬ move var@5; + assert(¬move var@4); + drop(l); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -8908,18 +10221,15 @@ move @return var@7 -> ⊥ : &'_ (test1::List<i32>) ; } -About to evaluate statement: (l as test1::List::Cons).0 := 0: i32 -(l as test1::List::Cons).1 := move var@2 -set_discriminant(l, 0) -var@7 := &l -var@6 := copy var@7 -var@5 := move is_cons<i32>(move var@6) -var@4 := ¬ move var@5 -assert(¬move var@4) -drop(l) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + (l as test1::List::Cons).0 := 0: i32 +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -8934,10 +10244,11 @@ return var@7 -> ⊥ : &'_ (test1::List<i32>) ; } -About to evaluate statement: (l as test1::List::Cons).0 := 0: i32 + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -8960,6 +10271,20 @@ About to evaluate statement: (l as test1::List::Cons).0 := 0: i32 pe: (Expressions.Field ((Expressions.ProjAdt (1, (Some 0))), 0)) ty: (Types.Adt ((Types.AdtId 1), [], [(Types.Integer Types.I32)])) [[32mDebug[39m] +**About to evaluate statement**: [ + (l as test1::List::Cons).1 := move var@2; + set_discriminant(l, 0); + var@7 := &l; + var@6 := copy var@7; + var@5 := move is_cons<i32>(move var@6); + var@4 := ¬ move var@5; + assert(¬move var@4); + drop(l); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -8974,17 +10299,15 @@ ty: (Types.Adt ((Types.AdtId 1), [], [(Types.Integer Types.I32)])) var@7 -> ⊥ : &'_ (test1::List<i32>) ; } -About to evaluate statement: (l as test1::List::Cons).1 := move var@2 -set_discriminant(l, 0) -var@7 := &l -var@6 := copy var@7 -var@5 := move is_cons<i32>(move var@6) -var@4 := ¬ move var@5 -assert(¬move var@4) -drop(l) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + (l as test1::List::Cons).1 := move var@2 +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -8999,10 +10322,11 @@ return var@7 -> ⊥ : &'_ (test1::List<i32>) ; } -About to evaluate statement: (l as test1::List::Cons).1 := move var@2 + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -9024,6 +10348,19 @@ move var@2 [[32mDebug[39m] Value to move: @Box(test1::List::Nil) [[32mDebug[39m] +**About to evaluate statement**: [ + set_discriminant(l, 0); + var@7 := &l; + var@6 := copy var@7; + var@5 := move is_cons<i32>(move var@6); + var@4 := ¬ move var@5; + assert(¬move var@4); + drop(l); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -9038,16 +10375,15 @@ move var@2 var@7 -> ⊥ : &'_ (test1::List<i32>) ; } -About to evaluate statement: set_discriminant(l, 0) -var@7 := &l -var@6 := copy var@7 -var@5 := move is_cons<i32>(move var@6) -var@4 := ¬ move var@5 -assert(¬move var@4) -drop(l) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + set_discriminant(l, 0) +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -9062,9 +10398,21 @@ return var@7 -> ⊥ : &'_ (test1::List<i32>) ; } -About to evaluate statement: set_discriminant(l, 0) + [[32mDebug[39m] +**About to evaluate statement**: [ + var@7 := &l; + var@6 := copy var@7; + var@5 := move is_cons<i32>(move var@6); + var@4 := ¬ move var@5; + assert(¬move var@4); + drop(l); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -9079,15 +10427,15 @@ About to evaluate statement: set_discriminant(l, 0) var@7 -> ⊥ : &'_ (test1::List<i32>) ; } -About to evaluate statement: var@7 := &l -var@6 := copy var@7 -var@5 := move is_cons<i32>(move var@6) -var@4 := ¬ move var@5 -assert(¬move var@4) -drop(l) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + var@7 := &l +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -9102,9 +10450,20 @@ return var@7 -> ⊥ : &'_ (test1::List<i32>) ; } -About to evaluate statement: var@7 := &l + [[32mDebug[39m] +**About to evaluate statement**: [ + var@6 := copy var@7; + var@5 := move is_cons<i32>(move var@6); + var@4 := ¬ move var@5; + assert(¬move var@4); + drop(l); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -9119,14 +10478,15 @@ About to evaluate statement: var@7 := &l var@7 -> ⌊shared@0⌋ ; } -About to evaluate statement: var@6 := copy var@7 -var@5 := move is_cons<i32>(move var@6) -var@4 := ¬ move var@5 -assert(¬move var@4) -drop(l) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + var@6 := copy var@7 +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -9141,10 +10501,11 @@ return var@7 -> ⌊shared@0⌋ ; } -About to evaluate statement: var@6 := copy var@7 + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -9166,6 +10527,16 @@ copy var@7 [[32mDebug[39m] Value to copy: ⌊shared@0⌋ [[32mDebug[39m] +**About to evaluate statement**: [ + var@5 := move is_cons<i32>(move var@6); + var@4 := ¬ move var@5; + assert(¬move var@4); + drop(l); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -9180,13 +10551,15 @@ copy var@7 var@7 -> ⌊shared@0⌋ ; } -About to evaluate statement: var@5 := move is_cons<i32>(move var@6) -var@4 := ¬ move var@5 -assert(¬move var@4) -drop(l) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + var@5 := move is_cons<i32>(move var@6) +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -9201,10 +10574,11 @@ return var@7 -> ⌊shared@0⌋ ; } -About to evaluate statement: var@5 := move is_cons<i32>(move var@6) + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -9226,6 +10600,24 @@ move var@6 [[32mDebug[39m] Value to move: ⌊shared@1⌋ [[32mDebug[39m] +**About to evaluate statement**: [ + var@2 := discriminant(*(l)); + switch (move var@2) { + 0: isize => { + var@0 := true + } + 1: isize => { + var@0 := false + } + _ => { + panic + } + }; + return +] + +**Context**: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -9247,21 +10639,15 @@ move var@6 var@2 -> ⊥ : isize ; } -About to evaluate statement: var@2 := discriminant(*(l)) -switch (move var@2) { - 0: isize => { - var@0 := true - } - 1: isize => { - var@0 := false - } - _ => { - panic - } -} -return + [[32mDebug[39m] +**About to evaluate statement**: [ + var@2 := discriminant(*(l)) +] + +**Context**: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -9283,9 +10669,26 @@ return var@2 -> ⊥ : isize ; } -About to evaluate statement: var@2 := discriminant(*(l)) + [[32mDebug[39m] +**About to evaluate statement**: [ + switch (move var@2) { + 0: isize => { + var@0 := true + } + 1: isize => { + var@0 := false + } + _ => { + panic + } + }; + return +] + +**Context**: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -9307,20 +10710,25 @@ About to evaluate statement: var@2 := discriminant(*(l)) var@2 -> 0: isize ; } -About to evaluate statement: switch (move var@2) { - 0: isize => { - var@0 := true - } - 1: isize => { - var@0 := false - } - _ => { - panic - } -} -return + [[32mDebug[39m] +**About to evaluate statement**: [ + switch (move var@2) { + 0: isize => { + var@0 := true + } + 1: isize => { + var@0 := false + } + _ => { + panic + } + } +] + +**Context**: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -9342,20 +10750,11 @@ return var@2 -> 0: isize ; } -About to evaluate statement: switch (move var@2) { - 0: isize => { - var@0 := true - } - 1: isize => { - var@0 := false - } - _ => { - panic - } -} + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -9384,6 +10783,12 @@ move var@2 [[32mDebug[39m] Value to move: 0: isize [[32mDebug[39m] +**About to evaluate statement**: [ + var@0 := true +] + +**Context**: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -9405,10 +10810,11 @@ move var@2 var@2 -> ⊥ : isize ; } -About to evaluate statement: var@0 := true + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -9435,6 +10841,12 @@ About to evaluate statement: var@0 := true true [[32mDebug[39m] +**About to evaluate statement**: [ + return +] + +**Context**: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -9456,9 +10868,10 @@ true var@2 -> ⊥ : isize ; } -About to evaluate statement: return + [[32mDebug[39m] ctx_pop_frame: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -9484,6 +10897,7 @@ About to evaluate statement: return [[32mDebug[39m] drop_value: place: var@2 [[32mDebug[39m] drop_value: place: l [[32mDebug[39m] ctx_pop_frame: after dropping local variables: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -9507,6 +10921,7 @@ About to evaluate statement: return [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -9535,6 +10950,15 @@ move var@0 [[32mDebug[39m] Value to move: true [[32mDebug[39m] +**About to evaluate statement**: [ + var@4 := ¬ move var@5; + assert(¬move var@4); + drop(l); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -9549,12 +10973,15 @@ true var@7 -> ⌊shared@0⌋ ; } -About to evaluate statement: var@4 := ¬ move var@5 -assert(¬move var@4) -drop(l) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + var@4 := ¬ move var@5 +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -9569,10 +10996,11 @@ return var@7 -> ⌊shared@0⌋ ; } -About to evaluate statement: var@4 := ¬ move var@5 + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -9594,6 +11022,14 @@ move var@5 [[32mDebug[39m] Value to move: true [[32mDebug[39m] +**About to evaluate statement**: [ + assert(¬move var@4); + drop(l); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -9608,11 +11044,15 @@ true var@7 -> ⌊shared@0⌋ ; } -About to evaluate statement: assert(¬move var@4) -drop(l) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + assert(¬move var@4) +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -9627,10 +11067,11 @@ return var@7 -> ⌊shared@0⌋ ; } -About to evaluate statement: assert(¬move var@4) + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -9652,6 +11093,13 @@ move var@4 [[32mDebug[39m] Value to move: false [[32mDebug[39m] +**About to evaluate statement**: [ + drop(l); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -9666,10 +11114,15 @@ false var@7 -> ⌊shared@0⌋ ; } -About to evaluate statement: drop(l) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + drop(l) +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -9684,10 +11137,16 @@ return var@7 -> ⌊shared@0⌋ ; } -About to evaluate statement: drop(l) + [[32mDebug[39m] drop_value: place: l [[32mDebug[39m] +**About to evaluate statement**: [ + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -9702,10 +11161,30 @@ About to evaluate statement: drop(l) var@7 -> ⊥ : &'_ (test1::List<i32>) ; } -About to evaluate statement: return + [[32mDebug[39m] test_unit_function: test_split_list [[32mDebug[39m] +**About to evaluate statement**: [ + set_discriminant(var@3, 1); + var@2 := move alloc::boxed::Box<test1::List<i32>>::new(move var@3); + (l as test1::List::Cons).0 := 0: i32; + (l as test1::List::Cons).1 := move var@2; + set_discriminant(l, 0); + var@7 := move l; + var@6 := move split_list<i32>(move var@7); + hd := copy (var@6).0; + tl := move (var@6).1; + var@10 := copy hd; + var@9 := move var@10 == 0: i32; + var@8 := ¬ move var@9; + assert(¬move var@8); + drop(tl); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -9723,23 +11202,15 @@ About to evaluate statement: return var@10 -> ⊥ : i32 ; } -About to evaluate statement: set_discriminant(var@3, 1) -var@2 := move alloc::boxed::Box<test1::List<i32>>::new(move var@3) -(l as test1::List::Cons).0 := 0: i32 -(l as test1::List::Cons).1 := move var@2 -set_discriminant(l, 0) -var@7 := move l -var@6 := move split_list<i32>(move var@7) -hd := copy (var@6).0 -tl := move (var@6).1 -var@10 := copy hd -var@9 := move var@10 == 0: i32 -var@8 := ¬ move var@9 -assert(¬move var@8) -drop(tl) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + set_discriminant(var@3, 1) +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -9757,9 +11228,28 @@ return var@10 -> ⊥ : i32 ; } -About to evaluate statement: set_discriminant(var@3, 1) + [[32mDebug[39m] +**About to evaluate statement**: [ + var@2 := move alloc::boxed::Box<test1::List<i32>>::new(move var@3); + (l as test1::List::Cons).0 := 0: i32; + (l as test1::List::Cons).1 := move var@2; + set_discriminant(l, 0); + var@7 := move l; + var@6 := move split_list<i32>(move var@7); + hd := copy (var@6).0; + tl := move (var@6).1; + var@10 := copy hd; + var@9 := move var@10 == 0: i32; + var@8 := ¬ move var@9; + assert(¬move var@8); + drop(tl); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -9777,22 +11267,15 @@ About to evaluate statement: set_discriminant(var@3, 1) var@10 -> ⊥ : i32 ; } -About to evaluate statement: var@2 := move alloc::boxed::Box<test1::List<i32>>::new(move var@3) -(l as test1::List::Cons).0 := 0: i32 -(l as test1::List::Cons).1 := move var@2 -set_discriminant(l, 0) -var@7 := move l -var@6 := move split_list<i32>(move var@7) -hd := copy (var@6).0 -tl := move (var@6).1 -var@10 := copy hd -var@9 := move var@10 == 0: i32 -var@8 := ¬ move var@9 -assert(¬move var@8) -drop(tl) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + var@2 := move alloc::boxed::Box<test1::List<i32>>::new(move var@3) +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -9810,7 +11293,7 @@ return var@10 -> ⊥ : i32 ; } -About to evaluate statement: var@2 := move alloc::boxed::Box<test1::List<i32>>::new(move var@3) + [[32mDebug[39m] eval_non_local_function_call: - fid:CfimAst.BoxNew @@ -9819,6 +11302,7 @@ About to evaluate statement: var@2 := move alloc::boxed::Box<test1::List<i32>>:: - dest: var@2 [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -9844,6 +11328,7 @@ move var@3 test1::List::Nil [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -9874,6 +11359,7 @@ move var@1 [[32mDebug[39m] Value to move: test1::List::Nil [[32mDebug[39m] ctx_pop_frame: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -9900,6 +11386,7 @@ test1::List::Nil [[32mDebug[39m] ctx_pop_frame: locals to drop: [1] [[32mDebug[39m] drop_value: place: var@1 [[32mDebug[39m] ctx_pop_frame: after dropping local variables: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -9925,6 +11412,7 @@ test1::List::Nil [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -9955,6 +11443,24 @@ move @return [[32mDebug[39m] Value to move: @Box(test1::List::Nil) [[32mDebug[39m] +**About to evaluate statement**: [ + (l as test1::List::Cons).0 := 0: i32; + (l as test1::List::Cons).1 := move var@2; + set_discriminant(l, 0); + var@7 := move l; + var@6 := move split_list<i32>(move var@7); + hd := copy (var@6).0; + tl := move (var@6).1; + var@10 := copy hd; + var@9 := move var@10 == 0: i32; + var@8 := ¬ move var@9; + assert(¬move var@8); + drop(tl); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -9972,21 +11478,15 @@ move @return var@10 -> ⊥ : i32 ; } -About to evaluate statement: (l as test1::List::Cons).0 := 0: i32 -(l as test1::List::Cons).1 := move var@2 -set_discriminant(l, 0) -var@7 := move l -var@6 := move split_list<i32>(move var@7) -hd := copy (var@6).0 -tl := move (var@6).1 -var@10 := copy hd -var@9 := move var@10 == 0: i32 -var@8 := ¬ move var@9 -assert(¬move var@8) -drop(tl) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + (l as test1::List::Cons).0 := 0: i32 +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -10004,10 +11504,11 @@ return var@10 -> ⊥ : i32 ; } -About to evaluate statement: (l as test1::List::Cons).0 := 0: i32 + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -10033,6 +11534,23 @@ About to evaluate statement: (l as test1::List::Cons).0 := 0: i32 pe: (Expressions.Field ((Expressions.ProjAdt (1, (Some 0))), 0)) ty: (Types.Adt ((Types.AdtId 1), [], [(Types.Integer Types.I32)])) [[32mDebug[39m] +**About to evaluate statement**: [ + (l as test1::List::Cons).1 := move var@2; + set_discriminant(l, 0); + var@7 := move l; + var@6 := move split_list<i32>(move var@7); + hd := copy (var@6).0; + tl := move (var@6).1; + var@10 := copy hd; + var@9 := move var@10 == 0: i32; + var@8 := ¬ move var@9; + assert(¬move var@8); + drop(tl); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -10050,20 +11568,15 @@ ty: (Types.Adt ((Types.AdtId 1), [], [(Types.Integer Types.I32)])) var@10 -> ⊥ : i32 ; } -About to evaluate statement: (l as test1::List::Cons).1 := move var@2 -set_discriminant(l, 0) -var@7 := move l -var@6 := move split_list<i32>(move var@7) -hd := copy (var@6).0 -tl := move (var@6).1 -var@10 := copy hd -var@9 := move var@10 == 0: i32 -var@8 := ¬ move var@9 -assert(¬move var@8) -drop(tl) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + (l as test1::List::Cons).1 := move var@2 +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -10081,10 +11594,11 @@ return var@10 -> ⊥ : i32 ; } -About to evaluate statement: (l as test1::List::Cons).1 := move var@2 + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -10109,6 +11623,22 @@ move var@2 [[32mDebug[39m] Value to move: @Box(test1::List::Nil) [[32mDebug[39m] +**About to evaluate statement**: [ + set_discriminant(l, 0); + var@7 := move l; + var@6 := move split_list<i32>(move var@7); + hd := copy (var@6).0; + tl := move (var@6).1; + var@10 := copy hd; + var@9 := move var@10 == 0: i32; + var@8 := ¬ move var@9; + assert(¬move var@8); + drop(tl); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -10126,19 +11656,15 @@ move var@2 var@10 -> ⊥ : i32 ; } -About to evaluate statement: set_discriminant(l, 0) -var@7 := move l -var@6 := move split_list<i32>(move var@7) -hd := copy (var@6).0 -tl := move (var@6).1 -var@10 := copy hd -var@9 := move var@10 == 0: i32 -var@8 := ¬ move var@9 -assert(¬move var@8) -drop(tl) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + set_discriminant(l, 0) +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -10156,9 +11682,24 @@ return var@10 -> ⊥ : i32 ; } -About to evaluate statement: set_discriminant(l, 0) + [[32mDebug[39m] +**About to evaluate statement**: [ + var@7 := move l; + var@6 := move split_list<i32>(move var@7); + hd := copy (var@6).0; + tl := move (var@6).1; + var@10 := copy hd; + var@9 := move var@10 == 0: i32; + var@8 := ¬ move var@9; + assert(¬move var@8); + drop(tl); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -10176,18 +11717,15 @@ About to evaluate statement: set_discriminant(l, 0) var@10 -> ⊥ : i32 ; } -About to evaluate statement: var@7 := move l -var@6 := move split_list<i32>(move var@7) -hd := copy (var@6).0 -tl := move (var@6).1 -var@10 := copy hd -var@9 := move var@10 == 0: i32 -var@8 := ¬ move var@9 -assert(¬move var@8) -drop(tl) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + var@7 := move l +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -10205,10 +11743,11 @@ return var@10 -> ⊥ : i32 ; } -About to evaluate statement: var@7 := move l + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -10233,6 +11772,20 @@ move l [[32mDebug[39m] Value to move: test1::List::Cons { 0 = 0: i32; 1 = @Box(test1::List::Nil); } [[32mDebug[39m] +**About to evaluate statement**: [ + var@6 := move split_list<i32>(move var@7); + hd := copy (var@6).0; + tl := move (var@6).1; + var@10 := copy hd; + var@9 := move var@10 == 0: i32; + var@8 := ¬ move var@9; + assert(¬move var@8); + drop(tl); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -10250,17 +11803,15 @@ test1::List::Cons { 0 = 0: i32; 1 = @Box(test1::List::Nil); } var@10 -> ⊥ : i32 ; } -About to evaluate statement: var@6 := move split_list<i32>(move var@7) -hd := copy (var@6).0 -tl := move (var@6).1 -var@10 := copy hd -var@9 := move var@10 == 0: i32 -var@8 := ¬ move var@9 -assert(¬move var@8) -drop(tl) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + var@6 := move split_list<i32>(move var@7) +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -10278,10 +11829,11 @@ return var@10 -> ⊥ : i32 ; } -About to evaluate statement: var@6 := move split_list<i32>(move var@7) + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -10306,6 +11858,33 @@ move var@7 [[32mDebug[39m] Value to move: test1::List::Cons { 0 = 0: i32; 1 = @Box(test1::List::Nil); } [[32mDebug[39m] +**About to evaluate statement**: [ + var@8 := false; + var@7 := false; + var@7 := true; + var@8 := true; + var@2 := discriminant(l); + switch (move var@2) { + 0: isize => { + var@8 := false; + hd := move (l as test1::List::Cons).0; + var@7 := false; + tl := move (l as test1::List::Cons).1; + var@5 := move hd; + var@6 := move deref_box(tl); + (var@0).0 := move var@5; + (var@0).1 := move var@6; + var@9 := move alloc::alloc::box_free<test1::List<i32>>(move tl); + return + } + _ => { + panic + } + } +] + +**Context**: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -10338,30 +11917,15 @@ test1::List::Cons { 0 = 0: i32; 1 = @Box(test1::List::Nil); } var@10 -> ⊥ : isize ; } -About to evaluate statement: var@8 := false -var@7 := false -var@7 := true -var@8 := true -var@2 := discriminant(l) -switch (move var@2) { - 0: isize => { - var@8 := false - hd := move (l as test1::List::Cons).0 - var@7 := false - tl := move (l as test1::List::Cons).1 - var@5 := move hd - var@6 := move deref_box(tl) - (var@0).0 := move var@5 - (var@0).1 := move var@6 - var@9 := move alloc::alloc::box_free<test1::List<i32>>(move tl) - return - } - _ => { - panic - } -} + [[32mDebug[39m] +**About to evaluate statement**: [ + var@8 := false +] + +**Context**: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -10394,10 +11958,11 @@ switch (move var@2) { var@10 -> ⊥ : isize ; } -About to evaluate statement: var@8 := false + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -10435,6 +12000,32 @@ About to evaluate statement: var@8 := false false [[32mDebug[39m] +**About to evaluate statement**: [ + var@7 := false; + var@7 := true; + var@8 := true; + var@2 := discriminant(l); + switch (move var@2) { + 0: isize => { + var@8 := false; + hd := move (l as test1::List::Cons).0; + var@7 := false; + tl := move (l as test1::List::Cons).1; + var@5 := move hd; + var@6 := move deref_box(tl); + (var@0).0 := move var@5; + (var@0).1 := move var@6; + var@9 := move alloc::alloc::box_free<test1::List<i32>>(move tl); + return + } + _ => { + panic + } + } +] + +**Context**: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -10467,29 +12058,15 @@ false var@10 -> ⊥ : isize ; } -About to evaluate statement: var@7 := false -var@7 := true -var@8 := true -var@2 := discriminant(l) -switch (move var@2) { - 0: isize => { - var@8 := false - hd := move (l as test1::List::Cons).0 - var@7 := false - tl := move (l as test1::List::Cons).1 - var@5 := move hd - var@6 := move deref_box(tl) - (var@0).0 := move var@5 - (var@0).1 := move var@6 - var@9 := move alloc::alloc::box_free<test1::List<i32>>(move tl) - return - } - _ => { - panic - } -} + [[32mDebug[39m] +**About to evaluate statement**: [ + var@7 := false +] + +**Context**: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -10522,10 +12099,11 @@ switch (move var@2) { var@10 -> ⊥ : isize ; } -About to evaluate statement: var@7 := false + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -10563,6 +12141,31 @@ About to evaluate statement: var@7 := false false [[32mDebug[39m] +**About to evaluate statement**: [ + var@7 := true; + var@8 := true; + var@2 := discriminant(l); + switch (move var@2) { + 0: isize => { + var@8 := false; + hd := move (l as test1::List::Cons).0; + var@7 := false; + tl := move (l as test1::List::Cons).1; + var@5 := move hd; + var@6 := move deref_box(tl); + (var@0).0 := move var@5; + (var@0).1 := move var@6; + var@9 := move alloc::alloc::box_free<test1::List<i32>>(move tl); + return + } + _ => { + panic + } + } +] + +**Context**: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -10595,28 +12198,15 @@ false var@10 -> ⊥ : isize ; } -About to evaluate statement: var@7 := true -var@8 := true -var@2 := discriminant(l) -switch (move var@2) { - 0: isize => { - var@8 := false - hd := move (l as test1::List::Cons).0 - var@7 := false - tl := move (l as test1::List::Cons).1 - var@5 := move hd - var@6 := move deref_box(tl) - (var@0).0 := move var@5 - (var@0).1 := move var@6 - var@9 := move alloc::alloc::box_free<test1::List<i32>>(move tl) - return - } - _ => { - panic - } -} + [[32mDebug[39m] +**About to evaluate statement**: [ + var@7 := true +] + +**Context**: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -10649,10 +12239,11 @@ switch (move var@2) { var@10 -> ⊥ : isize ; } -About to evaluate statement: var@7 := true + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -10690,6 +12281,30 @@ About to evaluate statement: var@7 := true true [[32mDebug[39m] +**About to evaluate statement**: [ + var@8 := true; + var@2 := discriminant(l); + switch (move var@2) { + 0: isize => { + var@8 := false; + hd := move (l as test1::List::Cons).0; + var@7 := false; + tl := move (l as test1::List::Cons).1; + var@5 := move hd; + var@6 := move deref_box(tl); + (var@0).0 := move var@5; + (var@0).1 := move var@6; + var@9 := move alloc::alloc::box_free<test1::List<i32>>(move tl); + return + } + _ => { + panic + } + } +] + +**Context**: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -10722,27 +12337,15 @@ true var@10 -> ⊥ : isize ; } -About to evaluate statement: var@8 := true -var@2 := discriminant(l) -switch (move var@2) { - 0: isize => { - var@8 := false - hd := move (l as test1::List::Cons).0 - var@7 := false - tl := move (l as test1::List::Cons).1 - var@5 := move hd - var@6 := move deref_box(tl) - (var@0).0 := move var@5 - (var@0).1 := move var@6 - var@9 := move alloc::alloc::box_free<test1::List<i32>>(move tl) - return - } - _ => { - panic - } -} + [[32mDebug[39m] +**About to evaluate statement**: [ + var@8 := true +] + +**Context**: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -10775,10 +12378,11 @@ switch (move var@2) { var@10 -> ⊥ : isize ; } -About to evaluate statement: var@8 := true + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -10816,6 +12420,29 @@ About to evaluate statement: var@8 := true true [[32mDebug[39m] +**About to evaluate statement**: [ + var@2 := discriminant(l); + switch (move var@2) { + 0: isize => { + var@8 := false; + hd := move (l as test1::List::Cons).0; + var@7 := false; + tl := move (l as test1::List::Cons).1; + var@5 := move hd; + var@6 := move deref_box(tl); + (var@0).0 := move var@5; + (var@0).1 := move var@6; + var@9 := move alloc::alloc::box_free<test1::List<i32>>(move tl); + return + } + _ => { + panic + } + } +] + +**Context**: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -10848,26 +12475,15 @@ true var@10 -> ⊥ : isize ; } -About to evaluate statement: var@2 := discriminant(l) -switch (move var@2) { - 0: isize => { - var@8 := false - hd := move (l as test1::List::Cons).0 - var@7 := false - tl := move (l as test1::List::Cons).1 - var@5 := move hd - var@6 := move deref_box(tl) - (var@0).0 := move var@5 - (var@0).1 := move var@6 - var@9 := move alloc::alloc::box_free<test1::List<i32>>(move tl) - return - } - _ => { - panic - } -} + [[32mDebug[39m] +**About to evaluate statement**: [ + var@2 := discriminant(l) +] + +**Context**: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -10900,9 +12516,31 @@ switch (move var@2) { var@10 -> ⊥ : isize ; } -About to evaluate statement: var@2 := discriminant(l) + [[32mDebug[39m] +**About to evaluate statement**: [ + switch (move var@2) { + 0: isize => { + var@8 := false; + hd := move (l as test1::List::Cons).0; + var@7 := false; + tl := move (l as test1::List::Cons).1; + var@5 := move hd; + var@6 := move deref_box(tl); + (var@0).0 := move var@5; + (var@0).1 := move var@6; + var@9 := move alloc::alloc::box_free<test1::List<i32>>(move tl); + return + } + _ => { + panic + } + } +] + +**Context**: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -10935,26 +12573,11 @@ About to evaluate statement: var@2 := discriminant(l) var@10 -> ⊥ : isize ; } -About to evaluate statement: switch (move var@2) { - 0: isize => { - var@8 := false - hd := move (l as test1::List::Cons).0 - var@7 := false - tl := move (l as test1::List::Cons).1 - var@5 := move hd - var@6 := move deref_box(tl) - (var@0).0 := move var@5 - (var@0).1 := move var@6 - var@9 := move alloc::alloc::box_free<test1::List<i32>>(move tl) - return - } - _ => { - panic - } -} + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -10994,6 +12617,21 @@ move var@2 [[32mDebug[39m] Value to move: 0: isize [[32mDebug[39m] +**About to evaluate statement**: [ + var@8 := false; + hd := move (l as test1::List::Cons).0; + var@7 := false; + tl := move (l as test1::List::Cons).1; + var@5 := move hd; + var@6 := move deref_box(tl); + (var@0).0 := move var@5; + (var@0).1 := move var@6; + var@9 := move alloc::alloc::box_free<test1::List<i32>>(move tl); + return +] + +**Context**: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -11026,18 +12664,15 @@ move var@2 var@10 -> ⊥ : isize ; } -About to evaluate statement: var@8 := false -hd := move (l as test1::List::Cons).0 -var@7 := false -tl := move (l as test1::List::Cons).1 -var@5 := move hd -var@6 := move deref_box(tl) -(var@0).0 := move var@5 -(var@0).1 := move var@6 -var@9 := move alloc::alloc::box_free<test1::List<i32>>(move tl) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + var@8 := false +] + +**Context**: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -11070,10 +12705,11 @@ return var@10 -> ⊥ : isize ; } -About to evaluate statement: var@8 := false + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -11111,6 +12747,20 @@ About to evaluate statement: var@8 := false false [[32mDebug[39m] +**About to evaluate statement**: [ + hd := move (l as test1::List::Cons).0; + var@7 := false; + tl := move (l as test1::List::Cons).1; + var@5 := move hd; + var@6 := move deref_box(tl); + (var@0).0 := move var@5; + (var@0).1 := move var@6; + var@9 := move alloc::alloc::box_free<test1::List<i32>>(move tl); + return +] + +**Context**: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -11143,17 +12793,15 @@ false var@10 -> ⊥ : isize ; } -About to evaluate statement: hd := move (l as test1::List::Cons).0 -var@7 := false -tl := move (l as test1::List::Cons).1 -var@5 := move hd -var@6 := move deref_box(tl) -(var@0).0 := move var@5 -(var@0).1 := move var@6 -var@9 := move alloc::alloc::box_free<test1::List<i32>>(move tl) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + hd := move (l as test1::List::Cons).0 +] + +**Context**: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -11186,10 +12834,11 @@ return var@10 -> ⊥ : isize ; } -About to evaluate statement: hd := move (l as test1::List::Cons).0 + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -11229,6 +12878,19 @@ move (l as test1::List::Cons).0 [[32mDebug[39m] Value to move: 0: i32 [[32mDebug[39m] +**About to evaluate statement**: [ + var@7 := false; + tl := move (l as test1::List::Cons).1; + var@5 := move hd; + var@6 := move deref_box(tl); + (var@0).0 := move var@5; + (var@0).1 := move var@6; + var@9 := move alloc::alloc::box_free<test1::List<i32>>(move tl); + return +] + +**Context**: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -11261,16 +12923,15 @@ move (l as test1::List::Cons).0 var@10 -> ⊥ : isize ; } -About to evaluate statement: var@7 := false -tl := move (l as test1::List::Cons).1 -var@5 := move hd -var@6 := move deref_box(tl) -(var@0).0 := move var@5 -(var@0).1 := move var@6 -var@9 := move alloc::alloc::box_free<test1::List<i32>>(move tl) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + var@7 := false +] + +**Context**: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -11303,10 +12964,11 @@ return var@10 -> ⊥ : isize ; } -About to evaluate statement: var@7 := false + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -11344,6 +13006,18 @@ About to evaluate statement: var@7 := false false [[32mDebug[39m] +**About to evaluate statement**: [ + tl := move (l as test1::List::Cons).1; + var@5 := move hd; + var@6 := move deref_box(tl); + (var@0).0 := move var@5; + (var@0).1 := move var@6; + var@9 := move alloc::alloc::box_free<test1::List<i32>>(move tl); + return +] + +**Context**: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -11376,15 +13050,15 @@ false var@10 -> ⊥ : isize ; } -About to evaluate statement: tl := move (l as test1::List::Cons).1 -var@5 := move hd -var@6 := move deref_box(tl) -(var@0).0 := move var@5 -(var@0).1 := move var@6 -var@9 := move alloc::alloc::box_free<test1::List<i32>>(move tl) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + tl := move (l as test1::List::Cons).1 +] + +**Context**: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -11417,10 +13091,11 @@ return var@10 -> ⊥ : isize ; } -About to evaluate statement: tl := move (l as test1::List::Cons).1 + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -11460,6 +13135,17 @@ move (l as test1::List::Cons).1 [[32mDebug[39m] Value to move: @Box(test1::List::Nil) [[32mDebug[39m] +**About to evaluate statement**: [ + var@5 := move hd; + var@6 := move deref_box(tl); + (var@0).0 := move var@5; + (var@0).1 := move var@6; + var@9 := move alloc::alloc::box_free<test1::List<i32>>(move tl); + return +] + +**Context**: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -11492,14 +13178,15 @@ move (l as test1::List::Cons).1 var@10 -> ⊥ : isize ; } -About to evaluate statement: var@5 := move hd -var@6 := move deref_box(tl) -(var@0).0 := move var@5 -(var@0).1 := move var@6 -var@9 := move alloc::alloc::box_free<test1::List<i32>>(move tl) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + var@5 := move hd +] + +**Context**: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -11532,10 +13219,11 @@ return var@10 -> ⊥ : isize ; } -About to evaluate statement: var@5 := move hd + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -11575,6 +13263,16 @@ move hd [[32mDebug[39m] Value to move: 0: i32 [[32mDebug[39m] +**About to evaluate statement**: [ + var@6 := move deref_box(tl); + (var@0).0 := move var@5; + (var@0).1 := move var@6; + var@9 := move alloc::alloc::box_free<test1::List<i32>>(move tl); + return +] + +**Context**: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -11607,13 +13305,15 @@ move hd var@10 -> ⊥ : isize ; } -About to evaluate statement: var@6 := move deref_box(tl) -(var@0).0 := move var@5 -(var@0).1 := move var@6 -var@9 := move alloc::alloc::box_free<test1::List<i32>>(move tl) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + var@6 := move deref_box(tl) +] + +**Context**: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -11646,10 +13346,11 @@ return var@10 -> ⊥ : isize ; } -About to evaluate statement: var@6 := move deref_box(tl) + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -11689,6 +13390,15 @@ move deref_box(tl) [[32mDebug[39m] Value to move: test1::List::Nil [[32mDebug[39m] +**About to evaluate statement**: [ + (var@0).0 := move var@5; + (var@0).1 := move var@6; + var@9 := move alloc::alloc::box_free<test1::List<i32>>(move tl); + return +] + +**Context**: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -11721,12 +13431,15 @@ test1::List::Nil var@10 -> ⊥ : isize ; } -About to evaluate statement: (var@0).0 := move var@5 -(var@0).1 := move var@6 -var@9 := move alloc::alloc::box_free<test1::List<i32>>(move tl) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + (var@0).0 := move var@5 +] + +**Context**: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -11759,10 +13472,11 @@ return var@10 -> ⊥ : isize ; } -About to evaluate statement: (var@0).0 := move var@5 + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -11808,6 +13522,14 @@ ty: (Types.Adt (Types.Tuple, [], (Types.Adt ((Types.AdtId 1), [], [(Types.Integer Types.I32)]))] )) [[32mDebug[39m] +**About to evaluate statement**: [ + (var@0).1 := move var@6; + var@9 := move alloc::alloc::box_free<test1::List<i32>>(move tl); + return +] + +**Context**: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -11840,11 +13562,15 @@ ty: (Types.Adt (Types.Tuple, [], var@10 -> ⊥ : isize ; } -About to evaluate statement: (var@0).1 := move var@6 -var@9 := move alloc::alloc::box_free<test1::List<i32>>(move tl) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + (var@0).1 := move var@6 +] + +**Context**: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -11877,10 +13603,11 @@ return var@10 -> ⊥ : isize ; } -About to evaluate statement: (var@0).1 := move var@6 + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -11920,6 +13647,13 @@ move var@6 [[32mDebug[39m] Value to move: test1::List::Nil [[32mDebug[39m] +**About to evaluate statement**: [ + var@9 := move alloc::alloc::box_free<test1::List<i32>>(move tl); + return +] + +**Context**: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -11952,10 +13686,15 @@ test1::List::Nil var@10 -> ⊥ : isize ; } -About to evaluate statement: var@9 := move alloc::alloc::box_free<test1::List<i32>>(move tl) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + var@9 := move alloc::alloc::box_free<test1::List<i32>>(move tl) +] + +**Context**: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -11988,7 +13727,7 @@ return var@10 -> ⊥ : isize ; } -About to evaluate statement: var@9 := move alloc::alloc::box_free<test1::List<i32>>(move tl) + [[32mDebug[39m] eval_non_local_function_call: - fid:CfimAst.BoxFree @@ -11997,6 +13736,12 @@ About to evaluate statement: var@9 := move alloc::alloc::box_free<test1::List<i3 - dest: var@9 [[32mDebug[39m] drop_value: place: tl [[32mDebug[39m] +**About to evaluate statement**: [ + return +] + +**Context**: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -12029,9 +13774,10 @@ About to evaluate statement: var@9 := move alloc::alloc::box_free<test1::List<i3 var@10 -> ⊥ : isize ; } -About to evaluate statement: return + [[32mDebug[39m] ctx_pop_frame: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -12076,6 +13822,7 @@ About to evaluate statement: return [[32mDebug[39m] drop_value: place: var@2 [[32mDebug[39m] drop_value: place: l [[32mDebug[39m] ctx_pop_frame: after dropping local variables: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -12110,6 +13857,7 @@ About to evaluate statement: return [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -12149,6 +13897,19 @@ move var@0 [[32mDebug[39m] Value to move: (0: i32, test1::List::Nil) [[32mDebug[39m] +**About to evaluate statement**: [ + hd := copy (var@6).0; + tl := move (var@6).1; + var@10 := copy hd; + var@9 := move var@10 == 0: i32; + var@8 := ¬ move var@9; + assert(¬move var@8); + drop(tl); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -12166,16 +13927,15 @@ move var@0 var@10 -> ⊥ : i32 ; } -About to evaluate statement: hd := copy (var@6).0 -tl := move (var@6).1 -var@10 := copy hd -var@9 := move var@10 == 0: i32 -var@8 := ¬ move var@9 -assert(¬move var@8) -drop(tl) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + hd := copy (var@6).0 +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -12193,10 +13953,11 @@ return var@10 -> ⊥ : i32 ; } -About to evaluate statement: hd := copy (var@6).0 + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -12221,6 +13982,18 @@ copy (var@6).0 [[32mDebug[39m] Value to copy: 0: i32 [[32mDebug[39m] +**About to evaluate statement**: [ + tl := move (var@6).1; + var@10 := copy hd; + var@9 := move var@10 == 0: i32; + var@8 := ¬ move var@9; + assert(¬move var@8); + drop(tl); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -12238,15 +14011,15 @@ copy (var@6).0 var@10 -> ⊥ : i32 ; } -About to evaluate statement: tl := move (var@6).1 -var@10 := copy hd -var@9 := move var@10 == 0: i32 -var@8 := ¬ move var@9 -assert(¬move var@8) -drop(tl) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + tl := move (var@6).1 +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -12264,10 +14037,11 @@ return var@10 -> ⊥ : i32 ; } -About to evaluate statement: tl := move (var@6).1 + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -12292,6 +14066,17 @@ move (var@6).1 [[32mDebug[39m] Value to move: test1::List::Nil [[32mDebug[39m] +**About to evaluate statement**: [ + var@10 := copy hd; + var@9 := move var@10 == 0: i32; + var@8 := ¬ move var@9; + assert(¬move var@8); + drop(tl); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -12309,14 +14094,15 @@ test1::List::Nil var@10 -> ⊥ : i32 ; } -About to evaluate statement: var@10 := copy hd -var@9 := move var@10 == 0: i32 -var@8 := ¬ move var@9 -assert(¬move var@8) -drop(tl) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + var@10 := copy hd +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -12334,10 +14120,11 @@ return var@10 -> ⊥ : i32 ; } -About to evaluate statement: var@10 := copy hd + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -12362,6 +14149,16 @@ copy hd [[32mDebug[39m] Value to copy: 0: i32 [[32mDebug[39m] +**About to evaluate statement**: [ + var@9 := move var@10 == 0: i32; + var@8 := ¬ move var@9; + assert(¬move var@8); + drop(tl); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -12379,13 +14176,15 @@ copy hd var@10 -> 0: i32 ; } -About to evaluate statement: var@9 := move var@10 == 0: i32 -var@8 := ¬ move var@9 -assert(¬move var@8) -drop(tl) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + var@9 := move var@10 == 0: i32 +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -12403,10 +14202,11 @@ return var@10 -> 0: i32 ; } -About to evaluate statement: var@9 := move var@10 == 0: i32 + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -12432,6 +14232,7 @@ move var@10 0: i32 [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -12454,6 +14255,15 @@ move var@10 0: i32 [[32mDebug[39m] +**About to evaluate statement**: [ + var@8 := ¬ move var@9; + assert(¬move var@8); + drop(tl); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -12471,12 +14281,15 @@ move var@10 var@10 -> ⊥ : i32 ; } -About to evaluate statement: var@8 := ¬ move var@9 -assert(¬move var@8) -drop(tl) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + var@8 := ¬ move var@9 +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -12494,10 +14307,11 @@ return var@10 -> ⊥ : i32 ; } -About to evaluate statement: var@8 := ¬ move var@9 + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -12522,6 +14336,14 @@ move var@9 [[32mDebug[39m] Value to move: true [[32mDebug[39m] +**About to evaluate statement**: [ + assert(¬move var@8); + drop(tl); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -12539,11 +14361,15 @@ true var@10 -> ⊥ : i32 ; } -About to evaluate statement: assert(¬move var@8) -drop(tl) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + assert(¬move var@8) +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -12561,10 +14387,11 @@ return var@10 -> ⊥ : i32 ; } -About to evaluate statement: assert(¬move var@8) + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -12589,6 +14416,13 @@ move var@8 [[32mDebug[39m] Value to move: false [[32mDebug[39m] +**About to evaluate statement**: [ + drop(tl); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -12606,10 +14440,15 @@ false var@10 -> ⊥ : i32 ; } -About to evaluate statement: drop(tl) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + drop(tl) +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -12627,10 +14466,16 @@ return var@10 -> ⊥ : i32 ; } -About to evaluate statement: drop(tl) + [[32mDebug[39m] drop_value: place: tl [[32mDebug[39m] +**About to evaluate statement**: [ + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -12648,10 +14493,37 @@ About to evaluate statement: drop(tl) var@10 -> ⊥ : i32 ; } -About to evaluate statement: return + [[32mDebug[39m] test_unit_function: get_elem_test [[32mDebug[39m] +**About to evaluate statement**: [ + x := 0: i32; + y := 0: i32; + var@5 := &mut x; + var@4 := &two-phase *(var@5); + var@7 := &mut y; + var@6 := &two-phase *(var@7); + z := move get_elem<i32>(true, move var@4, move var@6); + var@8 := copy *(z); + *(z) := copy var@8 + 1: i32; + var@12 := copy *(z); + var@11 := move var@12 == 1: i32; + var@10 := ¬ move var@11; + assert(¬move var@10); + var@15 := copy x; + var@14 := move var@15 == 1: i32; + var@13 := ¬ move var@14; + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 0: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -12677,30 +14549,15 @@ About to evaluate statement: return var@18 -> ⊥ : i32 ; } -About to evaluate statement: x := 0: i32 -y := 0: i32 -var@5 := &mut x -var@4 := &two-phase *(var@5) -var@7 := &mut y -var@6 := &two-phase *(var@7) -z := move get_elem<i32>(true, move var@4, move var@6) -var@8 := copy *(z) -*(z) := copy var@8 + 1: i32 -var@12 := copy *(z) -var@11 := move var@12 == 1: i32 -var@10 := ¬ move var@11 -assert(¬move var@10) -var@15 := copy x -var@14 := move var@15 == 1: i32 -var@13 := ¬ move var@14 -assert(¬move var@13) -var@18 := copy y -var@17 := move var@18 == 0: i32 -var@16 := ¬ move var@17 -assert(¬move var@16) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + x := 0: i32 +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -12726,10 +14583,11 @@ return var@18 -> ⊥ : i32 ; } -About to evaluate statement: x := 0: i32 + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -12760,6 +14618,32 @@ About to evaluate statement: x := 0: i32 0: i32 [[32mDebug[39m] +**About to evaluate statement**: [ + y := 0: i32; + var@5 := &mut x; + var@4 := &two-phase *(var@5); + var@7 := &mut y; + var@6 := &two-phase *(var@7); + z := move get_elem<i32>(true, move var@4, move var@6); + var@8 := copy *(z); + *(z) := copy var@8 + 1: i32; + var@12 := copy *(z); + var@11 := move var@12 == 1: i32; + var@10 := ¬ move var@11; + assert(¬move var@10); + var@15 := copy x; + var@14 := move var@15 == 1: i32; + var@13 := ¬ move var@14; + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 0: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -12785,29 +14669,15 @@ About to evaluate statement: x := 0: i32 var@18 -> ⊥ : i32 ; } -About to evaluate statement: y := 0: i32 -var@5 := &mut x -var@4 := &two-phase *(var@5) -var@7 := &mut y -var@6 := &two-phase *(var@7) -z := move get_elem<i32>(true, move var@4, move var@6) -var@8 := copy *(z) -*(z) := copy var@8 + 1: i32 -var@12 := copy *(z) -var@11 := move var@12 == 1: i32 -var@10 := ¬ move var@11 -assert(¬move var@10) -var@15 := copy x -var@14 := move var@15 == 1: i32 -var@13 := ¬ move var@14 -assert(¬move var@13) -var@18 := copy y -var@17 := move var@18 == 0: i32 -var@16 := ¬ move var@17 -assert(¬move var@16) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + y := 0: i32 +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -12833,10 +14703,11 @@ return var@18 -> ⊥ : i32 ; } -About to evaluate statement: y := 0: i32 + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -12867,6 +14738,31 @@ About to evaluate statement: y := 0: i32 0: i32 [[32mDebug[39m] +**About to evaluate statement**: [ + var@5 := &mut x; + var@4 := &two-phase *(var@5); + var@7 := &mut y; + var@6 := &two-phase *(var@7); + z := move get_elem<i32>(true, move var@4, move var@6); + var@8 := copy *(z); + *(z) := copy var@8 + 1: i32; + var@12 := copy *(z); + var@11 := move var@12 == 1: i32; + var@10 := ¬ move var@11; + assert(¬move var@10); + var@15 := copy x; + var@14 := move var@15 == 1: i32; + var@13 := ¬ move var@14; + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 0: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -12892,28 +14788,15 @@ About to evaluate statement: y := 0: i32 var@18 -> ⊥ : i32 ; } -About to evaluate statement: var@5 := &mut x -var@4 := &two-phase *(var@5) -var@7 := &mut y -var@6 := &two-phase *(var@7) -z := move get_elem<i32>(true, move var@4, move var@6) -var@8 := copy *(z) -*(z) := copy var@8 + 1: i32 -var@12 := copy *(z) -var@11 := move var@12 == 1: i32 -var@10 := ¬ move var@11 -assert(¬move var@10) -var@15 := copy x -var@14 := move var@15 == 1: i32 -var@13 := ¬ move var@14 -assert(¬move var@13) -var@18 := copy y -var@17 := move var@18 == 0: i32 -var@16 := ¬ move var@17 -assert(¬move var@16) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + var@5 := &mut x +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -12939,9 +14822,33 @@ return var@18 -> ⊥ : i32 ; } -About to evaluate statement: var@5 := &mut x + [[32mDebug[39m] +**About to evaluate statement**: [ + var@4 := &two-phase *(var@5); + var@7 := &mut y; + var@6 := &two-phase *(var@7); + z := move get_elem<i32>(true, move var@4, move var@6); + var@8 := copy *(z); + *(z) := copy var@8 + 1: i32; + var@12 := copy *(z); + var@11 := move var@12 == 1: i32; + var@10 := ¬ move var@11; + assert(¬move var@10); + var@15 := copy x; + var@14 := move var@15 == 1: i32; + var@13 := ¬ move var@14; + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 0: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -12967,27 +14874,15 @@ About to evaluate statement: var@5 := &mut x var@18 -> ⊥ : i32 ; } -About to evaluate statement: var@4 := &two-phase *(var@5) -var@7 := &mut y -var@6 := &two-phase *(var@7) -z := move get_elem<i32>(true, move var@4, move var@6) -var@8 := copy *(z) -*(z) := copy var@8 + 1: i32 -var@12 := copy *(z) -var@11 := move var@12 == 1: i32 -var@10 := ¬ move var@11 -assert(¬move var@10) -var@15 := copy x -var@14 := move var@15 == 1: i32 -var@13 := ¬ move var@14 -assert(¬move var@13) -var@18 := copy y -var@17 := move var@18 == 0: i32 -var@16 := ¬ move var@17 -assert(¬move var@16) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + var@4 := &two-phase *(var@5) +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -13013,9 +14908,32 @@ return var@18 -> ⊥ : i32 ; } -About to evaluate statement: var@4 := &two-phase *(var@5) + [[32mDebug[39m] +**About to evaluate statement**: [ + var@7 := &mut y; + var@6 := &two-phase *(var@7); + z := move get_elem<i32>(true, move var@4, move var@6); + var@8 := copy *(z); + *(z) := copy var@8 + 1: i32; + var@12 := copy *(z); + var@11 := move var@12 == 1: i32; + var@10 := ¬ move var@11; + assert(¬move var@10); + var@15 := copy x; + var@14 := move var@15 == 1: i32; + var@13 := ¬ move var@14; + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 0: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -13041,26 +14959,15 @@ About to evaluate statement: var@4 := &two-phase *(var@5) var@18 -> ⊥ : i32 ; } -About to evaluate statement: var@7 := &mut y -var@6 := &two-phase *(var@7) -z := move get_elem<i32>(true, move var@4, move var@6) -var@8 := copy *(z) -*(z) := copy var@8 + 1: i32 -var@12 := copy *(z) -var@11 := move var@12 == 1: i32 -var@10 := ¬ move var@11 -assert(¬move var@10) -var@15 := copy x -var@14 := move var@15 == 1: i32 -var@13 := ¬ move var@14 -assert(¬move var@13) -var@18 := copy y -var@17 := move var@18 == 0: i32 -var@16 := ¬ move var@17 -assert(¬move var@16) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + var@7 := &mut y +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -13086,9 +14993,31 @@ return var@18 -> ⊥ : i32 ; } -About to evaluate statement: var@7 := &mut y + [[32mDebug[39m] +**About to evaluate statement**: [ + var@6 := &two-phase *(var@7); + z := move get_elem<i32>(true, move var@4, move var@6); + var@8 := copy *(z); + *(z) := copy var@8 + 1: i32; + var@12 := copy *(z); + var@11 := move var@12 == 1: i32; + var@10 := ¬ move var@11; + assert(¬move var@10); + var@15 := copy x; + var@14 := move var@15 == 1: i32; + var@13 := ¬ move var@14; + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 0: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -13114,25 +15043,15 @@ About to evaluate statement: var@7 := &mut y var@18 -> ⊥ : i32 ; } -About to evaluate statement: var@6 := &two-phase *(var@7) -z := move get_elem<i32>(true, move var@4, move var@6) -var@8 := copy *(z) -*(z) := copy var@8 + 1: i32 -var@12 := copy *(z) -var@11 := move var@12 == 1: i32 -var@10 := ¬ move var@11 -assert(¬move var@10) -var@15 := copy x -var@14 := move var@15 == 1: i32 -var@13 := ¬ move var@14 -assert(¬move var@13) -var@18 := copy y -var@17 := move var@18 == 0: i32 -var@16 := ¬ move var@17 -assert(¬move var@16) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + var@6 := &two-phase *(var@7) +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -13158,9 +15077,30 @@ return var@18 -> ⊥ : i32 ; } -About to evaluate statement: var@6 := &two-phase *(var@7) + [[32mDebug[39m] +**About to evaluate statement**: [ + z := move get_elem<i32>(true, move var@4, move var@6); + var@8 := copy *(z); + *(z) := copy var@8 + 1: i32; + var@12 := copy *(z); + var@11 := move var@12 == 1: i32; + var@10 := ¬ move var@11; + assert(¬move var@10); + var@15 := copy x; + var@14 := move var@15 == 1: i32; + var@13 := ¬ move var@14; + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 0: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -13186,24 +15126,15 @@ About to evaluate statement: var@6 := &two-phase *(var@7) var@18 -> ⊥ : i32 ; } -About to evaluate statement: z := move get_elem<i32>(true, move var@4, move var@6) -var@8 := copy *(z) -*(z) := copy var@8 + 1: i32 -var@12 := copy *(z) -var@11 := move var@12 == 1: i32 -var@10 := ¬ move var@11 -assert(¬move var@10) -var@15 := copy x -var@14 := move var@15 == 1: i32 -var@13 := ¬ move var@14 -assert(¬move var@13) -var@18 := copy y -var@17 := move var@18 == 0: i32 -var@16 := ¬ move var@17 -assert(¬move var@16) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + z := move get_elem<i32>(true, move var@4, move var@6) +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -13229,10 +15160,11 @@ return var@18 -> ⊥ : i32 ; } -About to evaluate statement: z := move get_elem<i32>(true, move var@4, move var@6) + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -13264,6 +15196,7 @@ true [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -13301,6 +15234,7 @@ move var@4 &mut@1 (0: i32) [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -13337,6 +15271,19 @@ move var@6 [[32mDebug[39m] Value to move: &mut@3 (0: i32) [[32mDebug[39m] +**About to evaluate statement**: [ + var@4 := copy b; + if (move var@4) { + var@0 := &mut *(x) + } + else { + var@0 := move y + }; + return +] + +**Context**: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -13371,16 +15318,15 @@ move var@6 var@4 -> ⊥ : bool ; } -About to evaluate statement: var@4 := copy b -if (move var@4) { - var@0 := &mut *(x) -} -else { - var@0 := move y -} -return + [[32mDebug[39m] +**About to evaluate statement**: [ + var@4 := copy b +] + +**Context**: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -13415,10 +15361,11 @@ return var@4 -> ⊥ : bool ; } -About to evaluate statement: var@4 := copy b + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -13460,6 +15407,18 @@ copy b [[32mDebug[39m] Value to copy: true [[32mDebug[39m] +**About to evaluate statement**: [ + if (move var@4) { + var@0 := &mut *(x) + } + else { + var@0 := move y + }; + return +] + +**Context**: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -13494,15 +15453,20 @@ true var@4 -> true ; } -About to evaluate statement: if (move var@4) { - var@0 := &mut *(x) -} -else { - var@0 := move y -} -return + [[32mDebug[39m] +**About to evaluate statement**: [ + if (move var@4) { + var@0 := &mut *(x) + } + else { + var@0 := move y + } +] + +**Context**: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -13537,15 +15501,11 @@ return var@4 -> true ; } -About to evaluate statement: if (move var@4) { - var@0 := &mut *(x) -} -else { - var@0 := move y -} + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -13587,6 +15547,12 @@ move var@4 [[32mDebug[39m] Value to move: true [[32mDebug[39m] +**About to evaluate statement**: [ + var@0 := &mut *(x) +] + +**Context**: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -13621,9 +15587,15 @@ true var@4 -> ⊥ : bool ; } -About to evaluate statement: var@0 := &mut *(x) + [[32mDebug[39m] +**About to evaluate statement**: [ + return +] + +**Context**: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -13658,9 +15630,10 @@ About to evaluate statement: var@0 := &mut *(x) var@4 -> ⊥ : bool ; } -About to evaluate statement: return + [[32mDebug[39m] ctx_pop_frame: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -13701,6 +15674,7 @@ About to evaluate statement: return [[32mDebug[39m] drop_value: place: x [[32mDebug[39m] drop_value: place: b [[32mDebug[39m] ctx_pop_frame: after dropping local variables: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -13737,6 +15711,7 @@ About to evaluate statement: return [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -13778,6 +15753,26 @@ move var@0 [[32mDebug[39m] Value to move: &mut@4 (0: i32) [[32mDebug[39m] +**About to evaluate statement**: [ + var@8 := copy *(z); + *(z) := copy var@8 + 1: i32; + var@12 := copy *(z); + var@11 := move var@12 == 1: i32; + var@10 := ¬ move var@11; + assert(¬move var@10); + var@15 := copy x; + var@14 := move var@15 == 1: i32; + var@13 := ¬ move var@14; + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 0: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -13803,23 +15798,15 @@ move var@0 var@18 -> ⊥ : i32 ; } -About to evaluate statement: var@8 := copy *(z) -*(z) := copy var@8 + 1: i32 -var@12 := copy *(z) -var@11 := move var@12 == 1: i32 -var@10 := ¬ move var@11 -assert(¬move var@10) -var@15 := copy x -var@14 := move var@15 == 1: i32 -var@13 := ¬ move var@14 -assert(¬move var@13) -var@18 := copy y -var@17 := move var@18 == 0: i32 -var@16 := ¬ move var@17 -assert(¬move var@16) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + var@8 := copy *(z) +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -13845,10 +15832,11 @@ return var@18 -> ⊥ : i32 ; } -About to evaluate statement: var@8 := copy *(z) + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -13881,6 +15869,25 @@ copy *(z) [[32mDebug[39m] Value to copy: 0: i32 [[32mDebug[39m] +**About to evaluate statement**: [ + *(z) := copy var@8 + 1: i32; + var@12 := copy *(z); + var@11 := move var@12 == 1: i32; + var@10 := ¬ move var@11; + assert(¬move var@10); + var@15 := copy x; + var@14 := move var@15 == 1: i32; + var@13 := ¬ move var@14; + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 0: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -13906,22 +15913,15 @@ copy *(z) var@18 -> ⊥ : i32 ; } -About to evaluate statement: *(z) := copy var@8 + 1: i32 -var@12 := copy *(z) -var@11 := move var@12 == 1: i32 -var@10 := ¬ move var@11 -assert(¬move var@10) -var@15 := copy x -var@14 := move var@15 == 1: i32 -var@13 := ¬ move var@14 -assert(¬move var@13) -var@18 := copy y -var@17 := move var@18 == 0: i32 -var@16 := ¬ move var@17 -assert(¬move var@16) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + *(z) := copy var@8 + 1: i32 +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -13947,10 +15947,11 @@ return var@18 -> ⊥ : i32 ; } -About to evaluate statement: *(z) := copy var@8 + 1: i32 + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -13984,6 +15985,7 @@ copy var@8 0: i32 [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -14014,6 +16016,24 @@ copy var@8 1: i32 [[32mDebug[39m] +**About to evaluate statement**: [ + var@12 := copy *(z); + var@11 := move var@12 == 1: i32; + var@10 := ¬ move var@11; + assert(¬move var@10); + var@15 := copy x; + var@14 := move var@15 == 1: i32; + var@13 := ¬ move var@14; + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 0: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -14039,21 +16059,15 @@ copy var@8 var@18 -> ⊥ : i32 ; } -About to evaluate statement: var@12 := copy *(z) -var@11 := move var@12 == 1: i32 -var@10 := ¬ move var@11 -assert(¬move var@10) -var@15 := copy x -var@14 := move var@15 == 1: i32 -var@13 := ¬ move var@14 -assert(¬move var@13) -var@18 := copy y -var@17 := move var@18 == 0: i32 -var@16 := ¬ move var@17 -assert(¬move var@16) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + var@12 := copy *(z) +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -14079,10 +16093,11 @@ return var@18 -> ⊥ : i32 ; } -About to evaluate statement: var@12 := copy *(z) + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -14115,6 +16130,23 @@ copy *(z) [[32mDebug[39m] Value to copy: 1: i32 [[32mDebug[39m] +**About to evaluate statement**: [ + var@11 := move var@12 == 1: i32; + var@10 := ¬ move var@11; + assert(¬move var@10); + var@15 := copy x; + var@14 := move var@15 == 1: i32; + var@13 := ¬ move var@14; + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 0: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -14140,20 +16172,15 @@ copy *(z) var@18 -> ⊥ : i32 ; } -About to evaluate statement: var@11 := move var@12 == 1: i32 -var@10 := ¬ move var@11 -assert(¬move var@10) -var@15 := copy x -var@14 := move var@15 == 1: i32 -var@13 := ¬ move var@14 -assert(¬move var@13) -var@18 := copy y -var@17 := move var@18 == 0: i32 -var@16 := ¬ move var@17 -assert(¬move var@16) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + var@11 := move var@12 == 1: i32 +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -14179,10 +16206,11 @@ return var@18 -> ⊥ : i32 ; } -About to evaluate statement: var@11 := move var@12 == 1: i32 + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -14216,6 +16244,7 @@ move var@12 1: i32 [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -14246,6 +16275,22 @@ move var@12 1: i32 [[32mDebug[39m] +**About to evaluate statement**: [ + var@10 := ¬ move var@11; + assert(¬move var@10); + var@15 := copy x; + var@14 := move var@15 == 1: i32; + var@13 := ¬ move var@14; + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 0: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -14271,19 +16316,15 @@ move var@12 var@18 -> ⊥ : i32 ; } -About to evaluate statement: var@10 := ¬ move var@11 -assert(¬move var@10) -var@15 := copy x -var@14 := move var@15 == 1: i32 -var@13 := ¬ move var@14 -assert(¬move var@13) -var@18 := copy y -var@17 := move var@18 == 0: i32 -var@16 := ¬ move var@17 -assert(¬move var@16) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + var@10 := ¬ move var@11 +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -14309,10 +16350,11 @@ return var@18 -> ⊥ : i32 ; } -About to evaluate statement: var@10 := ¬ move var@11 + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -14345,6 +16387,21 @@ move var@11 [[32mDebug[39m] Value to move: true [[32mDebug[39m] +**About to evaluate statement**: [ + assert(¬move var@10); + var@15 := copy x; + var@14 := move var@15 == 1: i32; + var@13 := ¬ move var@14; + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 0: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -14370,18 +16427,15 @@ true var@18 -> ⊥ : i32 ; } -About to evaluate statement: assert(¬move var@10) -var@15 := copy x -var@14 := move var@15 == 1: i32 -var@13 := ¬ move var@14 -assert(¬move var@13) -var@18 := copy y -var@17 := move var@18 == 0: i32 -var@16 := ¬ move var@17 -assert(¬move var@16) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + assert(¬move var@10) +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -14407,10 +16461,11 @@ return var@18 -> ⊥ : i32 ; } -About to evaluate statement: assert(¬move var@10) + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -14443,6 +16498,20 @@ move var@10 [[32mDebug[39m] Value to move: false [[32mDebug[39m] +**About to evaluate statement**: [ + var@15 := copy x; + var@14 := move var@15 == 1: i32; + var@13 := ¬ move var@14; + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 0: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -14468,17 +16537,15 @@ false var@18 -> ⊥ : i32 ; } -About to evaluate statement: var@15 := copy x -var@14 := move var@15 == 1: i32 -var@13 := ¬ move var@14 -assert(¬move var@13) -var@18 := copy y -var@17 := move var@18 == 0: i32 -var@16 := ¬ move var@17 -assert(¬move var@16) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + var@15 := copy x +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -14504,10 +16571,11 @@ return var@18 -> ⊥ : i32 ; } -About to evaluate statement: var@15 := copy x + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -14540,6 +16608,19 @@ copy x [[32mDebug[39m] Value to copy: 1: i32 [[32mDebug[39m] +**About to evaluate statement**: [ + var@14 := move var@15 == 1: i32; + var@13 := ¬ move var@14; + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 0: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -14565,16 +16646,15 @@ copy x var@18 -> ⊥ : i32 ; } -About to evaluate statement: var@14 := move var@15 == 1: i32 -var@13 := ¬ move var@14 -assert(¬move var@13) -var@18 := copy y -var@17 := move var@18 == 0: i32 -var@16 := ¬ move var@17 -assert(¬move var@16) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + var@14 := move var@15 == 1: i32 +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -14600,10 +16680,11 @@ return var@18 -> ⊥ : i32 ; } -About to evaluate statement: var@14 := move var@15 == 1: i32 + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -14637,6 +16718,7 @@ move var@15 1: i32 [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -14667,6 +16749,18 @@ move var@15 1: i32 [[32mDebug[39m] +**About to evaluate statement**: [ + var@13 := ¬ move var@14; + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 0: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -14692,15 +16786,15 @@ move var@15 var@18 -> ⊥ : i32 ; } -About to evaluate statement: var@13 := ¬ move var@14 -assert(¬move var@13) -var@18 := copy y -var@17 := move var@18 == 0: i32 -var@16 := ¬ move var@17 -assert(¬move var@16) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + var@13 := ¬ move var@14 +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -14726,10 +16820,11 @@ return var@18 -> ⊥ : i32 ; } -About to evaluate statement: var@13 := ¬ move var@14 + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -14762,6 +16857,17 @@ move var@14 [[32mDebug[39m] Value to move: true [[32mDebug[39m] +**About to evaluate statement**: [ + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 0: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -14787,14 +16893,15 @@ true var@18 -> ⊥ : i32 ; } -About to evaluate statement: assert(¬move var@13) -var@18 := copy y -var@17 := move var@18 == 0: i32 -var@16 := ¬ move var@17 -assert(¬move var@16) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + assert(¬move var@13) +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -14820,10 +16927,11 @@ return var@18 -> ⊥ : i32 ; } -About to evaluate statement: assert(¬move var@13) + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -14856,6 +16964,16 @@ move var@13 [[32mDebug[39m] Value to move: false [[32mDebug[39m] +**About to evaluate statement**: [ + var@18 := copy y; + var@17 := move var@18 == 0: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -14881,13 +16999,15 @@ false var@18 -> ⊥ : i32 ; } -About to evaluate statement: var@18 := copy y -var@17 := move var@18 == 0: i32 -var@16 := ¬ move var@17 -assert(¬move var@16) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + var@18 := copy y +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -14913,10 +17033,11 @@ return var@18 -> ⊥ : i32 ; } -About to evaluate statement: var@18 := copy y + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -14949,6 +17070,15 @@ copy y [[32mDebug[39m] Value to copy: 0: i32 [[32mDebug[39m] +**About to evaluate statement**: [ + var@17 := move var@18 == 0: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -14974,12 +17104,15 @@ copy y var@18 -> 0: i32 ; } -About to evaluate statement: var@17 := move var@18 == 0: i32 -var@16 := ¬ move var@17 -assert(¬move var@16) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + var@17 := move var@18 == 0: i32 +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -15005,10 +17138,11 @@ return var@18 -> 0: i32 ; } -About to evaluate statement: var@17 := move var@18 == 0: i32 + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -15042,6 +17176,7 @@ move var@18 0: i32 [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -15072,6 +17207,14 @@ move var@18 0: i32 [[32mDebug[39m] +**About to evaluate statement**: [ + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -15097,11 +17240,15 @@ move var@18 var@18 -> ⊥ : i32 ; } -About to evaluate statement: var@16 := ¬ move var@17 -assert(¬move var@16) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + var@16 := ¬ move var@17 +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -15127,10 +17274,11 @@ return var@18 -> ⊥ : i32 ; } -About to evaluate statement: var@16 := ¬ move var@17 + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -15163,6 +17311,13 @@ move var@17 [[32mDebug[39m] Value to move: true [[32mDebug[39m] +**About to evaluate statement**: [ + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -15188,10 +17343,15 @@ true var@18 -> ⊥ : i32 ; } -About to evaluate statement: assert(¬move var@16) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + assert(¬move var@16) +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -15217,10 +17377,11 @@ return var@18 -> ⊥ : i32 ; } -About to evaluate statement: assert(¬move var@16) + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -15253,6 +17414,12 @@ move var@16 [[32mDebug[39m] Value to move: false [[32mDebug[39m] +**About to evaluate statement**: [ + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -15278,10 +17445,29 @@ false var@18 -> ⊥ : i32 ; } -About to evaluate statement: return + [[32mDebug[39m] test_unit_function: id_mut_pair_test1 [[32mDebug[39m] +**About to evaluate statement**: [ + x := 0: u32; + px := &mut x; + var@4 := move px; + (p).0 := move var@4; + (p).1 := 1: u32; + pp0 := &mut p; + var@7 := &two-phase *(pp0); + pp1 := move id_mut_pair<u32>(move var@7); + y := 2: u32; + var@10 := &mut y; + var@9 := &mut *(var@10); + *((pp1).0) := move var@9; + *((pp1).1) := 3: u32; + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -15299,22 +17485,15 @@ About to evaluate statement: return var@10 -> ⊥ : &'_ mut (u32) ; } -About to evaluate statement: x := 0: u32 -px := &mut x -var@4 := move px -(p).0 := move var@4 -(p).1 := 1: u32 -pp0 := &mut p -var@7 := &two-phase *(pp0) -pp1 := move id_mut_pair<u32>(move var@7) -y := 2: u32 -var@10 := &mut y -var@9 := &mut *(var@10) -*((pp1).0) := move var@9 -*((pp1).1) := 3: u32 -return + [[32mDebug[39m] +**About to evaluate statement**: [ + x := 0: u32 +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -15332,10 +17511,11 @@ return var@10 -> ⊥ : &'_ mut (u32) ; } -About to evaluate statement: x := 0: u32 + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -15358,6 +17538,24 @@ About to evaluate statement: x := 0: u32 0: u32 [[32mDebug[39m] +**About to evaluate statement**: [ + px := &mut x; + var@4 := move px; + (p).0 := move var@4; + (p).1 := 1: u32; + pp0 := &mut p; + var@7 := &two-phase *(pp0); + pp1 := move id_mut_pair<u32>(move var@7); + y := 2: u32; + var@10 := &mut y; + var@9 := &mut *(var@10); + *((pp1).0) := move var@9; + *((pp1).1) := 3: u32; + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -15375,21 +17573,15 @@ About to evaluate statement: x := 0: u32 var@10 -> ⊥ : &'_ mut (u32) ; } -About to evaluate statement: px := &mut x -var@4 := move px -(p).0 := move var@4 -(p).1 := 1: u32 -pp0 := &mut p -var@7 := &two-phase *(pp0) -pp1 := move id_mut_pair<u32>(move var@7) -y := 2: u32 -var@10 := &mut y -var@9 := &mut *(var@10) -*((pp1).0) := move var@9 -*((pp1).1) := 3: u32 -return + [[32mDebug[39m] +**About to evaluate statement**: [ + px := &mut x +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -15407,9 +17599,26 @@ return var@10 -> ⊥ : &'_ mut (u32) ; } -About to evaluate statement: px := &mut x + [[32mDebug[39m] +**About to evaluate statement**: [ + var@4 := move px; + (p).0 := move var@4; + (p).1 := 1: u32; + pp0 := &mut p; + var@7 := &two-phase *(pp0); + pp1 := move id_mut_pair<u32>(move var@7); + y := 2: u32; + var@10 := &mut y; + var@9 := &mut *(var@10); + *((pp1).0) := move var@9; + *((pp1).1) := 3: u32; + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -15427,20 +17636,15 @@ About to evaluate statement: px := &mut x var@10 -> ⊥ : &'_ mut (u32) ; } -About to evaluate statement: var@4 := move px -(p).0 := move var@4 -(p).1 := 1: u32 -pp0 := &mut p -var@7 := &two-phase *(pp0) -pp1 := move id_mut_pair<u32>(move var@7) -y := 2: u32 -var@10 := &mut y -var@9 := &mut *(var@10) -*((pp1).0) := move var@9 -*((pp1).1) := 3: u32 -return + [[32mDebug[39m] +**About to evaluate statement**: [ + var@4 := move px +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -15458,10 +17662,11 @@ return var@10 -> ⊥ : &'_ mut (u32) ; } -About to evaluate statement: var@4 := move px + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -15486,6 +17691,22 @@ move px [[32mDebug[39m] Value to move: &mut@0 (0: u32) [[32mDebug[39m] +**About to evaluate statement**: [ + (p).0 := move var@4; + (p).1 := 1: u32; + pp0 := &mut p; + var@7 := &two-phase *(pp0); + pp1 := move id_mut_pair<u32>(move var@7); + y := 2: u32; + var@10 := &mut y; + var@9 := &mut *(var@10); + *((pp1).0) := move var@9; + *((pp1).1) := 3: u32; + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -15503,19 +17724,15 @@ move px var@10 -> ⊥ : &'_ mut (u32) ; } -About to evaluate statement: (p).0 := move var@4 -(p).1 := 1: u32 -pp0 := &mut p -var@7 := &two-phase *(pp0) -pp1 := move id_mut_pair<u32>(move var@7) -y := 2: u32 -var@10 := &mut y -var@9 := &mut *(var@10) -*((pp1).0) := move var@9 -*((pp1).1) := 3: u32 -return + [[32mDebug[39m] +**About to evaluate statement**: [ + (p).0 := move var@4 +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -15533,10 +17750,11 @@ return var@10 -> ⊥ : &'_ mut (u32) ; } -About to evaluate statement: (p).0 := move var@4 + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -15567,6 +17785,21 @@ ty: (Types.Adt (Types.Tuple, [], (Types.Integer Types.U32)] )) [[32mDebug[39m] +**About to evaluate statement**: [ + (p).1 := 1: u32; + pp0 := &mut p; + var@7 := &two-phase *(pp0); + pp1 := move id_mut_pair<u32>(move var@7); + y := 2: u32; + var@10 := &mut y; + var@9 := &mut *(var@10); + *((pp1).0) := move var@9; + *((pp1).1) := 3: u32; + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -15584,18 +17817,15 @@ ty: (Types.Adt (Types.Tuple, [], var@10 -> ⊥ : &'_ mut (u32) ; } -About to evaluate statement: (p).1 := 1: u32 -pp0 := &mut p -var@7 := &two-phase *(pp0) -pp1 := move id_mut_pair<u32>(move var@7) -y := 2: u32 -var@10 := &mut y -var@9 := &mut *(var@10) -*((pp1).0) := move var@9 -*((pp1).1) := 3: u32 -return + [[32mDebug[39m] +**About to evaluate statement**: [ + (p).1 := 1: u32 +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -15613,10 +17843,11 @@ return var@10 -> ⊥ : &'_ mut (u32) ; } -About to evaluate statement: (p).1 := 1: u32 + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -15639,6 +17870,20 @@ About to evaluate statement: (p).1 := 1: u32 1: u32 [[32mDebug[39m] +**About to evaluate statement**: [ + pp0 := &mut p; + var@7 := &two-phase *(pp0); + pp1 := move id_mut_pair<u32>(move var@7); + y := 2: u32; + var@10 := &mut y; + var@9 := &mut *(var@10); + *((pp1).0) := move var@9; + *((pp1).1) := 3: u32; + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -15656,17 +17901,15 @@ About to evaluate statement: (p).1 := 1: u32 var@10 -> ⊥ : &'_ mut (u32) ; } -About to evaluate statement: pp0 := &mut p -var@7 := &two-phase *(pp0) -pp1 := move id_mut_pair<u32>(move var@7) -y := 2: u32 -var@10 := &mut y -var@9 := &mut *(var@10) -*((pp1).0) := move var@9 -*((pp1).1) := 3: u32 -return + [[32mDebug[39m] +**About to evaluate statement**: [ + pp0 := &mut p +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -15684,9 +17927,22 @@ return var@10 -> ⊥ : &'_ mut (u32) ; } -About to evaluate statement: pp0 := &mut p + [[32mDebug[39m] +**About to evaluate statement**: [ + var@7 := &two-phase *(pp0); + pp1 := move id_mut_pair<u32>(move var@7); + y := 2: u32; + var@10 := &mut y; + var@9 := &mut *(var@10); + *((pp1).0) := move var@9; + *((pp1).1) := 3: u32; + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -15704,16 +17960,15 @@ About to evaluate statement: pp0 := &mut p var@10 -> ⊥ : &'_ mut (u32) ; } -About to evaluate statement: var@7 := &two-phase *(pp0) -pp1 := move id_mut_pair<u32>(move var@7) -y := 2: u32 -var@10 := &mut y -var@9 := &mut *(var@10) -*((pp1).0) := move var@9 -*((pp1).1) := 3: u32 -return + [[32mDebug[39m] +**About to evaluate statement**: [ + var@7 := &two-phase *(pp0) +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -15731,9 +17986,21 @@ return var@10 -> ⊥ : &'_ mut (u32) ; } -About to evaluate statement: var@7 := &two-phase *(pp0) + [[32mDebug[39m] +**About to evaluate statement**: [ + pp1 := move id_mut_pair<u32>(move var@7); + y := 2: u32; + var@10 := &mut y; + var@9 := &mut *(var@10); + *((pp1).0) := move var@9; + *((pp1).1) := 3: u32; + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -15751,15 +18018,15 @@ About to evaluate statement: var@7 := &two-phase *(pp0) var@10 -> ⊥ : &'_ mut (u32) ; } -About to evaluate statement: pp1 := move id_mut_pair<u32>(move var@7) -y := 2: u32 -var@10 := &mut y -var@9 := &mut *(var@10) -*((pp1).0) := move var@9 -*((pp1).1) := 3: u32 -return + [[32mDebug[39m] +**About to evaluate statement**: [ + pp1 := move id_mut_pair<u32>(move var@7) +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -15777,10 +18044,11 @@ return var@10 -> ⊥ : &'_ mut (u32) ; } -About to evaluate statement: pp1 := move id_mut_pair<u32>(move var@7) + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -15832,6 +18100,14 @@ move var@7 [[32mDebug[39m] Value to move: &mut@2 ((&mut@0 (0: u32), 1: u32)) [[32mDebug[39m] +**About to evaluate statement**: [ + var@2 := &mut *(x); + var@0 := &mut *(var@2); + return +] + +**Context**: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -15856,11 +18132,15 @@ move var@7 var@2 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; } -About to evaluate statement: var@2 := &mut *(x) -var@0 := &mut *(var@2) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + var@2 := &mut *(x) +] + +**Context**: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -15885,9 +18165,16 @@ return var@2 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; } -About to evaluate statement: var@2 := &mut *(x) + [[32mDebug[39m] +**About to evaluate statement**: [ + var@0 := &mut *(var@2); + return +] + +**Context**: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -15912,10 +18199,15 @@ About to evaluate statement: var@2 := &mut *(x) var@2 -> &mut@3 ((&mut@0 (0: u32), 1: u32)) ; } -About to evaluate statement: var@0 := &mut *(var@2) -return + [[32mDebug[39m] +**About to evaluate statement**: [ + var@0 := &mut *(var@2) +] + +**Context**: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -15940,9 +18232,15 @@ return var@2 -> &mut@3 ((&mut@0 (0: u32), 1: u32)) ; } -About to evaluate statement: var@0 := &mut *(var@2) + [[32mDebug[39m] +**About to evaluate statement**: [ + return +] + +**Context**: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -15967,9 +18265,10 @@ About to evaluate statement: var@0 := &mut *(var@2) var@2 -> &mut@3 (⌊mut@4⌋) ; } -About to evaluate statement: return + [[32mDebug[39m] ctx_pop_frame: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -15998,6 +18297,7 @@ About to evaluate statement: return [[32mDebug[39m] drop_value: place: var@2 [[32mDebug[39m] drop_value: place: x [[32mDebug[39m] ctx_pop_frame: after dropping local variables: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -16024,6 +18324,7 @@ About to evaluate statement: return [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 2 frame(s) # Frame 0: @@ -16055,6 +18356,17 @@ move var@0 [[32mDebug[39m] Value to move: &mut@4 ((&mut@0 (0: u32), 1: u32)) [[32mDebug[39m] +**About to evaluate statement**: [ + y := 2: u32; + var@10 := &mut y; + var@9 := &mut *(var@10); + *((pp1).0) := move var@9; + *((pp1).1) := 3: u32; + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -16072,14 +18384,15 @@ move var@0 var@10 -> ⊥ : &'_ mut (u32) ; } -About to evaluate statement: y := 2: u32 -var@10 := &mut y -var@9 := &mut *(var@10) -*((pp1).0) := move var@9 -*((pp1).1) := 3: u32 -return + [[32mDebug[39m] +**About to evaluate statement**: [ + y := 2: u32 +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -16097,10 +18410,11 @@ return var@10 -> ⊥ : &'_ mut (u32) ; } -About to evaluate statement: y := 2: u32 + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -16123,6 +18437,16 @@ About to evaluate statement: y := 2: u32 2: u32 [[32mDebug[39m] +**About to evaluate statement**: [ + var@10 := &mut y; + var@9 := &mut *(var@10); + *((pp1).0) := move var@9; + *((pp1).1) := 3: u32; + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -16140,13 +18464,15 @@ About to evaluate statement: y := 2: u32 var@10 -> ⊥ : &'_ mut (u32) ; } -About to evaluate statement: var@10 := &mut y -var@9 := &mut *(var@10) -*((pp1).0) := move var@9 -*((pp1).1) := 3: u32 -return + [[32mDebug[39m] +**About to evaluate statement**: [ + var@10 := &mut y +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -16164,9 +18490,18 @@ return var@10 -> ⊥ : &'_ mut (u32) ; } -About to evaluate statement: var@10 := &mut y + [[32mDebug[39m] +**About to evaluate statement**: [ + var@9 := &mut *(var@10); + *((pp1).0) := move var@9; + *((pp1).1) := 3: u32; + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -16184,12 +18519,15 @@ About to evaluate statement: var@10 := &mut y var@10 -> &mut@5 (2: u32) ; } -About to evaluate statement: var@9 := &mut *(var@10) -*((pp1).0) := move var@9 -*((pp1).1) := 3: u32 -return + [[32mDebug[39m] +**About to evaluate statement**: [ + var@9 := &mut *(var@10) +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -16207,9 +18545,17 @@ return var@10 -> &mut@5 (2: u32) ; } -About to evaluate statement: var@9 := &mut *(var@10) + [[32mDebug[39m] +**About to evaluate statement**: [ + *((pp1).0) := move var@9; + *((pp1).1) := 3: u32; + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -16227,11 +18573,15 @@ About to evaluate statement: var@9 := &mut *(var@10) var@10 -> &mut@5 (⌊mut@6⌋) ; } -About to evaluate statement: *((pp1).0) := move var@9 -*((pp1).1) := 3: u32 -return + [[32mDebug[39m] +**About to evaluate statement**: [ + *((pp1).0) := move var@9 +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -16249,10 +18599,11 @@ return var@10 -> &mut@5 (⌊mut@6⌋) ; } -About to evaluate statement: *((pp1).0) := move var@9 + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -16277,6 +18628,13 @@ move var@9 [[32mDebug[39m] Value to move: &mut@6 (2: u32) [[32mDebug[39m] +**About to evaluate statement**: [ + *((pp1).1) := 3: u32; + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -16294,10 +18652,15 @@ move var@9 var@10 -> &mut@5 (⌊mut@6⌋) ; } -About to evaluate statement: *((pp1).1) := 3: u32 -return + [[32mDebug[39m] +**About to evaluate statement**: [ + *((pp1).1) := 3: u32 +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -16315,10 +18678,11 @@ return var@10 -> &mut@5 (⌊mut@6⌋) ; } -About to evaluate statement: *((pp1).1) := 3: u32 + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -16341,6 +18705,12 @@ About to evaluate statement: *((pp1).1) := 3: u32 3: u32 [[32mDebug[39m] +**About to evaluate statement**: [ + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -16358,10 +18728,17 @@ About to evaluate statement: *((pp1).1) := 3: u32 var@10 -> &mut@5 (⌊mut@6⌋) ; } -About to evaluate statement: return + [[32mDebug[39m] test_unit_function: test_char [[32mDebug[39m] +**About to evaluate statement**: [ + var@0 := a; + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -16369,10 +18746,15 @@ About to evaluate statement: return var@0 -> ⊥ : char ; } -About to evaluate statement: var@0 := a -return + [[32mDebug[39m] +**About to evaluate statement**: [ + var@0 := a +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -16380,10 +18762,11 @@ return var@0 -> ⊥ : char ; } -About to evaluate statement: var@0 := a + [[32mDebug[39m] eval_operand: - ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -16396,6 +18779,12 @@ About to evaluate statement: var@0 := a a [[32mDebug[39m] +**About to evaluate statement**: [ + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -16403,5 +18792,17276 @@ a var@0 -> a ; } -About to evaluate statement: return + + +[[32mDebug[39m] test_function_symbolic: add_test +[[32mDebug[39m] +**About to evaluate statement**: [ + var@3 := copy x; + var@4 := copy y; + var@0 := copy var@3 + copy var@4; + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + var@3 -> ⊥ : u32 ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : (u32, bool) ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@3 := copy x +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + var@3 -> ⊥ : u32 ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : (u32, bool) ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + var@3 -> ⊥ : u32 ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : (u32, bool) ; +} + + +- op: +copy x + +[[32mDebug[39m] Value to copy: +s@0 : u32 +[[32mDebug[39m] +**About to evaluate statement**: [ + var@4 := copy y; + var@0 := copy var@3 + copy var@4; + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + var@3 -> s@0 : u32 ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : (u32, bool) ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@4 := copy y +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + var@3 -> s@0 : u32 ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : (u32, bool) ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + var@3 -> s@0 : u32 ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : (u32, bool) ; +} + + +- op: +copy y + +[[32mDebug[39m] Value to copy: +s@1 : u32 +[[32mDebug[39m] +**About to evaluate statement**: [ + var@0 := copy var@3 + copy var@4; + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + var@3 -> s@0 : u32 ; + var@4 -> s@1 : u32 ; + var@5 -> ⊥ : (u32, bool) ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@0 := copy var@3 + copy var@4 +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + var@3 -> s@0 : u32 ; + var@4 -> s@1 : u32 ; + var@5 -> ⊥ : (u32, bool) ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + var@3 -> s@0 : u32 ; + var@4 -> s@1 : u32 ; + var@5 -> ⊥ : (u32, bool) ; +} + + +- op: +copy var@3 + +[[32mDebug[39m] Value to copy: +s@0 : u32 +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + var@3 -> s@0 : u32 ; + var@4 -> s@1 : u32 ; + var@5 -> ⊥ : (u32, bool) ; +} + + +- op: +copy var@4 + +[[32mDebug[39m] Value to copy: +s@1 : u32 +[[32mDebug[39m] +**About to evaluate statement**: [ + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> s@2 : u32 ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + var@3 -> s@0 : u32 ; + var@4 -> s@1 : u32 ; + var@5 -> ⊥ : (u32, bool) ; +} + + + +[[32mDebug[39m] test_function_symbolic: subs_test +[[32mDebug[39m] +**About to evaluate statement**: [ + var@3 := copy x; + var@4 := copy y; + var@0 := copy var@3 - copy var@4; + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + var@3 -> ⊥ : u32 ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : (u32, bool) ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@3 := copy x +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + var@3 -> ⊥ : u32 ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : (u32, bool) ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + var@3 -> ⊥ : u32 ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : (u32, bool) ; +} + + +- op: +copy x + +[[32mDebug[39m] Value to copy: +s@0 : u32 +[[32mDebug[39m] +**About to evaluate statement**: [ + var@4 := copy y; + var@0 := copy var@3 - copy var@4; + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + var@3 -> s@0 : u32 ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : (u32, bool) ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@4 := copy y +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + var@3 -> s@0 : u32 ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : (u32, bool) ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + var@3 -> s@0 : u32 ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : (u32, bool) ; +} + + +- op: +copy y + +[[32mDebug[39m] Value to copy: +s@1 : u32 +[[32mDebug[39m] +**About to evaluate statement**: [ + var@0 := copy var@3 - copy var@4; + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + var@3 -> s@0 : u32 ; + var@4 -> s@1 : u32 ; + var@5 -> ⊥ : (u32, bool) ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@0 := copy var@3 - copy var@4 +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + var@3 -> s@0 : u32 ; + var@4 -> s@1 : u32 ; + var@5 -> ⊥ : (u32, bool) ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + var@3 -> s@0 : u32 ; + var@4 -> s@1 : u32 ; + var@5 -> ⊥ : (u32, bool) ; +} + + +- op: +copy var@3 + +[[32mDebug[39m] Value to copy: +s@0 : u32 +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + var@3 -> s@0 : u32 ; + var@4 -> s@1 : u32 ; + var@5 -> ⊥ : (u32, bool) ; +} + + +- op: +copy var@4 + +[[32mDebug[39m] Value to copy: +s@1 : u32 +[[32mDebug[39m] +**About to evaluate statement**: [ + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> s@2 : u32 ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + var@3 -> s@0 : u32 ; + var@4 -> s@1 : u32 ; + var@5 -> ⊥ : (u32, bool) ; +} + + + +[[32mDebug[39m] test_function_symbolic: div_test +[[32mDebug[39m] +**About to evaluate statement**: [ + var@3 := copy x; + var@4 := copy y; + var@0 := move var@3 / move var@4; + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + var@3 -> ⊥ : u32 ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : bool ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@3 := copy x +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + var@3 -> ⊥ : u32 ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : bool ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + var@3 -> ⊥ : u32 ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : bool ; +} + + +- op: +copy x + +[[32mDebug[39m] Value to copy: +s@0 : u32 +[[32mDebug[39m] +**About to evaluate statement**: [ + var@4 := copy y; + var@0 := move var@3 / move var@4; + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + var@3 -> s@0 : u32 ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : bool ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@4 := copy y +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + var@3 -> s@0 : u32 ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : bool ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + var@3 -> s@0 : u32 ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : bool ; +} + + +- op: +copy y + +[[32mDebug[39m] Value to copy: +s@1 : u32 +[[32mDebug[39m] +**About to evaluate statement**: [ + var@0 := move var@3 / move var@4; + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + var@3 -> s@0 : u32 ; + var@4 -> s@1 : u32 ; + var@5 -> ⊥ : bool ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@0 := move var@3 / move var@4 +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + var@3 -> s@0 : u32 ; + var@4 -> s@1 : u32 ; + var@5 -> ⊥ : bool ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + var@3 -> s@0 : u32 ; + var@4 -> s@1 : u32 ; + var@5 -> ⊥ : bool ; +} + + +- op: +move var@3 + +[[32mDebug[39m] Value to move: +s@0 : u32 +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + var@3 -> ⊥ : u32 ; + var@4 -> s@1 : u32 ; + var@5 -> ⊥ : bool ; +} + + +- op: +move var@4 + +[[32mDebug[39m] Value to move: +s@1 : u32 +[[32mDebug[39m] +**About to evaluate statement**: [ + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> s@2 : u32 ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + var@3 -> ⊥ : u32 ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : bool ; +} + + + +[[32mDebug[39m] test_function_symbolic: rem_test +[[32mDebug[39m] +**About to evaluate statement**: [ + var@3 := copy x; + var@4 := copy y; + var@0 := move var@3 % move var@4; + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + var@3 -> ⊥ : u32 ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : bool ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@3 := copy x +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + var@3 -> ⊥ : u32 ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : bool ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + var@3 -> ⊥ : u32 ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : bool ; +} + + +- op: +copy x + +[[32mDebug[39m] Value to copy: +s@0 : u32 +[[32mDebug[39m] +**About to evaluate statement**: [ + var@4 := copy y; + var@0 := move var@3 % move var@4; + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + var@3 -> s@0 : u32 ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : bool ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@4 := copy y +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + var@3 -> s@0 : u32 ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : bool ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + var@3 -> s@0 : u32 ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : bool ; +} + + +- op: +copy y + +[[32mDebug[39m] Value to copy: +s@1 : u32 +[[32mDebug[39m] +**About to evaluate statement**: [ + var@0 := move var@3 % move var@4; + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + var@3 -> s@0 : u32 ; + var@4 -> s@1 : u32 ; + var@5 -> ⊥ : bool ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@0 := move var@3 % move var@4 +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + var@3 -> s@0 : u32 ; + var@4 -> s@1 : u32 ; + var@5 -> ⊥ : bool ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + var@3 -> s@0 : u32 ; + var@4 -> s@1 : u32 ; + var@5 -> ⊥ : bool ; +} + + +- op: +move var@3 + +[[32mDebug[39m] Value to move: +s@0 : u32 +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + var@3 -> ⊥ : u32 ; + var@4 -> s@1 : u32 ; + var@5 -> ⊥ : bool ; +} + + +- op: +move var@4 + +[[32mDebug[39m] Value to move: +s@1 : u32 +[[32mDebug[39m] +**About to evaluate statement**: [ + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> s@2 : u32 ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + var@3 -> ⊥ : u32 ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : bool ; +} + + + +[[32mDebug[39m] test_function_symbolic: test2 +[[32mDebug[39m] +**About to evaluate statement**: [ + x := 23: u32; + y := 44: u32; + z := 67: u32; + var@5 := copy x; + (p).x := move var@5; + (p).y := 67: u32; + (s as test1::Sum::Right).0 := true; + set_discriminant(s, 1); + (o as test1::One::One).0 := 3: u64; + set_discriminant(o, 0); + set_discriminant(e0, 0); + set_discriminant(enum0, 0); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⊥ : u32 ; + y -> ⊥ : u32 ; + z -> ⊥ : u32 ; + p -> ⊥ : test1::Pair<u32, u32> ; + var@5 -> ⊥ : u32 ; + s -> ⊥ : test1::Sum<u32, bool> ; + o -> ⊥ : test1::One<u64> ; + e0 -> ⊥ : test1::EmptyEnum ; + e1 -> ⊥ : test1::EmptyEnum ; + enum0 -> ⊥ : test1::Enum ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + x := 23: u32 +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⊥ : u32 ; + y -> ⊥ : u32 ; + z -> ⊥ : u32 ; + p -> ⊥ : test1::Pair<u32, u32> ; + var@5 -> ⊥ : u32 ; + s -> ⊥ : test1::Sum<u32, bool> ; + o -> ⊥ : test1::One<u64> ; + e0 -> ⊥ : test1::EmptyEnum ; + e1 -> ⊥ : test1::EmptyEnum ; + enum0 -> ⊥ : test1::Enum ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⊥ : u32 ; + y -> ⊥ : u32 ; + z -> ⊥ : u32 ; + p -> ⊥ : test1::Pair<u32, u32> ; + var@5 -> ⊥ : u32 ; + s -> ⊥ : test1::Sum<u32, bool> ; + o -> ⊥ : test1::One<u64> ; + e0 -> ⊥ : test1::EmptyEnum ; + e1 -> ⊥ : test1::EmptyEnum ; + enum0 -> ⊥ : test1::Enum ; +} + + +- op: +23: u32 + +[[32mDebug[39m] +**About to evaluate statement**: [ + y := 44: u32; + z := 67: u32; + var@5 := copy x; + (p).x := move var@5; + (p).y := 67: u32; + (s as test1::Sum::Right).0 := true; + set_discriminant(s, 1); + (o as test1::One::One).0 := 3: u64; + set_discriminant(o, 0); + set_discriminant(e0, 0); + set_discriminant(enum0, 0); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 23: u32 ; + y -> ⊥ : u32 ; + z -> ⊥ : u32 ; + p -> ⊥ : test1::Pair<u32, u32> ; + var@5 -> ⊥ : u32 ; + s -> ⊥ : test1::Sum<u32, bool> ; + o -> ⊥ : test1::One<u64> ; + e0 -> ⊥ : test1::EmptyEnum ; + e1 -> ⊥ : test1::EmptyEnum ; + enum0 -> ⊥ : test1::Enum ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + y := 44: u32 +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 23: u32 ; + y -> ⊥ : u32 ; + z -> ⊥ : u32 ; + p -> ⊥ : test1::Pair<u32, u32> ; + var@5 -> ⊥ : u32 ; + s -> ⊥ : test1::Sum<u32, bool> ; + o -> ⊥ : test1::One<u64> ; + e0 -> ⊥ : test1::EmptyEnum ; + e1 -> ⊥ : test1::EmptyEnum ; + enum0 -> ⊥ : test1::Enum ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 23: u32 ; + y -> ⊥ : u32 ; + z -> ⊥ : u32 ; + p -> ⊥ : test1::Pair<u32, u32> ; + var@5 -> ⊥ : u32 ; + s -> ⊥ : test1::Sum<u32, bool> ; + o -> ⊥ : test1::One<u64> ; + e0 -> ⊥ : test1::EmptyEnum ; + e1 -> ⊥ : test1::EmptyEnum ; + enum0 -> ⊥ : test1::Enum ; +} + + +- op: +44: u32 + +[[32mDebug[39m] +**About to evaluate statement**: [ + z := 67: u32; + var@5 := copy x; + (p).x := move var@5; + (p).y := 67: u32; + (s as test1::Sum::Right).0 := true; + set_discriminant(s, 1); + (o as test1::One::One).0 := 3: u64; + set_discriminant(o, 0); + set_discriminant(e0, 0); + set_discriminant(enum0, 0); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 23: u32 ; + y -> 44: u32 ; + z -> ⊥ : u32 ; + p -> ⊥ : test1::Pair<u32, u32> ; + var@5 -> ⊥ : u32 ; + s -> ⊥ : test1::Sum<u32, bool> ; + o -> ⊥ : test1::One<u64> ; + e0 -> ⊥ : test1::EmptyEnum ; + e1 -> ⊥ : test1::EmptyEnum ; + enum0 -> ⊥ : test1::Enum ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + z := 67: u32 +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 23: u32 ; + y -> 44: u32 ; + z -> ⊥ : u32 ; + p -> ⊥ : test1::Pair<u32, u32> ; + var@5 -> ⊥ : u32 ; + s -> ⊥ : test1::Sum<u32, bool> ; + o -> ⊥ : test1::One<u64> ; + e0 -> ⊥ : test1::EmptyEnum ; + e1 -> ⊥ : test1::EmptyEnum ; + enum0 -> ⊥ : test1::Enum ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 23: u32 ; + y -> 44: u32 ; + z -> ⊥ : u32 ; + p -> ⊥ : test1::Pair<u32, u32> ; + var@5 -> ⊥ : u32 ; + s -> ⊥ : test1::Sum<u32, bool> ; + o -> ⊥ : test1::One<u64> ; + e0 -> ⊥ : test1::EmptyEnum ; + e1 -> ⊥ : test1::EmptyEnum ; + enum0 -> ⊥ : test1::Enum ; +} + + +- op: +67: u32 + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@5 := copy x; + (p).x := move var@5; + (p).y := 67: u32; + (s as test1::Sum::Right).0 := true; + set_discriminant(s, 1); + (o as test1::One::One).0 := 3: u64; + set_discriminant(o, 0); + set_discriminant(e0, 0); + set_discriminant(enum0, 0); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 23: u32 ; + y -> 44: u32 ; + z -> 67: u32 ; + p -> ⊥ : test1::Pair<u32, u32> ; + var@5 -> ⊥ : u32 ; + s -> ⊥ : test1::Sum<u32, bool> ; + o -> ⊥ : test1::One<u64> ; + e0 -> ⊥ : test1::EmptyEnum ; + e1 -> ⊥ : test1::EmptyEnum ; + enum0 -> ⊥ : test1::Enum ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@5 := copy x +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 23: u32 ; + y -> 44: u32 ; + z -> 67: u32 ; + p -> ⊥ : test1::Pair<u32, u32> ; + var@5 -> ⊥ : u32 ; + s -> ⊥ : test1::Sum<u32, bool> ; + o -> ⊥ : test1::One<u64> ; + e0 -> ⊥ : test1::EmptyEnum ; + e1 -> ⊥ : test1::EmptyEnum ; + enum0 -> ⊥ : test1::Enum ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 23: u32 ; + y -> 44: u32 ; + z -> 67: u32 ; + p -> ⊥ : test1::Pair<u32, u32> ; + var@5 -> ⊥ : u32 ; + s -> ⊥ : test1::Sum<u32, bool> ; + o -> ⊥ : test1::One<u64> ; + e0 -> ⊥ : test1::EmptyEnum ; + e1 -> ⊥ : test1::EmptyEnum ; + enum0 -> ⊥ : test1::Enum ; +} + + +- op: +copy x + +[[32mDebug[39m] Value to copy: +23: u32 +[[32mDebug[39m] +**About to evaluate statement**: [ + (p).x := move var@5; + (p).y := 67: u32; + (s as test1::Sum::Right).0 := true; + set_discriminant(s, 1); + (o as test1::One::One).0 := 3: u64; + set_discriminant(o, 0); + set_discriminant(e0, 0); + set_discriminant(enum0, 0); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 23: u32 ; + y -> 44: u32 ; + z -> 67: u32 ; + p -> ⊥ : test1::Pair<u32, u32> ; + var@5 -> 23: u32 ; + s -> ⊥ : test1::Sum<u32, bool> ; + o -> ⊥ : test1::One<u64> ; + e0 -> ⊥ : test1::EmptyEnum ; + e1 -> ⊥ : test1::EmptyEnum ; + enum0 -> ⊥ : test1::Enum ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + (p).x := move var@5 +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 23: u32 ; + y -> 44: u32 ; + z -> 67: u32 ; + p -> ⊥ : test1::Pair<u32, u32> ; + var@5 -> 23: u32 ; + s -> ⊥ : test1::Sum<u32, bool> ; + o -> ⊥ : test1::One<u64> ; + e0 -> ⊥ : test1::EmptyEnum ; + e1 -> ⊥ : test1::EmptyEnum ; + enum0 -> ⊥ : test1::Enum ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 23: u32 ; + y -> 44: u32 ; + z -> 67: u32 ; + p -> ⊥ : test1::Pair<u32, u32> ; + var@5 -> 23: u32 ; + s -> ⊥ : test1::Sum<u32, bool> ; + o -> ⊥ : test1::One<u64> ; + e0 -> ⊥ : test1::EmptyEnum ; + e1 -> ⊥ : test1::EmptyEnum ; + enum0 -> ⊥ : test1::Enum ; +} + + +- op: +move var@5 + +[[32mDebug[39m] Value to move: +23: u32 +[[32mDebug[39m] expand_bottom_value_from_projection: +pe: (Expressions.Field ((Expressions.ProjAdt (0, None)), 0)) +ty: (Types.Adt ((Types.AdtId 0), [], + [(Types.Integer Types.U32); (Types.Integer Types.U32)])) +[[32mDebug[39m] +**About to evaluate statement**: [ + (p).y := 67: u32; + (s as test1::Sum::Right).0 := true; + set_discriminant(s, 1); + (o as test1::One::One).0 := 3: u64; + set_discriminant(o, 0); + set_discriminant(e0, 0); + set_discriminant(enum0, 0); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 23: u32 ; + y -> 44: u32 ; + z -> 67: u32 ; + p -> test1::Pair { x = 23: u32; y = ⊥ : u32; } ; + var@5 -> ⊥ : u32 ; + s -> ⊥ : test1::Sum<u32, bool> ; + o -> ⊥ : test1::One<u64> ; + e0 -> ⊥ : test1::EmptyEnum ; + e1 -> ⊥ : test1::EmptyEnum ; + enum0 -> ⊥ : test1::Enum ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + (p).y := 67: u32 +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 23: u32 ; + y -> 44: u32 ; + z -> 67: u32 ; + p -> test1::Pair { x = 23: u32; y = ⊥ : u32; } ; + var@5 -> ⊥ : u32 ; + s -> ⊥ : test1::Sum<u32, bool> ; + o -> ⊥ : test1::One<u64> ; + e0 -> ⊥ : test1::EmptyEnum ; + e1 -> ⊥ : test1::EmptyEnum ; + enum0 -> ⊥ : test1::Enum ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 23: u32 ; + y -> 44: u32 ; + z -> 67: u32 ; + p -> test1::Pair { x = 23: u32; y = ⊥ : u32; } ; + var@5 -> ⊥ : u32 ; + s -> ⊥ : test1::Sum<u32, bool> ; + o -> ⊥ : test1::One<u64> ; + e0 -> ⊥ : test1::EmptyEnum ; + e1 -> ⊥ : test1::EmptyEnum ; + enum0 -> ⊥ : test1::Enum ; +} + + +- op: +67: u32 + +[[32mDebug[39m] +**About to evaluate statement**: [ + (s as test1::Sum::Right).0 := true; + set_discriminant(s, 1); + (o as test1::One::One).0 := 3: u64; + set_discriminant(o, 0); + set_discriminant(e0, 0); + set_discriminant(enum0, 0); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 23: u32 ; + y -> 44: u32 ; + z -> 67: u32 ; + p -> test1::Pair { x = 23: u32; y = 67: u32; } ; + var@5 -> ⊥ : u32 ; + s -> ⊥ : test1::Sum<u32, bool> ; + o -> ⊥ : test1::One<u64> ; + e0 -> ⊥ : test1::EmptyEnum ; + e1 -> ⊥ : test1::EmptyEnum ; + enum0 -> ⊥ : test1::Enum ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + (s as test1::Sum::Right).0 := true +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 23: u32 ; + y -> 44: u32 ; + z -> 67: u32 ; + p -> test1::Pair { x = 23: u32; y = 67: u32; } ; + var@5 -> ⊥ : u32 ; + s -> ⊥ : test1::Sum<u32, bool> ; + o -> ⊥ : test1::One<u64> ; + e0 -> ⊥ : test1::EmptyEnum ; + e1 -> ⊥ : test1::EmptyEnum ; + enum0 -> ⊥ : test1::Enum ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 23: u32 ; + y -> 44: u32 ; + z -> 67: u32 ; + p -> test1::Pair { x = 23: u32; y = 67: u32; } ; + var@5 -> ⊥ : u32 ; + s -> ⊥ : test1::Sum<u32, bool> ; + o -> ⊥ : test1::One<u64> ; + e0 -> ⊥ : test1::EmptyEnum ; + e1 -> ⊥ : test1::EmptyEnum ; + enum0 -> ⊥ : test1::Enum ; +} + + +- op: +true + +[[32mDebug[39m] expand_bottom_value_from_projection: +pe: (Expressions.Field ((Expressions.ProjAdt (6, (Some 1))), 0)) +ty: (Types.Adt ((Types.AdtId 6), [], [(Types.Integer Types.U32); Types.Bool])) +[[32mDebug[39m] +**About to evaluate statement**: [ + set_discriminant(s, 1); + (o as test1::One::One).0 := 3: u64; + set_discriminant(o, 0); + set_discriminant(e0, 0); + set_discriminant(enum0, 0); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 23: u32 ; + y -> 44: u32 ; + z -> 67: u32 ; + p -> test1::Pair { x = 23: u32; y = 67: u32; } ; + var@5 -> ⊥ : u32 ; + s -> test1::Sum::Right { 0 = true; } ; + o -> ⊥ : test1::One<u64> ; + e0 -> ⊥ : test1::EmptyEnum ; + e1 -> ⊥ : test1::EmptyEnum ; + enum0 -> ⊥ : test1::Enum ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + set_discriminant(s, 1) +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 23: u32 ; + y -> 44: u32 ; + z -> 67: u32 ; + p -> test1::Pair { x = 23: u32; y = 67: u32; } ; + var@5 -> ⊥ : u32 ; + s -> test1::Sum::Right { 0 = true; } ; + o -> ⊥ : test1::One<u64> ; + e0 -> ⊥ : test1::EmptyEnum ; + e1 -> ⊥ : test1::EmptyEnum ; + enum0 -> ⊥ : test1::Enum ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + (o as test1::One::One).0 := 3: u64; + set_discriminant(o, 0); + set_discriminant(e0, 0); + set_discriminant(enum0, 0); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 23: u32 ; + y -> 44: u32 ; + z -> 67: u32 ; + p -> test1::Pair { x = 23: u32; y = 67: u32; } ; + var@5 -> ⊥ : u32 ; + s -> test1::Sum::Right { 0 = true; } ; + o -> ⊥ : test1::One<u64> ; + e0 -> ⊥ : test1::EmptyEnum ; + e1 -> ⊥ : test1::EmptyEnum ; + enum0 -> ⊥ : test1::Enum ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + (o as test1::One::One).0 := 3: u64 +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 23: u32 ; + y -> 44: u32 ; + z -> 67: u32 ; + p -> test1::Pair { x = 23: u32; y = 67: u32; } ; + var@5 -> ⊥ : u32 ; + s -> test1::Sum::Right { 0 = true; } ; + o -> ⊥ : test1::One<u64> ; + e0 -> ⊥ : test1::EmptyEnum ; + e1 -> ⊥ : test1::EmptyEnum ; + enum0 -> ⊥ : test1::Enum ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 23: u32 ; + y -> 44: u32 ; + z -> 67: u32 ; + p -> test1::Pair { x = 23: u32; y = 67: u32; } ; + var@5 -> ⊥ : u32 ; + s -> test1::Sum::Right { 0 = true; } ; + o -> ⊥ : test1::One<u64> ; + e0 -> ⊥ : test1::EmptyEnum ; + e1 -> ⊥ : test1::EmptyEnum ; + enum0 -> ⊥ : test1::Enum ; +} + + +- op: +3: u64 + +[[32mDebug[39m] expand_bottom_value_from_projection: +pe: (Expressions.Field ((Expressions.ProjAdt (2, (Some 0))), 0)) +ty: (Types.Adt ((Types.AdtId 2), [], [(Types.Integer Types.U64)])) +[[32mDebug[39m] +**About to evaluate statement**: [ + set_discriminant(o, 0); + set_discriminant(e0, 0); + set_discriminant(enum0, 0); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 23: u32 ; + y -> 44: u32 ; + z -> 67: u32 ; + p -> test1::Pair { x = 23: u32; y = 67: u32; } ; + var@5 -> ⊥ : u32 ; + s -> test1::Sum::Right { 0 = true; } ; + o -> test1::One::One { 0 = 3: u64; } ; + e0 -> ⊥ : test1::EmptyEnum ; + e1 -> ⊥ : test1::EmptyEnum ; + enum0 -> ⊥ : test1::Enum ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + set_discriminant(o, 0) +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 23: u32 ; + y -> 44: u32 ; + z -> 67: u32 ; + p -> test1::Pair { x = 23: u32; y = 67: u32; } ; + var@5 -> ⊥ : u32 ; + s -> test1::Sum::Right { 0 = true; } ; + o -> test1::One::One { 0 = 3: u64; } ; + e0 -> ⊥ : test1::EmptyEnum ; + e1 -> ⊥ : test1::EmptyEnum ; + enum0 -> ⊥ : test1::Enum ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + set_discriminant(e0, 0); + set_discriminant(enum0, 0); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 23: u32 ; + y -> 44: u32 ; + z -> 67: u32 ; + p -> test1::Pair { x = 23: u32; y = 67: u32; } ; + var@5 -> ⊥ : u32 ; + s -> test1::Sum::Right { 0 = true; } ; + o -> test1::One::One { 0 = 3: u64; } ; + e0 -> ⊥ : test1::EmptyEnum ; + e1 -> ⊥ : test1::EmptyEnum ; + enum0 -> ⊥ : test1::Enum ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + set_discriminant(e0, 0) +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 23: u32 ; + y -> 44: u32 ; + z -> 67: u32 ; + p -> test1::Pair { x = 23: u32; y = 67: u32; } ; + var@5 -> ⊥ : u32 ; + s -> test1::Sum::Right { 0 = true; } ; + o -> test1::One::One { 0 = 3: u64; } ; + e0 -> ⊥ : test1::EmptyEnum ; + e1 -> ⊥ : test1::EmptyEnum ; + enum0 -> ⊥ : test1::Enum ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + set_discriminant(enum0, 0); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 23: u32 ; + y -> 44: u32 ; + z -> 67: u32 ; + p -> test1::Pair { x = 23: u32; y = 67: u32; } ; + var@5 -> ⊥ : u32 ; + s -> test1::Sum::Right { 0 = true; } ; + o -> test1::One::One { 0 = 3: u64; } ; + e0 -> test1::EmptyEnum::Empty ; + e1 -> ⊥ : test1::EmptyEnum ; + enum0 -> ⊥ : test1::Enum ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + set_discriminant(enum0, 0) +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 23: u32 ; + y -> 44: u32 ; + z -> 67: u32 ; + p -> test1::Pair { x = 23: u32; y = 67: u32; } ; + var@5 -> ⊥ : u32 ; + s -> test1::Sum::Right { 0 = true; } ; + o -> test1::One::One { 0 = 3: u64; } ; + e0 -> test1::EmptyEnum::Empty ; + e1 -> ⊥ : test1::EmptyEnum ; + enum0 -> ⊥ : test1::Enum ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 23: u32 ; + y -> 44: u32 ; + z -> 67: u32 ; + p -> test1::Pair { x = 23: u32; y = 67: u32; } ; + var@5 -> ⊥ : u32 ; + s -> test1::Sum::Right { 0 = true; } ; + o -> test1::One::One { 0 = 3: u64; } ; + e0 -> test1::EmptyEnum::Empty ; + e1 -> ⊥ : test1::EmptyEnum ; + enum0 -> test1::Enum::Variant1 ; +} + + + +[[32mDebug[39m] test_function_symbolic: get_max +[[32mDebug[39m] +**About to evaluate statement**: [ + var@4 := copy x; + var@5 := copy y; + var@3 := move var@4 >= move var@5; + if (move var@3) { + var@0 := copy x + } + else { + var@0 := copy y + }; + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + var@3 -> ⊥ : bool ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : u32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@4 := copy x +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + var@3 -> ⊥ : bool ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : u32 ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + var@3 -> ⊥ : bool ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : u32 ; +} + + +- op: +copy x + +[[32mDebug[39m] Value to copy: +s@0 : u32 +[[32mDebug[39m] +**About to evaluate statement**: [ + var@5 := copy y; + var@3 := move var@4 >= move var@5; + if (move var@3) { + var@0 := copy x + } + else { + var@0 := copy y + }; + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + var@3 -> ⊥ : bool ; + var@4 -> s@0 : u32 ; + var@5 -> ⊥ : u32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@5 := copy y +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + var@3 -> ⊥ : bool ; + var@4 -> s@0 : u32 ; + var@5 -> ⊥ : u32 ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + var@3 -> ⊥ : bool ; + var@4 -> s@0 : u32 ; + var@5 -> ⊥ : u32 ; +} + + +- op: +copy y + +[[32mDebug[39m] Value to copy: +s@1 : u32 +[[32mDebug[39m] +**About to evaluate statement**: [ + var@3 := move var@4 >= move var@5; + if (move var@3) { + var@0 := copy x + } + else { + var@0 := copy y + }; + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + var@3 -> ⊥ : bool ; + var@4 -> s@0 : u32 ; + var@5 -> s@1 : u32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@3 := move var@4 >= move var@5 +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + var@3 -> ⊥ : bool ; + var@4 -> s@0 : u32 ; + var@5 -> s@1 : u32 ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + var@3 -> ⊥ : bool ; + var@4 -> s@0 : u32 ; + var@5 -> s@1 : u32 ; +} + + +- op: +move var@4 + +[[32mDebug[39m] Value to move: +s@0 : u32 +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + var@3 -> ⊥ : bool ; + var@4 -> ⊥ : u32 ; + var@5 -> s@1 : u32 ; +} + + +- op: +move var@5 + +[[32mDebug[39m] Value to move: +s@1 : u32 +[[32mDebug[39m] +**About to evaluate statement**: [ + if (move var@3) { + var@0 := copy x + } + else { + var@0 := copy y + }; + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + var@3 -> s@2 : bool ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : u32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + if (move var@3) { + var@0 := copy x + } + else { + var@0 := copy y + } +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + var@3 -> s@2 : bool ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : u32 ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + var@3 -> true ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : u32 ; +} + + +- op: +move var@3 + +[[32mDebug[39m] Value to move: +true +[[32mDebug[39m] +**About to evaluate statement**: [ + var@0 := copy x +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + var@3 -> ⊥ : bool ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : u32 ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + var@3 -> ⊥ : bool ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : u32 ; +} + + +- op: +copy x + +[[32mDebug[39m] Value to copy: +s@0 : u32 +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + var@3 -> false ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : u32 ; +} + + +- op: +move var@3 + +[[32mDebug[39m] Value to move: +false +[[32mDebug[39m] +**About to evaluate statement**: [ + var@0 := copy y +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + var@3 -> ⊥ : bool ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : u32 ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + var@3 -> ⊥ : bool ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : u32 ; +} + + +- op: +copy y + +[[32mDebug[39m] Value to copy: +s@1 : u32 +[[32mDebug[39m] +**About to evaluate statement**: [ + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> s@0 : u32 ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + var@3 -> ⊥ : bool ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : u32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> s@1 : u32 ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + var@3 -> ⊥ : bool ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : u32 ; +} + + + +[[32mDebug[39m] test_function_symbolic: test3 +[[32mDebug[39m] +**About to evaluate statement**: [ + x := move get_max(4: u32, 3: u32); + y := move get_max(10: u32, 11: u32); + var@4 := copy x; + var@5 := copy y; + z := copy var@4 + copy var@5; + var@9 := copy z; + var@8 := move var@9 == 15: u32; + var@7 := ¬ move var@8; + assert(¬move var@7); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⊥ : u32 ; + y -> ⊥ : u32 ; + z -> ⊥ : u32 ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : u32 ; + var@6 -> ⊥ : (u32, bool) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : u32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + x := move get_max(4: u32, 3: u32) +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⊥ : u32 ; + y -> ⊥ : u32 ; + z -> ⊥ : u32 ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : u32 ; + var@6 -> ⊥ : (u32, bool) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : u32 ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⊥ : u32 ; + y -> ⊥ : u32 ; + z -> ⊥ : u32 ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : u32 ; + var@6 -> ⊥ : (u32, bool) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : u32 ; +} + + +- op: +4: u32 + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⊥ : u32 ; + y -> ⊥ : u32 ; + z -> ⊥ : u32 ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : u32 ; + var@6 -> ⊥ : (u32, bool) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : u32 ; +} + + +- op: +3: u32 + +[[32mDebug[39m] +**About to evaluate statement**: [ + y := move get_max(10: u32, 11: u32); + var@4 := copy x; + var@5 := copy y; + z := copy var@4 + copy var@5; + var@9 := copy z; + var@8 := move var@9 == 15: u32; + var@7 := ¬ move var@8; + assert(¬move var@7); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> s@0 : u32 ; + y -> ⊥ : u32 ; + z -> ⊥ : u32 ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : u32 ; + var@6 -> ⊥ : (u32, bool) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : u32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + y := move get_max(10: u32, 11: u32) +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> s@0 : u32 ; + y -> ⊥ : u32 ; + z -> ⊥ : u32 ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : u32 ; + var@6 -> ⊥ : (u32, bool) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : u32 ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> s@0 : u32 ; + y -> ⊥ : u32 ; + z -> ⊥ : u32 ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : u32 ; + var@6 -> ⊥ : (u32, bool) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : u32 ; +} + + +- op: +10: u32 + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> s@0 : u32 ; + y -> ⊥ : u32 ; + z -> ⊥ : u32 ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : u32 ; + var@6 -> ⊥ : (u32, bool) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : u32 ; +} + + +- op: +11: u32 + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@4 := copy x; + var@5 := copy y; + z := copy var@4 + copy var@5; + var@9 := copy z; + var@8 := move var@9 == 15: u32; + var@7 := ¬ move var@8; + assert(¬move var@7); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + z -> ⊥ : u32 ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : u32 ; + var@6 -> ⊥ : (u32, bool) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : u32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@4 := copy x +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + z -> ⊥ : u32 ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : u32 ; + var@6 -> ⊥ : (u32, bool) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : u32 ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + z -> ⊥ : u32 ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : u32 ; + var@6 -> ⊥ : (u32, bool) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : u32 ; +} + + +- op: +copy x + +[[32mDebug[39m] Value to copy: +s@0 : u32 +[[32mDebug[39m] +**About to evaluate statement**: [ + var@5 := copy y; + z := copy var@4 + copy var@5; + var@9 := copy z; + var@8 := move var@9 == 15: u32; + var@7 := ¬ move var@8; + assert(¬move var@7); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + z -> ⊥ : u32 ; + var@4 -> s@0 : u32 ; + var@5 -> ⊥ : u32 ; + var@6 -> ⊥ : (u32, bool) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : u32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@5 := copy y +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + z -> ⊥ : u32 ; + var@4 -> s@0 : u32 ; + var@5 -> ⊥ : u32 ; + var@6 -> ⊥ : (u32, bool) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : u32 ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + z -> ⊥ : u32 ; + var@4 -> s@0 : u32 ; + var@5 -> ⊥ : u32 ; + var@6 -> ⊥ : (u32, bool) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : u32 ; +} + + +- op: +copy y + +[[32mDebug[39m] Value to copy: +s@1 : u32 +[[32mDebug[39m] +**About to evaluate statement**: [ + z := copy var@4 + copy var@5; + var@9 := copy z; + var@8 := move var@9 == 15: u32; + var@7 := ¬ move var@8; + assert(¬move var@7); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + z -> ⊥ : u32 ; + var@4 -> s@0 : u32 ; + var@5 -> s@1 : u32 ; + var@6 -> ⊥ : (u32, bool) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : u32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + z := copy var@4 + copy var@5 +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + z -> ⊥ : u32 ; + var@4 -> s@0 : u32 ; + var@5 -> s@1 : u32 ; + var@6 -> ⊥ : (u32, bool) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : u32 ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + z -> ⊥ : u32 ; + var@4 -> s@0 : u32 ; + var@5 -> s@1 : u32 ; + var@6 -> ⊥ : (u32, bool) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : u32 ; +} + + +- op: +copy var@4 + +[[32mDebug[39m] Value to copy: +s@0 : u32 +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + z -> ⊥ : u32 ; + var@4 -> s@0 : u32 ; + var@5 -> s@1 : u32 ; + var@6 -> ⊥ : (u32, bool) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : u32 ; +} + + +- op: +copy var@5 + +[[32mDebug[39m] Value to copy: +s@1 : u32 +[[32mDebug[39m] +**About to evaluate statement**: [ + var@9 := copy z; + var@8 := move var@9 == 15: u32; + var@7 := ¬ move var@8; + assert(¬move var@7); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + z -> s@2 : u32 ; + var@4 -> s@0 : u32 ; + var@5 -> s@1 : u32 ; + var@6 -> ⊥ : (u32, bool) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : u32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@9 := copy z +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + z -> s@2 : u32 ; + var@4 -> s@0 : u32 ; + var@5 -> s@1 : u32 ; + var@6 -> ⊥ : (u32, bool) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : u32 ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + z -> s@2 : u32 ; + var@4 -> s@0 : u32 ; + var@5 -> s@1 : u32 ; + var@6 -> ⊥ : (u32, bool) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : u32 ; +} + + +- op: +copy z + +[[32mDebug[39m] Value to copy: +s@2 : u32 +[[32mDebug[39m] +**About to evaluate statement**: [ + var@8 := move var@9 == 15: u32; + var@7 := ¬ move var@8; + assert(¬move var@7); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + z -> s@2 : u32 ; + var@4 -> s@0 : u32 ; + var@5 -> s@1 : u32 ; + var@6 -> ⊥ : (u32, bool) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> s@2 : u32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@8 := move var@9 == 15: u32 +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + z -> s@2 : u32 ; + var@4 -> s@0 : u32 ; + var@5 -> s@1 : u32 ; + var@6 -> ⊥ : (u32, bool) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> s@2 : u32 ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + z -> s@2 : u32 ; + var@4 -> s@0 : u32 ; + var@5 -> s@1 : u32 ; + var@6 -> ⊥ : (u32, bool) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> s@2 : u32 ; +} + + +- op: +move var@9 + +[[32mDebug[39m] Value to move: +s@2 : u32 +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + z -> s@2 : u32 ; + var@4 -> s@0 : u32 ; + var@5 -> s@1 : u32 ; + var@6 -> ⊥ : (u32, bool) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : u32 ; +} + + +- op: +15: u32 + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@7 := ¬ move var@8; + assert(¬move var@7); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + z -> s@2 : u32 ; + var@4 -> s@0 : u32 ; + var@5 -> s@1 : u32 ; + var@6 -> ⊥ : (u32, bool) ; + var@7 -> ⊥ : bool ; + var@8 -> s@3 : bool ; + var@9 -> ⊥ : u32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@7 := ¬ move var@8 +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + z -> s@2 : u32 ; + var@4 -> s@0 : u32 ; + var@5 -> s@1 : u32 ; + var@6 -> ⊥ : (u32, bool) ; + var@7 -> ⊥ : bool ; + var@8 -> s@3 : bool ; + var@9 -> ⊥ : u32 ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + z -> s@2 : u32 ; + var@4 -> s@0 : u32 ; + var@5 -> s@1 : u32 ; + var@6 -> ⊥ : (u32, bool) ; + var@7 -> ⊥ : bool ; + var@8 -> s@3 : bool ; + var@9 -> ⊥ : u32 ; +} + + +- op: +move var@8 + +[[32mDebug[39m] Value to move: +s@3 : bool +[[32mDebug[39m] +**About to evaluate statement**: [ + assert(¬move var@7); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + z -> s@2 : u32 ; + var@4 -> s@0 : u32 ; + var@5 -> s@1 : u32 ; + var@6 -> ⊥ : (u32, bool) ; + var@7 -> s@4 : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : u32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + assert(¬move var@7) +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + z -> s@2 : u32 ; + var@4 -> s@0 : u32 ; + var@5 -> s@1 : u32 ; + var@6 -> ⊥ : (u32, bool) ; + var@7 -> s@4 : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : u32 ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + z -> s@2 : u32 ; + var@4 -> s@0 : u32 ; + var@5 -> s@1 : u32 ; + var@6 -> ⊥ : (u32, bool) ; + var@7 -> true ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : u32 ; +} + + +- op: +move var@7 + +[[32mDebug[39m] Value to move: +true +[[32mDebug[39m] +**About to evaluate statement**: [ + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> s@0 : u32 ; + y -> s@1 : u32 ; + z -> s@2 : u32 ; + var@4 -> s@0 : u32 ; + var@5 -> s@1 : u32 ; + var@6 -> ⊥ : (u32, bool) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : u32 ; +} + + + +[[32mDebug[39m] test_function_symbolic: test_neg +[[32mDebug[39m] +**About to evaluate statement**: [ + var@2 := copy x; + var@3 := copy var@2 == -2147483648: i32; + assert(¬move var@3); + var@0 := - move var@2; + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : i32 ; + x -> s@0 : i32 ; + var@2 -> ⊥ : i32 ; + var@3 -> ⊥ : bool ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@2 := copy x +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : i32 ; + x -> s@0 : i32 ; + var@2 -> ⊥ : i32 ; + var@3 -> ⊥ : bool ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : i32 ; + x -> s@0 : i32 ; + var@2 -> ⊥ : i32 ; + var@3 -> ⊥ : bool ; +} + + +- op: +copy x + +[[32mDebug[39m] Value to copy: +s@0 : i32 +[[32mDebug[39m] +**About to evaluate statement**: [ + var@3 := copy var@2 == -2147483648: i32; + assert(¬move var@3); + var@0 := - move var@2; + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : i32 ; + x -> s@0 : i32 ; + var@2 -> s@0 : i32 ; + var@3 -> ⊥ : bool ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@3 := copy var@2 == -2147483648: i32 +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : i32 ; + x -> s@0 : i32 ; + var@2 -> s@0 : i32 ; + var@3 -> ⊥ : bool ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : i32 ; + x -> s@0 : i32 ; + var@2 -> s@0 : i32 ; + var@3 -> ⊥ : bool ; +} + + +- op: +copy var@2 + +[[32mDebug[39m] Value to copy: +s@0 : i32 +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : i32 ; + x -> s@0 : i32 ; + var@2 -> s@0 : i32 ; + var@3 -> ⊥ : bool ; +} + + +- op: +-2147483648: i32 + +[[32mDebug[39m] +**About to evaluate statement**: [ + assert(¬move var@3); + var@0 := - move var@2; + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : i32 ; + x -> s@0 : i32 ; + var@2 -> s@0 : i32 ; + var@3 -> s@1 : bool ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + assert(¬move var@3) +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : i32 ; + x -> s@0 : i32 ; + var@2 -> s@0 : i32 ; + var@3 -> s@1 : bool ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : i32 ; + x -> s@0 : i32 ; + var@2 -> s@0 : i32 ; + var@3 -> true ; +} + + +- op: +move var@3 + +[[32mDebug[39m] Value to move: +true +[[32mDebug[39m] +**About to evaluate statement**: [ + var@0 := - move var@2; + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : i32 ; + x -> s@0 : i32 ; + var@2 -> s@0 : i32 ; + var@3 -> ⊥ : bool ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@0 := - move var@2 +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : i32 ; + x -> s@0 : i32 ; + var@2 -> s@0 : i32 ; + var@3 -> ⊥ : bool ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : i32 ; + x -> s@0 : i32 ; + var@2 -> s@0 : i32 ; + var@3 -> ⊥ : bool ; +} + + +- op: +move var@2 + +[[32mDebug[39m] Value to move: +s@0 : i32 +[[32mDebug[39m] +**About to evaluate statement**: [ + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> s@2 : i32 ; + x -> s@0 : i32 ; + var@2 -> ⊥ : i32 ; + var@3 -> ⊥ : bool ; +} + + + +[[32mDebug[39m] test_function_symbolic: test_neg1 +[[32mDebug[39m] +**About to evaluate statement**: [ + x := 3: i32; + y := -3: i32; + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⊥ : i32 ; + y -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + x := 3: i32 +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⊥ : i32 ; + y -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⊥ : i32 ; + y -> ⊥ : i32 ; +} + + +- op: +3: i32 + +[[32mDebug[39m] +**About to evaluate statement**: [ + y := -3: i32; + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 3: i32 ; + y -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + y := -3: i32 +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 3: i32 ; + y -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 3: i32 ; + y -> ⊥ : i32 ; +} + + +- op: +-3: i32 + +[[32mDebug[39m] +**About to evaluate statement**: [ + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 3: i32 ; + y -> -3: i32 ; +} + + + +[[32mDebug[39m] test_function_symbolic: refs_test1 +[[32mDebug[39m] +**About to evaluate statement**: [ + x := 0: i32; + px := &mut x; + ppx := &mut px; + *(*(ppx)) := 1: i32; + var@6 := copy x; + var@5 := move var@6 == 1: i32; + var@4 := ¬ move var@5; + assert(¬move var@4); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⊥ : i32 ; + px -> ⊥ : &'_ mut (i32) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@4 -> ⊥ : bool ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + x := 0: i32 +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⊥ : i32 ; + px -> ⊥ : &'_ mut (i32) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@4 -> ⊥ : bool ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⊥ : i32 ; + px -> ⊥ : &'_ mut (i32) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@4 -> ⊥ : bool ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : i32 ; +} + + +- op: +0: i32 + +[[32mDebug[39m] +**About to evaluate statement**: [ + px := &mut x; + ppx := &mut px; + *(*(ppx)) := 1: i32; + var@6 := copy x; + var@5 := move var@6 == 1: i32; + var@4 := ¬ move var@5; + assert(¬move var@4); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 0: i32 ; + px -> ⊥ : &'_ mut (i32) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@4 -> ⊥ : bool ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + px := &mut x +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 0: i32 ; + px -> ⊥ : &'_ mut (i32) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@4 -> ⊥ : bool ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + ppx := &mut px; + *(*(ppx)) := 1: i32; + var@6 := copy x; + var@5 := move var@6 == 1: i32; + var@4 := ¬ move var@5; + assert(¬move var@4); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + px -> &mut@0 (0: i32) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@4 -> ⊥ : bool ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + ppx := &mut px +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + px -> &mut@0 (0: i32) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@4 -> ⊥ : bool ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + *(*(ppx)) := 1: i32; + var@6 := copy x; + var@5 := move var@6 == 1: i32; + var@4 := ¬ move var@5; + assert(¬move var@4); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + px -> ⌊mut@1⌋ ; + ppx -> &mut@1 (&mut@0 (0: i32)) ; + var@4 -> ⊥ : bool ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + *(*(ppx)) := 1: i32 +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + px -> ⌊mut@1⌋ ; + ppx -> &mut@1 (&mut@0 (0: i32)) ; + var@4 -> ⊥ : bool ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + px -> ⌊mut@1⌋ ; + ppx -> &mut@1 (&mut@0 (0: i32)) ; + var@4 -> ⊥ : bool ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : i32 ; +} + + +- op: +1: i32 + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@6 := copy x; + var@5 := move var@6 == 1: i32; + var@4 := ¬ move var@5; + assert(¬move var@4); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + px -> ⌊mut@1⌋ ; + ppx -> &mut@1 (&mut@0 (1: i32)) ; + var@4 -> ⊥ : bool ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@6 := copy x +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + px -> ⌊mut@1⌋ ; + ppx -> &mut@1 (&mut@0 (1: i32)) ; + var@4 -> ⊥ : bool ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + px -> ⌊mut@1⌋ ; + ppx -> &mut@1 (&mut@0 (1: i32)) ; + var@4 -> ⊥ : bool ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : i32 ; +} + + +- op: +copy x + +[[32mDebug[39m] Value to copy: +1: i32 +[[32mDebug[39m] +**About to evaluate statement**: [ + var@5 := move var@6 == 1: i32; + var@4 := ¬ move var@5; + assert(¬move var@4); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 1: i32 ; + px -> ⊥ : &'_ mut (i32) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@4 -> ⊥ : bool ; + var@5 -> ⊥ : bool ; + var@6 -> 1: i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@5 := move var@6 == 1: i32 +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 1: i32 ; + px -> ⊥ : &'_ mut (i32) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@4 -> ⊥ : bool ; + var@5 -> ⊥ : bool ; + var@6 -> 1: i32 ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 1: i32 ; + px -> ⊥ : &'_ mut (i32) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@4 -> ⊥ : bool ; + var@5 -> ⊥ : bool ; + var@6 -> 1: i32 ; +} + + +- op: +move var@6 + +[[32mDebug[39m] Value to move: +1: i32 +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 1: i32 ; + px -> ⊥ : &'_ mut (i32) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@4 -> ⊥ : bool ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : i32 ; +} + + +- op: +1: i32 + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@4 := ¬ move var@5; + assert(¬move var@4); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 1: i32 ; + px -> ⊥ : &'_ mut (i32) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@4 -> ⊥ : bool ; + var@5 -> s@0 : bool ; + var@6 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@4 := ¬ move var@5 +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 1: i32 ; + px -> ⊥ : &'_ mut (i32) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@4 -> ⊥ : bool ; + var@5 -> s@0 : bool ; + var@6 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 1: i32 ; + px -> ⊥ : &'_ mut (i32) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@4 -> ⊥ : bool ; + var@5 -> s@0 : bool ; + var@6 -> ⊥ : i32 ; +} + + +- op: +move var@5 + +[[32mDebug[39m] Value to move: +s@0 : bool +[[32mDebug[39m] +**About to evaluate statement**: [ + assert(¬move var@4); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 1: i32 ; + px -> ⊥ : &'_ mut (i32) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@4 -> s@1 : bool ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + assert(¬move var@4) +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 1: i32 ; + px -> ⊥ : &'_ mut (i32) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@4 -> s@1 : bool ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 1: i32 ; + px -> ⊥ : &'_ mut (i32) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@4 -> true ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : i32 ; +} + + +- op: +move var@4 + +[[32mDebug[39m] Value to move: +true +[[32mDebug[39m] +**About to evaluate statement**: [ + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 1: i32 ; + px -> ⊥ : &'_ mut (i32) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@4 -> ⊥ : bool ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] test_function_symbolic: refs_test2 +[[32mDebug[39m] +**About to evaluate statement**: [ + x := 0: i32; + y := 1: i32; + px := &mut x; + py := &mut y; + ppx := &mut px; + var@6 := &mut *(py); + *(ppx) := move var@6; + *(*(ppx)) := 2: i32; + var@9 := copy *(px); + var@8 := move var@9 == 2: i32; + var@7 := ¬ move var@8; + assert(¬move var@7); + var@12 := copy x; + var@11 := move var@12 == 0: i32; + var@10 := ¬ move var@11; + assert(¬move var@10); + var@15 := copy *(py); + var@14 := move var@15 == 2: i32; + var@13 := ¬ move var@14; + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 2: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⊥ : i32 ; + y -> ⊥ : i32 ; + px -> ⊥ : &'_ mut (i32) ; + py -> ⊥ : &'_ mut (i32) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : i32 ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + x := 0: i32 +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⊥ : i32 ; + y -> ⊥ : i32 ; + px -> ⊥ : &'_ mut (i32) ; + py -> ⊥ : &'_ mut (i32) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : i32 ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⊥ : i32 ; + y -> ⊥ : i32 ; + px -> ⊥ : &'_ mut (i32) ; + py -> ⊥ : &'_ mut (i32) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : i32 ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + +- op: +0: i32 + +[[32mDebug[39m] +**About to evaluate statement**: [ + y := 1: i32; + px := &mut x; + py := &mut y; + ppx := &mut px; + var@6 := &mut *(py); + *(ppx) := move var@6; + *(*(ppx)) := 2: i32; + var@9 := copy *(px); + var@8 := move var@9 == 2: i32; + var@7 := ¬ move var@8; + assert(¬move var@7); + var@12 := copy x; + var@11 := move var@12 == 0: i32; + var@10 := ¬ move var@11; + assert(¬move var@10); + var@15 := copy *(py); + var@14 := move var@15 == 2: i32; + var@13 := ¬ move var@14; + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 2: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 0: i32 ; + y -> ⊥ : i32 ; + px -> ⊥ : &'_ mut (i32) ; + py -> ⊥ : &'_ mut (i32) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : i32 ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + y := 1: i32 +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 0: i32 ; + y -> ⊥ : i32 ; + px -> ⊥ : &'_ mut (i32) ; + py -> ⊥ : &'_ mut (i32) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : i32 ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 0: i32 ; + y -> ⊥ : i32 ; + px -> ⊥ : &'_ mut (i32) ; + py -> ⊥ : &'_ mut (i32) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : i32 ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + +- op: +1: i32 + +[[32mDebug[39m] +**About to evaluate statement**: [ + px := &mut x; + py := &mut y; + ppx := &mut px; + var@6 := &mut *(py); + *(ppx) := move var@6; + *(*(ppx)) := 2: i32; + var@9 := copy *(px); + var@8 := move var@9 == 2: i32; + var@7 := ¬ move var@8; + assert(¬move var@7); + var@12 := copy x; + var@11 := move var@12 == 0: i32; + var@10 := ¬ move var@11; + assert(¬move var@10); + var@15 := copy *(py); + var@14 := move var@15 == 2: i32; + var@13 := ¬ move var@14; + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 2: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 0: i32 ; + y -> 1: i32 ; + px -> ⊥ : &'_ mut (i32) ; + py -> ⊥ : &'_ mut (i32) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : i32 ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + px := &mut x +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 0: i32 ; + y -> 1: i32 ; + px -> ⊥ : &'_ mut (i32) ; + py -> ⊥ : &'_ mut (i32) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : i32 ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + py := &mut y; + ppx := &mut px; + var@6 := &mut *(py); + *(ppx) := move var@6; + *(*(ppx)) := 2: i32; + var@9 := copy *(px); + var@8 := move var@9 == 2: i32; + var@7 := ¬ move var@8; + assert(¬move var@7); + var@12 := copy x; + var@11 := move var@12 == 0: i32; + var@10 := ¬ move var@11; + assert(¬move var@10); + var@15 := copy *(py); + var@14 := move var@15 == 2: i32; + var@13 := ¬ move var@14; + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 2: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + y -> 1: i32 ; + px -> &mut@0 (0: i32) ; + py -> ⊥ : &'_ mut (i32) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : i32 ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + py := &mut y +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + y -> 1: i32 ; + px -> &mut@0 (0: i32) ; + py -> ⊥ : &'_ mut (i32) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : i32 ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + ppx := &mut px; + var@6 := &mut *(py); + *(ppx) := move var@6; + *(*(ppx)) := 2: i32; + var@9 := copy *(px); + var@8 := move var@9 == 2: i32; + var@7 := ¬ move var@8; + assert(¬move var@7); + var@12 := copy x; + var@11 := move var@12 == 0: i32; + var@10 := ¬ move var@11; + assert(¬move var@10); + var@15 := copy *(py); + var@14 := move var@15 == 2: i32; + var@13 := ¬ move var@14; + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 2: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + y -> ⌊mut@1⌋ ; + px -> &mut@0 (0: i32) ; + py -> &mut@1 (1: i32) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : i32 ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + ppx := &mut px +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + y -> ⌊mut@1⌋ ; + px -> &mut@0 (0: i32) ; + py -> &mut@1 (1: i32) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : i32 ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@6 := &mut *(py); + *(ppx) := move var@6; + *(*(ppx)) := 2: i32; + var@9 := copy *(px); + var@8 := move var@9 == 2: i32; + var@7 := ¬ move var@8; + assert(¬move var@7); + var@12 := copy x; + var@11 := move var@12 == 0: i32; + var@10 := ¬ move var@11; + assert(¬move var@10); + var@15 := copy *(py); + var@14 := move var@15 == 2: i32; + var@13 := ¬ move var@14; + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 2: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + y -> ⌊mut@1⌋ ; + px -> ⌊mut@2⌋ ; + py -> &mut@1 (1: i32) ; + ppx -> &mut@2 (&mut@0 (0: i32)) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : i32 ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@6 := &mut *(py) +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + y -> ⌊mut@1⌋ ; + px -> ⌊mut@2⌋ ; + py -> &mut@1 (1: i32) ; + ppx -> &mut@2 (&mut@0 (0: i32)) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : i32 ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + *(ppx) := move var@6; + *(*(ppx)) := 2: i32; + var@9 := copy *(px); + var@8 := move var@9 == 2: i32; + var@7 := ¬ move var@8; + assert(¬move var@7); + var@12 := copy x; + var@11 := move var@12 == 0: i32; + var@10 := ¬ move var@11; + assert(¬move var@10); + var@15 := copy *(py); + var@14 := move var@15 == 2: i32; + var@13 := ¬ move var@14; + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 2: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + y -> ⌊mut@1⌋ ; + px -> ⌊mut@2⌋ ; + py -> &mut@1 (⌊mut@3⌋) ; + ppx -> &mut@2 (&mut@0 (0: i32)) ; + var@6 -> &mut@3 (1: i32) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : i32 ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + *(ppx) := move var@6 +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + y -> ⌊mut@1⌋ ; + px -> ⌊mut@2⌋ ; + py -> &mut@1 (⌊mut@3⌋) ; + ppx -> &mut@2 (&mut@0 (0: i32)) ; + var@6 -> &mut@3 (1: i32) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : i32 ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + y -> ⌊mut@1⌋ ; + px -> ⌊mut@2⌋ ; + py -> &mut@1 (⌊mut@3⌋) ; + ppx -> &mut@2 (&mut@0 (0: i32)) ; + var@6 -> &mut@3 (1: i32) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : i32 ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + +- op: +move var@6 + +[[32mDebug[39m] Value to move: +&mut@3 (1: i32) +[[32mDebug[39m] +**About to evaluate statement**: [ + *(*(ppx)) := 2: i32; + var@9 := copy *(px); + var@8 := move var@9 == 2: i32; + var@7 := ¬ move var@8; + assert(¬move var@7); + var@12 := copy x; + var@11 := move var@12 == 0: i32; + var@10 := ¬ move var@11; + assert(¬move var@10); + var@15 := copy *(py); + var@14 := move var@15 == 2: i32; + var@13 := ¬ move var@14; + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 2: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 0: i32 ; + y -> ⌊mut@1⌋ ; + px -> ⌊mut@2⌋ ; + py -> &mut@1 (⌊mut@3⌋) ; + ppx -> &mut@2 (&mut@3 (1: i32)) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : i32 ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + *(*(ppx)) := 2: i32 +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 0: i32 ; + y -> ⌊mut@1⌋ ; + px -> ⌊mut@2⌋ ; + py -> &mut@1 (⌊mut@3⌋) ; + ppx -> &mut@2 (&mut@3 (1: i32)) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : i32 ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 0: i32 ; + y -> ⌊mut@1⌋ ; + px -> ⌊mut@2⌋ ; + py -> &mut@1 (⌊mut@3⌋) ; + ppx -> &mut@2 (&mut@3 (1: i32)) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : i32 ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + +- op: +2: i32 + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@9 := copy *(px); + var@8 := move var@9 == 2: i32; + var@7 := ¬ move var@8; + assert(¬move var@7); + var@12 := copy x; + var@11 := move var@12 == 0: i32; + var@10 := ¬ move var@11; + assert(¬move var@10); + var@15 := copy *(py); + var@14 := move var@15 == 2: i32; + var@13 := ¬ move var@14; + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 2: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 0: i32 ; + y -> ⌊mut@1⌋ ; + px -> ⌊mut@2⌋ ; + py -> &mut@1 (⌊mut@3⌋) ; + ppx -> &mut@2 (&mut@3 (2: i32)) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : i32 ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@9 := copy *(px) +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 0: i32 ; + y -> ⌊mut@1⌋ ; + px -> ⌊mut@2⌋ ; + py -> &mut@1 (⌊mut@3⌋) ; + ppx -> &mut@2 (&mut@3 (2: i32)) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : i32 ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 0: i32 ; + y -> ⌊mut@1⌋ ; + px -> ⌊mut@2⌋ ; + py -> &mut@1 (⌊mut@3⌋) ; + ppx -> &mut@2 (&mut@3 (2: i32)) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : i32 ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + +- op: +copy *(px) + +[[32mDebug[39m] Value to copy: +2: i32 +[[32mDebug[39m] +**About to evaluate statement**: [ + var@8 := move var@9 == 2: i32; + var@7 := ¬ move var@8; + assert(¬move var@7); + var@12 := copy x; + var@11 := move var@12 == 0: i32; + var@10 := ¬ move var@11; + assert(¬move var@10); + var@15 := copy *(py); + var@14 := move var@15 == 2: i32; + var@13 := ¬ move var@14; + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 2: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 0: i32 ; + y -> ⌊mut@1⌋ ; + px -> &mut@3 (2: i32) ; + py -> &mut@1 (⌊mut@3⌋) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> 2: i32 ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@8 := move var@9 == 2: i32 +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 0: i32 ; + y -> ⌊mut@1⌋ ; + px -> &mut@3 (2: i32) ; + py -> &mut@1 (⌊mut@3⌋) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> 2: i32 ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 0: i32 ; + y -> ⌊mut@1⌋ ; + px -> &mut@3 (2: i32) ; + py -> &mut@1 (⌊mut@3⌋) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> 2: i32 ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + +- op: +move var@9 + +[[32mDebug[39m] Value to move: +2: i32 +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 0: i32 ; + y -> ⌊mut@1⌋ ; + px -> &mut@3 (2: i32) ; + py -> &mut@1 (⌊mut@3⌋) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : i32 ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + +- op: +2: i32 + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@7 := ¬ move var@8; + assert(¬move var@7); + var@12 := copy x; + var@11 := move var@12 == 0: i32; + var@10 := ¬ move var@11; + assert(¬move var@10); + var@15 := copy *(py); + var@14 := move var@15 == 2: i32; + var@13 := ¬ move var@14; + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 2: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 0: i32 ; + y -> ⌊mut@1⌋ ; + px -> &mut@3 (2: i32) ; + py -> &mut@1 (⌊mut@3⌋) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : bool ; + var@8 -> s@0 : bool ; + var@9 -> ⊥ : i32 ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@7 := ¬ move var@8 +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 0: i32 ; + y -> ⌊mut@1⌋ ; + px -> &mut@3 (2: i32) ; + py -> &mut@1 (⌊mut@3⌋) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : bool ; + var@8 -> s@0 : bool ; + var@9 -> ⊥ : i32 ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 0: i32 ; + y -> ⌊mut@1⌋ ; + px -> &mut@3 (2: i32) ; + py -> &mut@1 (⌊mut@3⌋) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : bool ; + var@8 -> s@0 : bool ; + var@9 -> ⊥ : i32 ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + +- op: +move var@8 + +[[32mDebug[39m] Value to move: +s@0 : bool +[[32mDebug[39m] +**About to evaluate statement**: [ + assert(¬move var@7); + var@12 := copy x; + var@11 := move var@12 == 0: i32; + var@10 := ¬ move var@11; + assert(¬move var@10); + var@15 := copy *(py); + var@14 := move var@15 == 2: i32; + var@13 := ¬ move var@14; + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 2: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 0: i32 ; + y -> ⌊mut@1⌋ ; + px -> &mut@3 (2: i32) ; + py -> &mut@1 (⌊mut@3⌋) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> s@1 : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : i32 ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + assert(¬move var@7) +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 0: i32 ; + y -> ⌊mut@1⌋ ; + px -> &mut@3 (2: i32) ; + py -> &mut@1 (⌊mut@3⌋) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> s@1 : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : i32 ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 0: i32 ; + y -> ⌊mut@1⌋ ; + px -> &mut@3 (2: i32) ; + py -> &mut@1 (⌊mut@3⌋) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> true ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : i32 ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + +- op: +move var@7 + +[[32mDebug[39m] Value to move: +true +[[32mDebug[39m] +**About to evaluate statement**: [ + var@12 := copy x; + var@11 := move var@12 == 0: i32; + var@10 := ¬ move var@11; + assert(¬move var@10); + var@15 := copy *(py); + var@14 := move var@15 == 2: i32; + var@13 := ¬ move var@14; + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 2: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 0: i32 ; + y -> ⌊mut@1⌋ ; + px -> &mut@3 (2: i32) ; + py -> &mut@1 (⌊mut@3⌋) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : i32 ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@12 := copy x +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 0: i32 ; + y -> ⌊mut@1⌋ ; + px -> &mut@3 (2: i32) ; + py -> &mut@1 (⌊mut@3⌋) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : i32 ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 0: i32 ; + y -> ⌊mut@1⌋ ; + px -> &mut@3 (2: i32) ; + py -> &mut@1 (⌊mut@3⌋) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : i32 ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + +- op: +copy x + +[[32mDebug[39m] Value to copy: +0: i32 +[[32mDebug[39m] +**About to evaluate statement**: [ + var@11 := move var@12 == 0: i32; + var@10 := ¬ move var@11; + assert(¬move var@10); + var@15 := copy *(py); + var@14 := move var@15 == 2: i32; + var@13 := ¬ move var@14; + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 2: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 0: i32 ; + y -> ⌊mut@1⌋ ; + px -> &mut@3 (2: i32) ; + py -> &mut@1 (⌊mut@3⌋) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : i32 ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> 0: i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@11 := move var@12 == 0: i32 +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 0: i32 ; + y -> ⌊mut@1⌋ ; + px -> &mut@3 (2: i32) ; + py -> &mut@1 (⌊mut@3⌋) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : i32 ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> 0: i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 0: i32 ; + y -> ⌊mut@1⌋ ; + px -> &mut@3 (2: i32) ; + py -> &mut@1 (⌊mut@3⌋) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : i32 ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> 0: i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + +- op: +move var@12 + +[[32mDebug[39m] Value to move: +0: i32 +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 0: i32 ; + y -> ⌊mut@1⌋ ; + px -> &mut@3 (2: i32) ; + py -> &mut@1 (⌊mut@3⌋) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : i32 ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + +- op: +0: i32 + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@10 := ¬ move var@11; + assert(¬move var@10); + var@15 := copy *(py); + var@14 := move var@15 == 2: i32; + var@13 := ¬ move var@14; + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 2: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 0: i32 ; + y -> ⌊mut@1⌋ ; + px -> &mut@3 (2: i32) ; + py -> &mut@1 (⌊mut@3⌋) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : i32 ; + var@10 -> ⊥ : bool ; + var@11 -> s@2 : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@10 := ¬ move var@11 +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 0: i32 ; + y -> ⌊mut@1⌋ ; + px -> &mut@3 (2: i32) ; + py -> &mut@1 (⌊mut@3⌋) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : i32 ; + var@10 -> ⊥ : bool ; + var@11 -> s@2 : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 0: i32 ; + y -> ⌊mut@1⌋ ; + px -> &mut@3 (2: i32) ; + py -> &mut@1 (⌊mut@3⌋) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : i32 ; + var@10 -> ⊥ : bool ; + var@11 -> s@2 : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + +- op: +move var@11 + +[[32mDebug[39m] Value to move: +s@2 : bool +[[32mDebug[39m] +**About to evaluate statement**: [ + assert(¬move var@10); + var@15 := copy *(py); + var@14 := move var@15 == 2: i32; + var@13 := ¬ move var@14; + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 2: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 0: i32 ; + y -> ⌊mut@1⌋ ; + px -> &mut@3 (2: i32) ; + py -> &mut@1 (⌊mut@3⌋) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : i32 ; + var@10 -> s@3 : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + assert(¬move var@10) +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 0: i32 ; + y -> ⌊mut@1⌋ ; + px -> &mut@3 (2: i32) ; + py -> &mut@1 (⌊mut@3⌋) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : i32 ; + var@10 -> s@3 : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 0: i32 ; + y -> ⌊mut@1⌋ ; + px -> &mut@3 (2: i32) ; + py -> &mut@1 (⌊mut@3⌋) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : i32 ; + var@10 -> true ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + +- op: +move var@10 + +[[32mDebug[39m] Value to move: +true +[[32mDebug[39m] +**About to evaluate statement**: [ + var@15 := copy *(py); + var@14 := move var@15 == 2: i32; + var@13 := ¬ move var@14; + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 2: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 0: i32 ; + y -> ⌊mut@1⌋ ; + px -> &mut@3 (2: i32) ; + py -> &mut@1 (⌊mut@3⌋) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : i32 ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@15 := copy *(py) +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 0: i32 ; + y -> ⌊mut@1⌋ ; + px -> &mut@3 (2: i32) ; + py -> &mut@1 (⌊mut@3⌋) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : i32 ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 0: i32 ; + y -> ⌊mut@1⌋ ; + px -> &mut@3 (2: i32) ; + py -> &mut@1 (⌊mut@3⌋) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : i32 ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + +- op: +copy *(py) + +[[32mDebug[39m] Value to copy: +2: i32 +[[32mDebug[39m] +**About to evaluate statement**: [ + var@14 := move var@15 == 2: i32; + var@13 := ¬ move var@14; + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 2: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 0: i32 ; + y -> ⌊mut@1⌋ ; + px -> ⊥ : &'_ mut (i32) ; + py -> &mut@1 (2: i32) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : i32 ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> 2: i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@14 := move var@15 == 2: i32 +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 0: i32 ; + y -> ⌊mut@1⌋ ; + px -> ⊥ : &'_ mut (i32) ; + py -> &mut@1 (2: i32) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : i32 ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> 2: i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 0: i32 ; + y -> ⌊mut@1⌋ ; + px -> ⊥ : &'_ mut (i32) ; + py -> &mut@1 (2: i32) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : i32 ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> 2: i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + +- op: +move var@15 + +[[32mDebug[39m] Value to move: +2: i32 +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 0: i32 ; + y -> ⌊mut@1⌋ ; + px -> ⊥ : &'_ mut (i32) ; + py -> &mut@1 (2: i32) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : i32 ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + +- op: +2: i32 + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@13 := ¬ move var@14; + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 2: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 0: i32 ; + y -> ⌊mut@1⌋ ; + px -> ⊥ : &'_ mut (i32) ; + py -> &mut@1 (2: i32) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : i32 ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> s@4 : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@13 := ¬ move var@14 +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 0: i32 ; + y -> ⌊mut@1⌋ ; + px -> ⊥ : &'_ mut (i32) ; + py -> &mut@1 (2: i32) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : i32 ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> s@4 : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 0: i32 ; + y -> ⌊mut@1⌋ ; + px -> ⊥ : &'_ mut (i32) ; + py -> &mut@1 (2: i32) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : i32 ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> s@4 : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + +- op: +move var@14 + +[[32mDebug[39m] Value to move: +s@4 : bool +[[32mDebug[39m] +**About to evaluate statement**: [ + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 2: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 0: i32 ; + y -> ⌊mut@1⌋ ; + px -> ⊥ : &'_ mut (i32) ; + py -> &mut@1 (2: i32) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : i32 ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> s@5 : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + assert(¬move var@13) +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 0: i32 ; + y -> ⌊mut@1⌋ ; + px -> ⊥ : &'_ mut (i32) ; + py -> &mut@1 (2: i32) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : i32 ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> s@5 : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 0: i32 ; + y -> ⌊mut@1⌋ ; + px -> ⊥ : &'_ mut (i32) ; + py -> &mut@1 (2: i32) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : i32 ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> true ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + +- op: +move var@13 + +[[32mDebug[39m] Value to move: +true +[[32mDebug[39m] +**About to evaluate statement**: [ + var@18 := copy y; + var@17 := move var@18 == 2: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 0: i32 ; + y -> ⌊mut@1⌋ ; + px -> ⊥ : &'_ mut (i32) ; + py -> &mut@1 (2: i32) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : i32 ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@18 := copy y +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 0: i32 ; + y -> ⌊mut@1⌋ ; + px -> ⊥ : &'_ mut (i32) ; + py -> &mut@1 (2: i32) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : i32 ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 0: i32 ; + y -> ⌊mut@1⌋ ; + px -> ⊥ : &'_ mut (i32) ; + py -> &mut@1 (2: i32) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : i32 ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + +- op: +copy y + +[[32mDebug[39m] Value to copy: +2: i32 +[[32mDebug[39m] +**About to evaluate statement**: [ + var@17 := move var@18 == 2: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 0: i32 ; + y -> 2: i32 ; + px -> ⊥ : &'_ mut (i32) ; + py -> ⊥ : &'_ mut (i32) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : i32 ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> 2: i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@17 := move var@18 == 2: i32 +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 0: i32 ; + y -> 2: i32 ; + px -> ⊥ : &'_ mut (i32) ; + py -> ⊥ : &'_ mut (i32) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : i32 ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> 2: i32 ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 0: i32 ; + y -> 2: i32 ; + px -> ⊥ : &'_ mut (i32) ; + py -> ⊥ : &'_ mut (i32) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : i32 ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> 2: i32 ; +} + + +- op: +move var@18 + +[[32mDebug[39m] Value to move: +2: i32 +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 0: i32 ; + y -> 2: i32 ; + px -> ⊥ : &'_ mut (i32) ; + py -> ⊥ : &'_ mut (i32) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : i32 ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + +- op: +2: i32 + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 0: i32 ; + y -> 2: i32 ; + px -> ⊥ : &'_ mut (i32) ; + py -> ⊥ : &'_ mut (i32) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : i32 ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> s@6 : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@16 := ¬ move var@17 +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 0: i32 ; + y -> 2: i32 ; + px -> ⊥ : &'_ mut (i32) ; + py -> ⊥ : &'_ mut (i32) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : i32 ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> s@6 : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 0: i32 ; + y -> 2: i32 ; + px -> ⊥ : &'_ mut (i32) ; + py -> ⊥ : &'_ mut (i32) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : i32 ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> s@6 : bool ; + var@18 -> ⊥ : i32 ; +} + + +- op: +move var@17 + +[[32mDebug[39m] Value to move: +s@6 : bool +[[32mDebug[39m] +**About to evaluate statement**: [ + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 0: i32 ; + y -> 2: i32 ; + px -> ⊥ : &'_ mut (i32) ; + py -> ⊥ : &'_ mut (i32) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : i32 ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> s@7 : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + assert(¬move var@16) +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 0: i32 ; + y -> 2: i32 ; + px -> ⊥ : &'_ mut (i32) ; + py -> ⊥ : &'_ mut (i32) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : i32 ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> s@7 : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 0: i32 ; + y -> 2: i32 ; + px -> ⊥ : &'_ mut (i32) ; + py -> ⊥ : &'_ mut (i32) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : i32 ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> true ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + +- op: +move var@16 + +[[32mDebug[39m] Value to move: +true +[[32mDebug[39m] +**About to evaluate statement**: [ + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 0: i32 ; + y -> 2: i32 ; + px -> ⊥ : &'_ mut (i32) ; + py -> ⊥ : &'_ mut (i32) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : i32 ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] test_function_symbolic: test_list1 +[[32mDebug[39m] +**About to evaluate statement**: [ + set_discriminant(var@3, 1); + var@2 := move alloc::boxed::Box<test1::List<i32>>::new(move var@3); + (l as test1::List::Cons).0 := 0: i32; + (l as test1::List::Cons).1 := move var@2; + set_discriminant(l, 0); + drop(l); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List<i32> ; + var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ; + var@3 -> ⊥ : test1::List<i32> ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + set_discriminant(var@3, 1) +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List<i32> ; + var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ; + var@3 -> ⊥ : test1::List<i32> ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@2 := move alloc::boxed::Box<test1::List<i32>>::new(move var@3); + (l as test1::List::Cons).0 := 0: i32; + (l as test1::List::Cons).1 := move var@2; + set_discriminant(l, 0); + drop(l); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List<i32> ; + var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ; + var@3 -> test1::List::Nil ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@2 := move alloc::boxed::Box<test1::List<i32>>::new(move var@3) +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List<i32> ; + var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ; + var@3 -> test1::List::Nil ; +} + + + +[[32mDebug[39m] eval_non_local_function_call: +- fid:CfimAst.BoxNew +- type_params: [test1::List<i32>] +- args: [move var@3] +- dest: var@2 +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List<i32> ; + var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ; + var@3 -> test1::List::Nil ; +} + + +- op: +move var@3 + +[[32mDebug[39m] Value to move: +test1::List::Nil +[[32mDebug[39m] +**About to evaluate statement**: [ + (l as test1::List::Cons).0 := 0: i32; + (l as test1::List::Cons).1 := move var@2; + set_discriminant(l, 0); + drop(l); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List<i32> ; + var@2 -> s@0 : std::boxed::Box<test1::List<i32>> ; + var@3 -> ⊥ : test1::List<i32> ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + (l as test1::List::Cons).0 := 0: i32 +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List<i32> ; + var@2 -> s@0 : std::boxed::Box<test1::List<i32>> ; + var@3 -> ⊥ : test1::List<i32> ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List<i32> ; + var@2 -> s@0 : std::boxed::Box<test1::List<i32>> ; + var@3 -> ⊥ : test1::List<i32> ; +} + + +- op: +0: i32 + +[[32mDebug[39m] expand_bottom_value_from_projection: +pe: (Expressions.Field ((Expressions.ProjAdt (1, (Some 0))), 0)) +ty: (Types.Adt ((Types.AdtId 1), [], [(Types.Integer Types.I32)])) +[[32mDebug[39m] +**About to evaluate statement**: [ + (l as test1::List::Cons).1 := move var@2; + set_discriminant(l, 0); + drop(l); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> test1::List::Cons { 0 = 0: i32; 1 = ⊥ : std::boxed::Box<test1::List<i32>>; } ; + var@2 -> s@0 : std::boxed::Box<test1::List<i32>> ; + var@3 -> ⊥ : test1::List<i32> ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + (l as test1::List::Cons).1 := move var@2 +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> test1::List::Cons { 0 = 0: i32; 1 = ⊥ : std::boxed::Box<test1::List<i32>>; } ; + var@2 -> s@0 : std::boxed::Box<test1::List<i32>> ; + var@3 -> ⊥ : test1::List<i32> ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> test1::List::Cons { 0 = 0: i32; 1 = ⊥ : std::boxed::Box<test1::List<i32>>; } ; + var@2 -> s@0 : std::boxed::Box<test1::List<i32>> ; + var@3 -> ⊥ : test1::List<i32> ; +} + + +- op: +move var@2 + +[[32mDebug[39m] Value to move: +s@0 : std::boxed::Box<test1::List<i32>> +[[32mDebug[39m] +**About to evaluate statement**: [ + set_discriminant(l, 0); + drop(l); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box<test1::List<i32>>; } ; + var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ; + var@3 -> ⊥ : test1::List<i32> ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + set_discriminant(l, 0) +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box<test1::List<i32>>; } ; + var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ; + var@3 -> ⊥ : test1::List<i32> ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + drop(l); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box<test1::List<i32>>; } ; + var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ; + var@3 -> ⊥ : test1::List<i32> ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + drop(l) +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box<test1::List<i32>>; } ; + var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ; + var@3 -> ⊥ : test1::List<i32> ; +} + + + +[[32mDebug[39m] drop_value: place: l +[[32mDebug[39m] +**About to evaluate statement**: [ + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List<i32> ; + var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ; + var@3 -> ⊥ : test1::List<i32> ; +} + + + +[[32mDebug[39m] test_function_symbolic: test_box1 +[[32mDebug[39m] +**About to evaluate statement**: [ + b := move alloc::boxed::Box<i32>::new(0: i32); + var@3 := &two-phase b; + x := move core::ops::deref::DerefMut<i32>::deref_mut(move var@3); + *(x) := 1: i32; + var@5 := &b; + x := move core::ops::deref::Deref<Box<i32>>::deref(move var@5); + var@8 := copy *(x); + var@7 := move var@8 == 1: i32; + var@6 := ¬ move var@7; + assert(¬move var@6); + drop(b); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + b -> ⊥ : std::boxed::Box<i32> ; + x -> ⊥ : &'_ mut (i32) ; + var@3 -> ⊥ : &'_ mut (std::boxed::Box<i32>) ; + x -> ⊥ : &'_ (i32) ; + var@5 -> ⊥ : &'_ (std::boxed::Box<i32>) ; + var@6 -> ⊥ : bool ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + b := move alloc::boxed::Box<i32>::new(0: i32) +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + b -> ⊥ : std::boxed::Box<i32> ; + x -> ⊥ : &'_ mut (i32) ; + var@3 -> ⊥ : &'_ mut (std::boxed::Box<i32>) ; + x -> ⊥ : &'_ (i32) ; + var@5 -> ⊥ : &'_ (std::boxed::Box<i32>) ; + var@6 -> ⊥ : bool ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] eval_non_local_function_call: +- fid:CfimAst.BoxNew +- type_params: [i32] +- args: [0: i32] +- dest: b +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + b -> ⊥ : std::boxed::Box<i32> ; + x -> ⊥ : &'_ mut (i32) ; + var@3 -> ⊥ : &'_ mut (std::boxed::Box<i32>) ; + x -> ⊥ : &'_ (i32) ; + var@5 -> ⊥ : &'_ (std::boxed::Box<i32>) ; + var@6 -> ⊥ : bool ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : i32 ; +} + + +- op: +0: i32 + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@3 := &two-phase b; + x := move core::ops::deref::DerefMut<i32>::deref_mut(move var@3); + *(x) := 1: i32; + var@5 := &b; + x := move core::ops::deref::Deref<Box<i32>>::deref(move var@5); + var@8 := copy *(x); + var@7 := move var@8 == 1: i32; + var@6 := ¬ move var@7; + assert(¬move var@6); + drop(b); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + b -> s@0 : std::boxed::Box<i32> ; + x -> ⊥ : &'_ mut (i32) ; + var@3 -> ⊥ : &'_ mut (std::boxed::Box<i32>) ; + x -> ⊥ : &'_ (i32) ; + var@5 -> ⊥ : &'_ (std::boxed::Box<i32>) ; + var@6 -> ⊥ : bool ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@3 := &two-phase b +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + b -> s@0 : std::boxed::Box<i32> ; + x -> ⊥ : &'_ mut (i32) ; + var@3 -> ⊥ : &'_ mut (std::boxed::Box<i32>) ; + x -> ⊥ : &'_ (i32) ; + var@5 -> ⊥ : &'_ (std::boxed::Box<i32>) ; + var@6 -> ⊥ : bool ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + x := move core::ops::deref::DerefMut<i32>::deref_mut(move var@3); + *(x) := 1: i32; + var@5 := &b; + x := move core::ops::deref::Deref<Box<i32>>::deref(move var@5); + var@8 := copy *(x); + var@7 := move var@8 == 1: i32; + var@6 := ¬ move var@7; + assert(¬move var@6); + drop(b); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + b -> @shared_loan({0}, s@0 : std::boxed::Box<i32>) ; + x -> ⊥ : &'_ mut (i32) ; + var@3 -> ⌊inactivated_mut@0⌋ ; + x -> ⊥ : &'_ (i32) ; + var@5 -> ⊥ : &'_ (std::boxed::Box<i32>) ; + var@6 -> ⊥ : bool ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + x := move core::ops::deref::DerefMut<i32>::deref_mut(move var@3) +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + b -> @shared_loan({0}, s@0 : std::boxed::Box<i32>) ; + x -> ⊥ : &'_ mut (i32) ; + var@3 -> ⌊inactivated_mut@0⌋ ; + x -> ⊥ : &'_ (i32) ; + var@5 -> ⊥ : &'_ (std::boxed::Box<i32>) ; + var@6 -> ⊥ : bool ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] eval_non_local_function_call: +- fid:CfimAst.BoxDerefMut +- type_params: [i32] +- args: [move var@3] +- dest: x +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + b -> @shared_loan({0}, s@0 : std::boxed::Box<i32>) ; + x -> ⊥ : &'_ mut (i32) ; + var@3 -> ⌊inactivated_mut@0⌋ ; + x -> ⊥ : &'_ (i32) ; + var@5 -> ⊥ : &'_ (std::boxed::Box<i32>) ; + var@6 -> ⊥ : bool ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : i32 ; +} + + +- op: +move var@3 + +[[32mDebug[39m] activate_inactivated_mut_borrow: resulting value: +{ Values.value = + (Values.Symbolic + { Values.sv_id = 0; + sv_ty = + (Types.Adt ((Types.Assumed Types.Box), [], [(Types.Integer Types.I32)] + )) + }); + ty = + (Types.Adt ((Types.Assumed Types.Box), [], [(Types.Integer Types.I32)])) } +[[32mDebug[39m] Value to move: +&mut@0 (s@0 : std::boxed::Box<i32>) +[[32mDebug[39m] +**About to evaluate statement**: [ + *(x) := 1: i32; + var@5 := &b; + x := move core::ops::deref::Deref<Box<i32>>::deref(move var@5); + var@8 := copy *(x); + var@7 := move var@8 == 1: i32; + var@6 := ¬ move var@7; + assert(¬move var@6); + drop(b); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + b -> ⌊mut@0⌋ ; + x -> s@1 : &r@0 mut (i32) ; + var@3 -> ⊥ : &'_ mut (std::boxed::Box<i32>) ; + x -> ⊥ : &'_ (i32) ; + var@5 -> ⊥ : &'_ (std::boxed::Box<i32>) ; + var@6 -> ⊥ : bool ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : i32 ; + abs@0{parents={}}{regions={0}} { + &mut@0 (proj_borrows (s@0 : std::boxed::Box<i32> <: std::boxed::Box<i32>)), + proj_loans (s@1 : &r@0 mut (i32)) + } +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + *(x) := 1: i32 +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + b -> ⌊mut@0⌋ ; + x -> s@1 : &r@0 mut (i32) ; + var@3 -> ⊥ : &'_ mut (std::boxed::Box<i32>) ; + x -> ⊥ : &'_ (i32) ; + var@5 -> ⊥ : &'_ (std::boxed::Box<i32>) ; + var@6 -> ⊥ : bool ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : i32 ; + abs@0{parents={}}{regions={0}} { + &mut@0 (proj_borrows (s@0 : std::boxed::Box<i32> <: std::boxed::Box<i32>)), + proj_loans (s@1 : &r@0 mut (i32)) + } +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + b -> ⌊mut@0⌋ ; + x -> s@1 : &r@0 mut (i32) ; + var@3 -> ⊥ : &'_ mut (std::boxed::Box<i32>) ; + x -> ⊥ : &'_ (i32) ; + var@5 -> ⊥ : &'_ (std::boxed::Box<i32>) ; + var@6 -> ⊥ : bool ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : i32 ; + abs@0{parents={}}{regions={0}} { + &mut@0 (proj_borrows (s@0 : std::boxed::Box<i32> <: std::boxed::Box<i32>)), + proj_loans (s@1 : &r@0 mut (i32)) + } +} + + +- op: +1: i32 + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@5 := &b; + x := move core::ops::deref::Deref<Box<i32>>::deref(move var@5); + var@8 := copy *(x); + var@7 := move var@8 == 1: i32; + var@6 := ¬ move var@7; + assert(¬move var@6); + drop(b); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + b -> ⌊mut@0⌋ ; + x -> &mut@1 (1: i32) ; + var@3 -> ⊥ : &'_ mut (std::boxed::Box<i32>) ; + x -> ⊥ : &'_ (i32) ; + var@5 -> ⊥ : &'_ (std::boxed::Box<i32>) ; + var@6 -> ⊥ : bool ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : i32 ; + abs@0{parents={}}{regions={0}} { + &mut@0 (proj_borrows (s@0 : std::boxed::Box<i32> <: std::boxed::Box<i32>)), + ⌊mut@1, proj_loans (s@2 : i32)⌋ + } +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@5 := &b +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + b -> ⌊mut@0⌋ ; + x -> &mut@1 (1: i32) ; + var@3 -> ⊥ : &'_ mut (std::boxed::Box<i32>) ; + x -> ⊥ : &'_ (i32) ; + var@5 -> ⊥ : &'_ (std::boxed::Box<i32>) ; + var@6 -> ⊥ : bool ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : i32 ; + abs@0{parents={}}{regions={0}} { + &mut@0 (proj_borrows (s@0 : std::boxed::Box<i32> <: std::boxed::Box<i32>)), + ⌊mut@1, proj_loans (s@2 : i32)⌋ + } +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + x := move core::ops::deref::Deref<Box<i32>>::deref(move var@5); + var@8 := copy *(x); + var@7 := move var@8 == 1: i32; + var@6 := ¬ move var@7; + assert(¬move var@6); + drop(b); + return +] + +**Context**: +# Ended regions: {0} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + b -> @shared_loan({2}, s@3 : std::boxed::Box<i32>) ; + x -> ⊥ : &'_ mut (i32) ; + var@3 -> ⊥ : &'_ mut (std::boxed::Box<i32>) ; + x -> ⊥ : &'_ (i32) ; + var@5 -> ⌊shared@2⌋ ; + var@6 -> ⊥ : bool ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + x := move core::ops::deref::Deref<Box<i32>>::deref(move var@5) +] + +**Context**: +# Ended regions: {0} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + b -> @shared_loan({2}, s@3 : std::boxed::Box<i32>) ; + x -> ⊥ : &'_ mut (i32) ; + var@3 -> ⊥ : &'_ mut (std::boxed::Box<i32>) ; + x -> ⊥ : &'_ (i32) ; + var@5 -> ⌊shared@2⌋ ; + var@6 -> ⊥ : bool ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] eval_non_local_function_call: +- fid:CfimAst.BoxDeref +- type_params: [i32] +- args: [move var@5] +- dest: x +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {0} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + b -> @shared_loan({2}, s@3 : std::boxed::Box<i32>) ; + x -> ⊥ : &'_ mut (i32) ; + var@3 -> ⊥ : &'_ mut (std::boxed::Box<i32>) ; + x -> ⊥ : &'_ (i32) ; + var@5 -> ⌊shared@2⌋ ; + var@6 -> ⊥ : bool ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : i32 ; +} + + +- op: +move var@5 + +[[32mDebug[39m] Value to move: +⌊shared@2⌋ +[[32mDebug[39m] +**About to evaluate statement**: [ + var@8 := copy *(x); + var@7 := move var@8 == 1: i32; + var@6 := ¬ move var@7; + assert(¬move var@6); + drop(b); + return +] + +**Context**: +# Ended regions: {0} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + b -> @shared_loan({2}, s@3 : std::boxed::Box<i32>) ; + x -> ⊥ : &'_ mut (i32) ; + var@3 -> ⊥ : &'_ mut (std::boxed::Box<i32>) ; + x -> s@4 : &r@1 (i32) ; + var@5 -> ⊥ : &'_ (std::boxed::Box<i32>) ; + var@6 -> ⊥ : bool ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : i32 ; + abs@1{parents={}}{regions={1}} { + ⌊shared@2⌋, + proj_loans (s@4 : &r@1 (i32)) + } +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@8 := copy *(x) +] + +**Context**: +# Ended regions: {0} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + b -> @shared_loan({2}, s@3 : std::boxed::Box<i32>) ; + x -> ⊥ : &'_ mut (i32) ; + var@3 -> ⊥ : &'_ mut (std::boxed::Box<i32>) ; + x -> s@4 : &r@1 (i32) ; + var@5 -> ⊥ : &'_ (std::boxed::Box<i32>) ; + var@6 -> ⊥ : bool ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : i32 ; + abs@1{parents={}}{regions={1}} { + ⌊shared@2⌋, + proj_loans (s@4 : &r@1 (i32)) + } +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {0} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + b -> @shared_loan({2}, s@3 : std::boxed::Box<i32>) ; + x -> ⊥ : &'_ mut (i32) ; + var@3 -> ⊥ : &'_ mut (std::boxed::Box<i32>) ; + x -> s@4 : &r@1 (i32) ; + var@5 -> ⊥ : &'_ (std::boxed::Box<i32>) ; + var@6 -> ⊥ : bool ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : i32 ; + abs@1{parents={}}{regions={1}} { + ⌊shared@2⌋, + proj_loans (s@4 : &r@1 (i32)) + } +} + + +- op: +copy *(x) + +[[32mDebug[39m] Value to copy: +s@5 : i32 +[[32mDebug[39m] +**About to evaluate statement**: [ + var@7 := move var@8 == 1: i32; + var@6 := ¬ move var@7; + assert(¬move var@6); + drop(b); + return +] + +**Context**: +# Ended regions: {0} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + b -> @shared_loan({2}, s@3 : std::boxed::Box<i32>) ; + x -> ⊥ : &'_ mut (i32) ; + var@3 -> ⊥ : &'_ mut (std::boxed::Box<i32>) ; + x -> ⌊shared@3⌋ ; + var@5 -> ⊥ : &'_ (std::boxed::Box<i32>) ; + var@6 -> ⊥ : bool ; + var@7 -> ⊥ : bool ; + var@8 -> s@5 : i32 ; + abs@1{parents={}}{regions={1}} { + ⌊shared@2⌋, + @shared_loan({3}, s@5 : i32, proj_loans (s@5 : i32)) + } +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@7 := move var@8 == 1: i32 +] + +**Context**: +# Ended regions: {0} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + b -> @shared_loan({2}, s@3 : std::boxed::Box<i32>) ; + x -> ⊥ : &'_ mut (i32) ; + var@3 -> ⊥ : &'_ mut (std::boxed::Box<i32>) ; + x -> ⌊shared@3⌋ ; + var@5 -> ⊥ : &'_ (std::boxed::Box<i32>) ; + var@6 -> ⊥ : bool ; + var@7 -> ⊥ : bool ; + var@8 -> s@5 : i32 ; + abs@1{parents={}}{regions={1}} { + ⌊shared@2⌋, + @shared_loan({3}, s@5 : i32, proj_loans (s@5 : i32)) + } +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {0} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + b -> @shared_loan({2}, s@3 : std::boxed::Box<i32>) ; + x -> ⊥ : &'_ mut (i32) ; + var@3 -> ⊥ : &'_ mut (std::boxed::Box<i32>) ; + x -> ⌊shared@3⌋ ; + var@5 -> ⊥ : &'_ (std::boxed::Box<i32>) ; + var@6 -> ⊥ : bool ; + var@7 -> ⊥ : bool ; + var@8 -> s@5 : i32 ; + abs@1{parents={}}{regions={1}} { + ⌊shared@2⌋, + @shared_loan({3}, s@5 : i32, proj_loans (s@5 : i32)) + } +} + + +- op: +move var@8 + +[[32mDebug[39m] Value to move: +s@5 : i32 +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {0} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + b -> @shared_loan({2}, s@3 : std::boxed::Box<i32>) ; + x -> ⊥ : &'_ mut (i32) ; + var@3 -> ⊥ : &'_ mut (std::boxed::Box<i32>) ; + x -> ⌊shared@3⌋ ; + var@5 -> ⊥ : &'_ (std::boxed::Box<i32>) ; + var@6 -> ⊥ : bool ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : i32 ; + abs@1{parents={}}{regions={1}} { + ⌊shared@2⌋, + @shared_loan({3}, s@5 : i32, proj_loans (s@5 : i32)) + } +} + + +- op: +1: i32 + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@6 := ¬ move var@7; + assert(¬move var@6); + drop(b); + return +] + +**Context**: +# Ended regions: {0} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + b -> @shared_loan({2}, s@3 : std::boxed::Box<i32>) ; + x -> ⊥ : &'_ mut (i32) ; + var@3 -> ⊥ : &'_ mut (std::boxed::Box<i32>) ; + x -> ⌊shared@3⌋ ; + var@5 -> ⊥ : &'_ (std::boxed::Box<i32>) ; + var@6 -> ⊥ : bool ; + var@7 -> s@6 : bool ; + var@8 -> ⊥ : i32 ; + abs@1{parents={}}{regions={1}} { + ⌊shared@2⌋, + @shared_loan({3}, s@5 : i32, proj_loans (s@5 : i32)) + } +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@6 := ¬ move var@7 +] + +**Context**: +# Ended regions: {0} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + b -> @shared_loan({2}, s@3 : std::boxed::Box<i32>) ; + x -> ⊥ : &'_ mut (i32) ; + var@3 -> ⊥ : &'_ mut (std::boxed::Box<i32>) ; + x -> ⌊shared@3⌋ ; + var@5 -> ⊥ : &'_ (std::boxed::Box<i32>) ; + var@6 -> ⊥ : bool ; + var@7 -> s@6 : bool ; + var@8 -> ⊥ : i32 ; + abs@1{parents={}}{regions={1}} { + ⌊shared@2⌋, + @shared_loan({3}, s@5 : i32, proj_loans (s@5 : i32)) + } +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {0} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + b -> @shared_loan({2}, s@3 : std::boxed::Box<i32>) ; + x -> ⊥ : &'_ mut (i32) ; + var@3 -> ⊥ : &'_ mut (std::boxed::Box<i32>) ; + x -> ⌊shared@3⌋ ; + var@5 -> ⊥ : &'_ (std::boxed::Box<i32>) ; + var@6 -> ⊥ : bool ; + var@7 -> s@6 : bool ; + var@8 -> ⊥ : i32 ; + abs@1{parents={}}{regions={1}} { + ⌊shared@2⌋, + @shared_loan({3}, s@5 : i32, proj_loans (s@5 : i32)) + } +} + + +- op: +move var@7 + +[[32mDebug[39m] Value to move: +s@6 : bool +[[32mDebug[39m] +**About to evaluate statement**: [ + assert(¬move var@6); + drop(b); + return +] + +**Context**: +# Ended regions: {0} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + b -> @shared_loan({2}, s@3 : std::boxed::Box<i32>) ; + x -> ⊥ : &'_ mut (i32) ; + var@3 -> ⊥ : &'_ mut (std::boxed::Box<i32>) ; + x -> ⌊shared@3⌋ ; + var@5 -> ⊥ : &'_ (std::boxed::Box<i32>) ; + var@6 -> s@7 : bool ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : i32 ; + abs@1{parents={}}{regions={1}} { + ⌊shared@2⌋, + @shared_loan({3}, s@5 : i32, proj_loans (s@5 : i32)) + } +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + assert(¬move var@6) +] + +**Context**: +# Ended regions: {0} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + b -> @shared_loan({2}, s@3 : std::boxed::Box<i32>) ; + x -> ⊥ : &'_ mut (i32) ; + var@3 -> ⊥ : &'_ mut (std::boxed::Box<i32>) ; + x -> ⌊shared@3⌋ ; + var@5 -> ⊥ : &'_ (std::boxed::Box<i32>) ; + var@6 -> s@7 : bool ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : i32 ; + abs@1{parents={}}{regions={1}} { + ⌊shared@2⌋, + @shared_loan({3}, s@5 : i32, proj_loans (s@5 : i32)) + } +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {0} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + b -> @shared_loan({2}, s@3 : std::boxed::Box<i32>) ; + x -> ⊥ : &'_ mut (i32) ; + var@3 -> ⊥ : &'_ mut (std::boxed::Box<i32>) ; + x -> ⌊shared@3⌋ ; + var@5 -> ⊥ : &'_ (std::boxed::Box<i32>) ; + var@6 -> true ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : i32 ; + abs@1{parents={}}{regions={1}} { + ⌊shared@2⌋, + @shared_loan({3}, s@5 : i32, proj_loans (s@5 : i32)) + } +} + + +- op: +move var@6 + +[[32mDebug[39m] Value to move: +true +[[32mDebug[39m] +**About to evaluate statement**: [ + drop(b); + return +] + +**Context**: +# Ended regions: {0} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + b -> @shared_loan({2}, s@3 : std::boxed::Box<i32>) ; + x -> ⊥ : &'_ mut (i32) ; + var@3 -> ⊥ : &'_ mut (std::boxed::Box<i32>) ; + x -> ⌊shared@3⌋ ; + var@5 -> ⊥ : &'_ (std::boxed::Box<i32>) ; + var@6 -> ⊥ : bool ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : i32 ; + abs@1{parents={}}{regions={1}} { + ⌊shared@2⌋, + @shared_loan({3}, s@5 : i32, proj_loans (s@5 : i32)) + } +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + drop(b) +] + +**Context**: +# Ended regions: {0} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + b -> @shared_loan({2}, s@3 : std::boxed::Box<i32>) ; + x -> ⊥ : &'_ mut (i32) ; + var@3 -> ⊥ : &'_ mut (std::boxed::Box<i32>) ; + x -> ⌊shared@3⌋ ; + var@5 -> ⊥ : &'_ (std::boxed::Box<i32>) ; + var@6 -> ⊥ : bool ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : i32 ; + abs@1{parents={}}{regions={1}} { + ⌊shared@2⌋, + @shared_loan({3}, s@5 : i32, proj_loans (s@5 : i32)) + } +} + + + +[[32mDebug[39m] drop_value: place: b +[[32mDebug[39m] +**About to evaluate statement**: [ + return +] + +**Context**: +# Ended regions: {0, 1} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + b -> ⊥ : std::boxed::Box<i32> ; + x -> ⊥ : &'_ mut (i32) ; + var@3 -> ⊥ : &'_ mut (std::boxed::Box<i32>) ; + x -> ⊥ : &'_ (i32) ; + var@5 -> ⊥ : &'_ (std::boxed::Box<i32>) ; + var@6 -> ⊥ : bool ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] test_function_symbolic: copy_int +[[32mDebug[39m] +**About to evaluate statement**: [ + var@0 := copy x; + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : i32 ; + x -> s@0 : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@0 := copy x +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : i32 ; + x -> s@0 : i32 ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : i32 ; + x -> s@0 : i32 ; +} + + +- op: +copy x + +[[32mDebug[39m] Value to copy: +s@0 : i32 +[[32mDebug[39m] +**About to evaluate statement**: [ + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> s@0 : i32 ; + x -> s@0 : i32 ; +} + + + +[[32mDebug[39m] test_function_symbolic: test_copy_int +[[32mDebug[39m] +**About to evaluate statement**: [ + x := 0: i32; + px := &x; + var@4 := copy x; + y := move copy_int(move var@4); + var@7 := copy *(px); + var@8 := copy y; + var@6 := move var@7 == move var@8; + var@5 := ¬ move var@6; + assert(¬move var@5); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⊥ : i32 ; + px -> ⊥ : &'_ (i32) ; + y -> ⊥ : i32 ; + var@4 -> ⊥ : i32 ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : bool ; + var@7 -> ⊥ : i32 ; + var@8 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + x := 0: i32 +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⊥ : i32 ; + px -> ⊥ : &'_ (i32) ; + y -> ⊥ : i32 ; + var@4 -> ⊥ : i32 ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : bool ; + var@7 -> ⊥ : i32 ; + var@8 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⊥ : i32 ; + px -> ⊥ : &'_ (i32) ; + y -> ⊥ : i32 ; + var@4 -> ⊥ : i32 ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : bool ; + var@7 -> ⊥ : i32 ; + var@8 -> ⊥ : i32 ; +} + + +- op: +0: i32 + +[[32mDebug[39m] +**About to evaluate statement**: [ + px := &x; + var@4 := copy x; + y := move copy_int(move var@4); + var@7 := copy *(px); + var@8 := copy y; + var@6 := move var@7 == move var@8; + var@5 := ¬ move var@6; + assert(¬move var@5); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 0: i32 ; + px -> ⊥ : &'_ (i32) ; + y -> ⊥ : i32 ; + var@4 -> ⊥ : i32 ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : bool ; + var@7 -> ⊥ : i32 ; + var@8 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + px := &x +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 0: i32 ; + px -> ⊥ : &'_ (i32) ; + y -> ⊥ : i32 ; + var@4 -> ⊥ : i32 ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : bool ; + var@7 -> ⊥ : i32 ; + var@8 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@4 := copy x; + y := move copy_int(move var@4); + var@7 := copy *(px); + var@8 := copy y; + var@6 := move var@7 == move var@8; + var@5 := ¬ move var@6; + assert(¬move var@5); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> @shared_loan({0}, 0: i32) ; + px -> ⌊shared@0⌋ ; + y -> ⊥ : i32 ; + var@4 -> ⊥ : i32 ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : bool ; + var@7 -> ⊥ : i32 ; + var@8 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@4 := copy x +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> @shared_loan({0}, 0: i32) ; + px -> ⌊shared@0⌋ ; + y -> ⊥ : i32 ; + var@4 -> ⊥ : i32 ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : bool ; + var@7 -> ⊥ : i32 ; + var@8 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> @shared_loan({0}, 0: i32) ; + px -> ⌊shared@0⌋ ; + y -> ⊥ : i32 ; + var@4 -> ⊥ : i32 ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : bool ; + var@7 -> ⊥ : i32 ; + var@8 -> ⊥ : i32 ; +} + + +- op: +copy x + +[[32mDebug[39m] Value to copy: +@shared_loan({0}, 0: i32) +[[32mDebug[39m] +**About to evaluate statement**: [ + y := move copy_int(move var@4); + var@7 := copy *(px); + var@8 := copy y; + var@6 := move var@7 == move var@8; + var@5 := ¬ move var@6; + assert(¬move var@5); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> @shared_loan({0}, 0: i32) ; + px -> ⌊shared@0⌋ ; + y -> ⊥ : i32 ; + var@4 -> 0: i32 ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : bool ; + var@7 -> ⊥ : i32 ; + var@8 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + y := move copy_int(move var@4) +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> @shared_loan({0}, 0: i32) ; + px -> ⌊shared@0⌋ ; + y -> ⊥ : i32 ; + var@4 -> 0: i32 ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : bool ; + var@7 -> ⊥ : i32 ; + var@8 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> @shared_loan({0}, 0: i32) ; + px -> ⌊shared@0⌋ ; + y -> ⊥ : i32 ; + var@4 -> 0: i32 ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : bool ; + var@7 -> ⊥ : i32 ; + var@8 -> ⊥ : i32 ; +} + + +- op: +move var@4 + +[[32mDebug[39m] Value to move: +0: i32 +[[32mDebug[39m] +**About to evaluate statement**: [ + var@7 := copy *(px); + var@8 := copy y; + var@6 := move var@7 == move var@8; + var@5 := ¬ move var@6; + assert(¬move var@5); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> @shared_loan({0}, 0: i32) ; + px -> ⌊shared@0⌋ ; + y -> s@0 : i32 ; + var@4 -> ⊥ : i32 ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : bool ; + var@7 -> ⊥ : i32 ; + var@8 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@7 := copy *(px) +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> @shared_loan({0}, 0: i32) ; + px -> ⌊shared@0⌋ ; + y -> s@0 : i32 ; + var@4 -> ⊥ : i32 ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : bool ; + var@7 -> ⊥ : i32 ; + var@8 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> @shared_loan({0}, 0: i32) ; + px -> ⌊shared@0⌋ ; + y -> s@0 : i32 ; + var@4 -> ⊥ : i32 ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : bool ; + var@7 -> ⊥ : i32 ; + var@8 -> ⊥ : i32 ; +} + + +- op: +copy *(px) + +[[32mDebug[39m] Value to copy: +0: i32 +[[32mDebug[39m] +**About to evaluate statement**: [ + var@8 := copy y; + var@6 := move var@7 == move var@8; + var@5 := ¬ move var@6; + assert(¬move var@5); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> @shared_loan({0}, 0: i32) ; + px -> ⌊shared@0⌋ ; + y -> s@0 : i32 ; + var@4 -> ⊥ : i32 ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : bool ; + var@7 -> 0: i32 ; + var@8 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@8 := copy y +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> @shared_loan({0}, 0: i32) ; + px -> ⌊shared@0⌋ ; + y -> s@0 : i32 ; + var@4 -> ⊥ : i32 ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : bool ; + var@7 -> 0: i32 ; + var@8 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> @shared_loan({0}, 0: i32) ; + px -> ⌊shared@0⌋ ; + y -> s@0 : i32 ; + var@4 -> ⊥ : i32 ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : bool ; + var@7 -> 0: i32 ; + var@8 -> ⊥ : i32 ; +} + + +- op: +copy y + +[[32mDebug[39m] Value to copy: +s@0 : i32 +[[32mDebug[39m] +**About to evaluate statement**: [ + var@6 := move var@7 == move var@8; + var@5 := ¬ move var@6; + assert(¬move var@5); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> @shared_loan({0}, 0: i32) ; + px -> ⌊shared@0⌋ ; + y -> s@0 : i32 ; + var@4 -> ⊥ : i32 ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : bool ; + var@7 -> 0: i32 ; + var@8 -> s@0 : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@6 := move var@7 == move var@8 +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> @shared_loan({0}, 0: i32) ; + px -> ⌊shared@0⌋ ; + y -> s@0 : i32 ; + var@4 -> ⊥ : i32 ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : bool ; + var@7 -> 0: i32 ; + var@8 -> s@0 : i32 ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> @shared_loan({0}, 0: i32) ; + px -> ⌊shared@0⌋ ; + y -> s@0 : i32 ; + var@4 -> ⊥ : i32 ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : bool ; + var@7 -> 0: i32 ; + var@8 -> s@0 : i32 ; +} + + +- op: +move var@7 + +[[32mDebug[39m] Value to move: +0: i32 +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> @shared_loan({0}, 0: i32) ; + px -> ⌊shared@0⌋ ; + y -> s@0 : i32 ; + var@4 -> ⊥ : i32 ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : bool ; + var@7 -> ⊥ : i32 ; + var@8 -> s@0 : i32 ; +} + + +- op: +move var@8 + +[[32mDebug[39m] Value to move: +s@0 : i32 +[[32mDebug[39m] +**About to evaluate statement**: [ + var@5 := ¬ move var@6; + assert(¬move var@5); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> @shared_loan({0}, 0: i32) ; + px -> ⌊shared@0⌋ ; + y -> s@0 : i32 ; + var@4 -> ⊥ : i32 ; + var@5 -> ⊥ : bool ; + var@6 -> s@1 : bool ; + var@7 -> ⊥ : i32 ; + var@8 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@5 := ¬ move var@6 +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> @shared_loan({0}, 0: i32) ; + px -> ⌊shared@0⌋ ; + y -> s@0 : i32 ; + var@4 -> ⊥ : i32 ; + var@5 -> ⊥ : bool ; + var@6 -> s@1 : bool ; + var@7 -> ⊥ : i32 ; + var@8 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> @shared_loan({0}, 0: i32) ; + px -> ⌊shared@0⌋ ; + y -> s@0 : i32 ; + var@4 -> ⊥ : i32 ; + var@5 -> ⊥ : bool ; + var@6 -> s@1 : bool ; + var@7 -> ⊥ : i32 ; + var@8 -> ⊥ : i32 ; +} + + +- op: +move var@6 + +[[32mDebug[39m] Value to move: +s@1 : bool +[[32mDebug[39m] +**About to evaluate statement**: [ + assert(¬move var@5); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> @shared_loan({0}, 0: i32) ; + px -> ⌊shared@0⌋ ; + y -> s@0 : i32 ; + var@4 -> ⊥ : i32 ; + var@5 -> s@2 : bool ; + var@6 -> ⊥ : bool ; + var@7 -> ⊥ : i32 ; + var@8 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + assert(¬move var@5) +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> @shared_loan({0}, 0: i32) ; + px -> ⌊shared@0⌋ ; + y -> s@0 : i32 ; + var@4 -> ⊥ : i32 ; + var@5 -> s@2 : bool ; + var@6 -> ⊥ : bool ; + var@7 -> ⊥ : i32 ; + var@8 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> @shared_loan({0}, 0: i32) ; + px -> ⌊shared@0⌋ ; + y -> s@0 : i32 ; + var@4 -> ⊥ : i32 ; + var@5 -> true ; + var@6 -> ⊥ : bool ; + var@7 -> ⊥ : i32 ; + var@8 -> ⊥ : i32 ; +} + + +- op: +move var@5 + +[[32mDebug[39m] Value to move: +true +[[32mDebug[39m] +**About to evaluate statement**: [ + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> @shared_loan({0}, 0: i32) ; + px -> ⌊shared@0⌋ ; + y -> s@0 : i32 ; + var@4 -> ⊥ : i32 ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : bool ; + var@7 -> ⊥ : i32 ; + var@8 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] test_function_symbolic: is_cons +[[32mDebug[39m] +**About to evaluate statement**: [ + var@2 := discriminant(*(l)); + switch (move var@2) { + 0: isize => { + var@0 := true + } + 1: isize => { + var@0 := false + } + _ => { + panic + } + }; + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + abs@0{parents={}}{regions={0}} { + proj_loans (s@0 : &r@0 (test1::List<T>)) + } + var@0 -> ⊥ : bool ; + l -> s@0 : &r@0 (test1::List<T>) ; + var@2 -> ⊥ : isize ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@2 := discriminant(*(l)) +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + abs@0{parents={}}{regions={0}} { + proj_loans (s@0 : &r@0 (test1::List<T>)) + } + var@0 -> ⊥ : bool ; + l -> s@0 : &r@0 (test1::List<T>) ; + var@2 -> ⊥ : isize ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + switch (move var@2) { + 0: isize => { + var@0 := true + } + 1: isize => { + var@0 := false + } + _ => { + panic + } + }; + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + abs@0{parents={}}{regions={0}} { + @shared_loan({0}, test1::List::Cons { 0 = s@2 : T; 1 = s@3 : std::boxed::Box<test1::List<T>>; }, test1::List::Cons { 0 = proj_loans (s@2 : T); 1 = proj_loans (s@3 : std::boxed::Box<test1::List<T>>); }) + } + var@0 -> ⊥ : bool ; + l -> ⌊shared@0⌋ ; + var@2 -> 0: isize ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + switch (move var@2) { + 0: isize => { + var@0 := true + } + 1: isize => { + var@0 := false + } + _ => { + panic + } + } +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + abs@0{parents={}}{regions={0}} { + @shared_loan({0}, test1::List::Cons { 0 = s@2 : T; 1 = s@3 : std::boxed::Box<test1::List<T>>; }, test1::List::Cons { 0 = proj_loans (s@2 : T); 1 = proj_loans (s@3 : std::boxed::Box<test1::List<T>>); }) + } + var@0 -> ⊥ : bool ; + l -> ⌊shared@0⌋ ; + var@2 -> 0: isize ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + abs@0{parents={}}{regions={0}} { + @shared_loan({0}, test1::List::Cons { 0 = s@2 : T; 1 = s@3 : std::boxed::Box<test1::List<T>>; }, test1::List::Cons { 0 = proj_loans (s@2 : T); 1 = proj_loans (s@3 : std::boxed::Box<test1::List<T>>); }) + } + var@0 -> ⊥ : bool ; + l -> ⌊shared@0⌋ ; + var@2 -> 0: isize ; +} + + +- op: +move var@2 + +[[32mDebug[39m] Value to move: +0: isize +[[32mDebug[39m] +**About to evaluate statement**: [ + var@0 := true +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + abs@0{parents={}}{regions={0}} { + @shared_loan({0}, test1::List::Cons { 0 = s@2 : T; 1 = s@3 : std::boxed::Box<test1::List<T>>; }, test1::List::Cons { 0 = proj_loans (s@2 : T); 1 = proj_loans (s@3 : std::boxed::Box<test1::List<T>>); }) + } + var@0 -> ⊥ : bool ; + l -> ⌊shared@0⌋ ; + var@2 -> ⊥ : isize ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + abs@0{parents={}}{regions={0}} { + @shared_loan({0}, test1::List::Cons { 0 = s@2 : T; 1 = s@3 : std::boxed::Box<test1::List<T>>; }, test1::List::Cons { 0 = proj_loans (s@2 : T); 1 = proj_loans (s@3 : std::boxed::Box<test1::List<T>>); }) + } + var@0 -> ⊥ : bool ; + l -> ⌊shared@0⌋ ; + var@2 -> ⊥ : isize ; +} + + +- op: +true + +[[32mDebug[39m] +**About to evaluate statement**: [ + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + abs@0{parents={}}{regions={0}} { + @shared_loan({0}, test1::List::Cons { 0 = s@2 : T; 1 = s@3 : std::boxed::Box<test1::List<T>>; }, test1::List::Cons { 0 = proj_loans (s@2 : T); 1 = proj_loans (s@3 : std::boxed::Box<test1::List<T>>); }) + } + var@0 -> true ; + l -> ⌊shared@0⌋ ; + var@2 -> ⊥ : isize ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + switch (move var@2) { + 0: isize => { + var@0 := true + } + 1: isize => { + var@0 := false + } + _ => { + panic + } + }; + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + abs@0{parents={}}{regions={0}} { + @shared_loan({0}, test1::List::Nil, test1::List::Nil) + } + var@0 -> ⊥ : bool ; + l -> ⌊shared@0⌋ ; + var@2 -> 1: isize ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + switch (move var@2) { + 0: isize => { + var@0 := true + } + 1: isize => { + var@0 := false + } + _ => { + panic + } + } +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + abs@0{parents={}}{regions={0}} { + @shared_loan({0}, test1::List::Nil, test1::List::Nil) + } + var@0 -> ⊥ : bool ; + l -> ⌊shared@0⌋ ; + var@2 -> 1: isize ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + abs@0{parents={}}{regions={0}} { + @shared_loan({0}, test1::List::Nil, test1::List::Nil) + } + var@0 -> ⊥ : bool ; + l -> ⌊shared@0⌋ ; + var@2 -> 1: isize ; +} + + +- op: +move var@2 + +[[32mDebug[39m] Value to move: +1: isize +[[32mDebug[39m] +**About to evaluate statement**: [ + var@0 := false +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + abs@0{parents={}}{regions={0}} { + @shared_loan({0}, test1::List::Nil, test1::List::Nil) + } + var@0 -> ⊥ : bool ; + l -> ⌊shared@0⌋ ; + var@2 -> ⊥ : isize ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + abs@0{parents={}}{regions={0}} { + @shared_loan({0}, test1::List::Nil, test1::List::Nil) + } + var@0 -> ⊥ : bool ; + l -> ⌊shared@0⌋ ; + var@2 -> ⊥ : isize ; +} + + +- op: +false + +[[32mDebug[39m] +**About to evaluate statement**: [ + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + abs@0{parents={}}{regions={0}} { + @shared_loan({0}, test1::List::Nil, test1::List::Nil) + } + var@0 -> false ; + l -> ⌊shared@0⌋ ; + var@2 -> ⊥ : isize ; +} + + + +[[32mDebug[39m] test_function_symbolic: test_is_cons +[[32mDebug[39m] +**About to evaluate statement**: [ + set_discriminant(var@3, 1); + var@2 := move alloc::boxed::Box<test1::List<i32>>::new(move var@3); + (l as test1::List::Cons).0 := 0: i32; + (l as test1::List::Cons).1 := move var@2; + set_discriminant(l, 0); + var@7 := &l; + var@6 := copy var@7; + var@5 := move is_cons<i32>(move var@6); + var@4 := ¬ move var@5; + assert(¬move var@4); + drop(l); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List<i32> ; + var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ; + var@3 -> ⊥ : test1::List<i32> ; + var@4 -> ⊥ : bool ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : &'_ (test1::List<i32>) ; + var@7 -> ⊥ : &'_ (test1::List<i32>) ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + set_discriminant(var@3, 1) +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List<i32> ; + var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ; + var@3 -> ⊥ : test1::List<i32> ; + var@4 -> ⊥ : bool ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : &'_ (test1::List<i32>) ; + var@7 -> ⊥ : &'_ (test1::List<i32>) ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@2 := move alloc::boxed::Box<test1::List<i32>>::new(move var@3); + (l as test1::List::Cons).0 := 0: i32; + (l as test1::List::Cons).1 := move var@2; + set_discriminant(l, 0); + var@7 := &l; + var@6 := copy var@7; + var@5 := move is_cons<i32>(move var@6); + var@4 := ¬ move var@5; + assert(¬move var@4); + drop(l); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List<i32> ; + var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ; + var@3 -> test1::List::Nil ; + var@4 -> ⊥ : bool ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : &'_ (test1::List<i32>) ; + var@7 -> ⊥ : &'_ (test1::List<i32>) ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@2 := move alloc::boxed::Box<test1::List<i32>>::new(move var@3) +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List<i32> ; + var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ; + var@3 -> test1::List::Nil ; + var@4 -> ⊥ : bool ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : &'_ (test1::List<i32>) ; + var@7 -> ⊥ : &'_ (test1::List<i32>) ; +} + + + +[[32mDebug[39m] eval_non_local_function_call: +- fid:CfimAst.BoxNew +- type_params: [test1::List<i32>] +- args: [move var@3] +- dest: var@2 +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List<i32> ; + var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ; + var@3 -> test1::List::Nil ; + var@4 -> ⊥ : bool ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : &'_ (test1::List<i32>) ; + var@7 -> ⊥ : &'_ (test1::List<i32>) ; +} + + +- op: +move var@3 + +[[32mDebug[39m] Value to move: +test1::List::Nil +[[32mDebug[39m] +**About to evaluate statement**: [ + (l as test1::List::Cons).0 := 0: i32; + (l as test1::List::Cons).1 := move var@2; + set_discriminant(l, 0); + var@7 := &l; + var@6 := copy var@7; + var@5 := move is_cons<i32>(move var@6); + var@4 := ¬ move var@5; + assert(¬move var@4); + drop(l); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List<i32> ; + var@2 -> s@0 : std::boxed::Box<test1::List<i32>> ; + var@3 -> ⊥ : test1::List<i32> ; + var@4 -> ⊥ : bool ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : &'_ (test1::List<i32>) ; + var@7 -> ⊥ : &'_ (test1::List<i32>) ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + (l as test1::List::Cons).0 := 0: i32 +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List<i32> ; + var@2 -> s@0 : std::boxed::Box<test1::List<i32>> ; + var@3 -> ⊥ : test1::List<i32> ; + var@4 -> ⊥ : bool ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : &'_ (test1::List<i32>) ; + var@7 -> ⊥ : &'_ (test1::List<i32>) ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List<i32> ; + var@2 -> s@0 : std::boxed::Box<test1::List<i32>> ; + var@3 -> ⊥ : test1::List<i32> ; + var@4 -> ⊥ : bool ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : &'_ (test1::List<i32>) ; + var@7 -> ⊥ : &'_ (test1::List<i32>) ; +} + + +- op: +0: i32 + +[[32mDebug[39m] expand_bottom_value_from_projection: +pe: (Expressions.Field ((Expressions.ProjAdt (1, (Some 0))), 0)) +ty: (Types.Adt ((Types.AdtId 1), [], [(Types.Integer Types.I32)])) +[[32mDebug[39m] +**About to evaluate statement**: [ + (l as test1::List::Cons).1 := move var@2; + set_discriminant(l, 0); + var@7 := &l; + var@6 := copy var@7; + var@5 := move is_cons<i32>(move var@6); + var@4 := ¬ move var@5; + assert(¬move var@4); + drop(l); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> test1::List::Cons { 0 = 0: i32; 1 = ⊥ : std::boxed::Box<test1::List<i32>>; } ; + var@2 -> s@0 : std::boxed::Box<test1::List<i32>> ; + var@3 -> ⊥ : test1::List<i32> ; + var@4 -> ⊥ : bool ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : &'_ (test1::List<i32>) ; + var@7 -> ⊥ : &'_ (test1::List<i32>) ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + (l as test1::List::Cons).1 := move var@2 +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> test1::List::Cons { 0 = 0: i32; 1 = ⊥ : std::boxed::Box<test1::List<i32>>; } ; + var@2 -> s@0 : std::boxed::Box<test1::List<i32>> ; + var@3 -> ⊥ : test1::List<i32> ; + var@4 -> ⊥ : bool ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : &'_ (test1::List<i32>) ; + var@7 -> ⊥ : &'_ (test1::List<i32>) ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> test1::List::Cons { 0 = 0: i32; 1 = ⊥ : std::boxed::Box<test1::List<i32>>; } ; + var@2 -> s@0 : std::boxed::Box<test1::List<i32>> ; + var@3 -> ⊥ : test1::List<i32> ; + var@4 -> ⊥ : bool ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : &'_ (test1::List<i32>) ; + var@7 -> ⊥ : &'_ (test1::List<i32>) ; +} + + +- op: +move var@2 + +[[32mDebug[39m] Value to move: +s@0 : std::boxed::Box<test1::List<i32>> +[[32mDebug[39m] +**About to evaluate statement**: [ + set_discriminant(l, 0); + var@7 := &l; + var@6 := copy var@7; + var@5 := move is_cons<i32>(move var@6); + var@4 := ¬ move var@5; + assert(¬move var@4); + drop(l); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box<test1::List<i32>>; } ; + var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ; + var@3 -> ⊥ : test1::List<i32> ; + var@4 -> ⊥ : bool ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : &'_ (test1::List<i32>) ; + var@7 -> ⊥ : &'_ (test1::List<i32>) ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + set_discriminant(l, 0) +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box<test1::List<i32>>; } ; + var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ; + var@3 -> ⊥ : test1::List<i32> ; + var@4 -> ⊥ : bool ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : &'_ (test1::List<i32>) ; + var@7 -> ⊥ : &'_ (test1::List<i32>) ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@7 := &l; + var@6 := copy var@7; + var@5 := move is_cons<i32>(move var@6); + var@4 := ¬ move var@5; + assert(¬move var@4); + drop(l); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box<test1::List<i32>>; } ; + var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ; + var@3 -> ⊥ : test1::List<i32> ; + var@4 -> ⊥ : bool ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : &'_ (test1::List<i32>) ; + var@7 -> ⊥ : &'_ (test1::List<i32>) ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@7 := &l +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box<test1::List<i32>>; } ; + var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ; + var@3 -> ⊥ : test1::List<i32> ; + var@4 -> ⊥ : bool ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : &'_ (test1::List<i32>) ; + var@7 -> ⊥ : &'_ (test1::List<i32>) ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@6 := copy var@7; + var@5 := move is_cons<i32>(move var@6); + var@4 := ¬ move var@5; + assert(¬move var@4); + drop(l); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> @shared_loan({0}, test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box<test1::List<i32>>; }) ; + var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ; + var@3 -> ⊥ : test1::List<i32> ; + var@4 -> ⊥ : bool ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : &'_ (test1::List<i32>) ; + var@7 -> ⌊shared@0⌋ ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@6 := copy var@7 +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> @shared_loan({0}, test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box<test1::List<i32>>; }) ; + var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ; + var@3 -> ⊥ : test1::List<i32> ; + var@4 -> ⊥ : bool ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : &'_ (test1::List<i32>) ; + var@7 -> ⌊shared@0⌋ ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> @shared_loan({0}, test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box<test1::List<i32>>; }) ; + var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ; + var@3 -> ⊥ : test1::List<i32> ; + var@4 -> ⊥ : bool ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : &'_ (test1::List<i32>) ; + var@7 -> ⌊shared@0⌋ ; +} + + +- op: +copy var@7 + +[[32mDebug[39m] Value to copy: +⌊shared@0⌋ +[[32mDebug[39m] +**About to evaluate statement**: [ + var@5 := move is_cons<i32>(move var@6); + var@4 := ¬ move var@5; + assert(¬move var@4); + drop(l); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> @shared_loan({0, 1}, test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box<test1::List<i32>>; }) ; + var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ; + var@3 -> ⊥ : test1::List<i32> ; + var@4 -> ⊥ : bool ; + var@5 -> ⊥ : bool ; + var@6 -> ⌊shared@1⌋ ; + var@7 -> ⌊shared@0⌋ ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@5 := move is_cons<i32>(move var@6) +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> @shared_loan({0, 1}, test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box<test1::List<i32>>; }) ; + var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ; + var@3 -> ⊥ : test1::List<i32> ; + var@4 -> ⊥ : bool ; + var@5 -> ⊥ : bool ; + var@6 -> ⌊shared@1⌋ ; + var@7 -> ⌊shared@0⌋ ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> @shared_loan({0, 1}, test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box<test1::List<i32>>; }) ; + var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ; + var@3 -> ⊥ : test1::List<i32> ; + var@4 -> ⊥ : bool ; + var@5 -> ⊥ : bool ; + var@6 -> ⌊shared@1⌋ ; + var@7 -> ⌊shared@0⌋ ; +} + + +- op: +move var@6 + +[[32mDebug[39m] Value to move: +⌊shared@1⌋ +[[32mDebug[39m] +**About to evaluate statement**: [ + var@4 := ¬ move var@5; + assert(¬move var@4); + drop(l); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> @shared_loan({0, 1}, test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box<test1::List<i32>>; }) ; + var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ; + var@3 -> ⊥ : test1::List<i32> ; + var@4 -> ⊥ : bool ; + var@5 -> s@1 : bool ; + var@6 -> ⊥ : &'_ (test1::List<i32>) ; + var@7 -> ⌊shared@0⌋ ; + abs@0{parents={}}{regions={0}} { + ⌊shared@1⌋, + proj_loans (s@1 : bool) + } +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@4 := ¬ move var@5 +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> @shared_loan({0, 1}, test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box<test1::List<i32>>; }) ; + var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ; + var@3 -> ⊥ : test1::List<i32> ; + var@4 -> ⊥ : bool ; + var@5 -> s@1 : bool ; + var@6 -> ⊥ : &'_ (test1::List<i32>) ; + var@7 -> ⌊shared@0⌋ ; + abs@0{parents={}}{regions={0}} { + ⌊shared@1⌋, + proj_loans (s@1 : bool) + } +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> @shared_loan({0, 1}, test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box<test1::List<i32>>; }) ; + var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ; + var@3 -> ⊥ : test1::List<i32> ; + var@4 -> ⊥ : bool ; + var@5 -> s@1 : bool ; + var@6 -> ⊥ : &'_ (test1::List<i32>) ; + var@7 -> ⌊shared@0⌋ ; + abs@0{parents={}}{regions={0}} { + ⌊shared@1⌋, + proj_loans (s@1 : bool) + } +} + + +- op: +move var@5 + +[[32mDebug[39m] Value to move: +s@1 : bool +[[32mDebug[39m] +**About to evaluate statement**: [ + assert(¬move var@4); + drop(l); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> @shared_loan({0, 1}, test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box<test1::List<i32>>; }) ; + var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ; + var@3 -> ⊥ : test1::List<i32> ; + var@4 -> s@2 : bool ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : &'_ (test1::List<i32>) ; + var@7 -> ⌊shared@0⌋ ; + abs@0{parents={}}{regions={0}} { + ⌊shared@1⌋, + proj_loans (s@1 : bool) + } +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + assert(¬move var@4) +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> @shared_loan({0, 1}, test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box<test1::List<i32>>; }) ; + var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ; + var@3 -> ⊥ : test1::List<i32> ; + var@4 -> s@2 : bool ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : &'_ (test1::List<i32>) ; + var@7 -> ⌊shared@0⌋ ; + abs@0{parents={}}{regions={0}} { + ⌊shared@1⌋, + proj_loans (s@1 : bool) + } +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> @shared_loan({0, 1}, test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box<test1::List<i32>>; }) ; + var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ; + var@3 -> ⊥ : test1::List<i32> ; + var@4 -> true ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : &'_ (test1::List<i32>) ; + var@7 -> ⌊shared@0⌋ ; + abs@0{parents={}}{regions={0}} { + ⌊shared@1⌋, + proj_loans (s@1 : bool) + } +} + + +- op: +move var@4 + +[[32mDebug[39m] Value to move: +true +[[32mDebug[39m] +**About to evaluate statement**: [ + drop(l); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> @shared_loan({0, 1}, test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box<test1::List<i32>>; }) ; + var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ; + var@3 -> ⊥ : test1::List<i32> ; + var@4 -> ⊥ : bool ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : &'_ (test1::List<i32>) ; + var@7 -> ⌊shared@0⌋ ; + abs@0{parents={}}{regions={0}} { + ⌊shared@1⌋, + proj_loans (s@1 : bool) + } +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + drop(l) +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> @shared_loan({0, 1}, test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box<test1::List<i32>>; }) ; + var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ; + var@3 -> ⊥ : test1::List<i32> ; + var@4 -> ⊥ : bool ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : &'_ (test1::List<i32>) ; + var@7 -> ⌊shared@0⌋ ; + abs@0{parents={}}{regions={0}} { + ⌊shared@1⌋, + proj_loans (s@1 : bool) + } +} + + + +[[32mDebug[39m] drop_value: place: l +[[32mDebug[39m] +**About to evaluate statement**: [ + return +] + +**Context**: +# Ended regions: {0} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List<i32> ; + var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ; + var@3 -> ⊥ : test1::List<i32> ; + var@4 -> ⊥ : bool ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : &'_ (test1::List<i32>) ; + var@7 -> ⊥ : &'_ (test1::List<i32>) ; +} + + + +[[32mDebug[39m] test_function_symbolic: split_list +[[32mDebug[39m] +**About to evaluate statement**: [ + var@8 := false; + var@7 := false; + var@7 := true; + var@8 := true; + var@2 := discriminant(l); + switch (move var@2) { + 0: isize => { + var@8 := false; + hd := move (l as test1::List::Cons).0; + var@7 := false; + tl := move (l as test1::List::Cons).1; + var@5 := move hd; + var@6 := move deref_box(tl); + (var@0).0 := move var@5; + (var@0).1 := move var@6; + var@9 := move alloc::alloc::box_free<test1::List<T>>(move tl); + return + } + _ => { + panic + } + } +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List<T>) ; + l -> s@0 : test1::List<T> ; + var@2 -> ⊥ : isize ; + hd -> ⊥ : T ; + tl -> ⊥ : std::boxed::Box<test1::List<T>> ; + var@5 -> ⊥ : T ; + var@6 -> ⊥ : test1::List<T> ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : () ; + var@10 -> ⊥ : isize ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@8 := false +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List<T>) ; + l -> s@0 : test1::List<T> ; + var@2 -> ⊥ : isize ; + hd -> ⊥ : T ; + tl -> ⊥ : std::boxed::Box<test1::List<T>> ; + var@5 -> ⊥ : T ; + var@6 -> ⊥ : test1::List<T> ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : () ; + var@10 -> ⊥ : isize ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List<T>) ; + l -> s@0 : test1::List<T> ; + var@2 -> ⊥ : isize ; + hd -> ⊥ : T ; + tl -> ⊥ : std::boxed::Box<test1::List<T>> ; + var@5 -> ⊥ : T ; + var@6 -> ⊥ : test1::List<T> ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : () ; + var@10 -> ⊥ : isize ; +} + + +- op: +false + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@7 := false; + var@7 := true; + var@8 := true; + var@2 := discriminant(l); + switch (move var@2) { + 0: isize => { + var@8 := false; + hd := move (l as test1::List::Cons).0; + var@7 := false; + tl := move (l as test1::List::Cons).1; + var@5 := move hd; + var@6 := move deref_box(tl); + (var@0).0 := move var@5; + (var@0).1 := move var@6; + var@9 := move alloc::alloc::box_free<test1::List<T>>(move tl); + return + } + _ => { + panic + } + } +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List<T>) ; + l -> s@0 : test1::List<T> ; + var@2 -> ⊥ : isize ; + hd -> ⊥ : T ; + tl -> ⊥ : std::boxed::Box<test1::List<T>> ; + var@5 -> ⊥ : T ; + var@6 -> ⊥ : test1::List<T> ; + var@7 -> ⊥ : bool ; + var@8 -> false ; + var@9 -> ⊥ : () ; + var@10 -> ⊥ : isize ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@7 := false +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List<T>) ; + l -> s@0 : test1::List<T> ; + var@2 -> ⊥ : isize ; + hd -> ⊥ : T ; + tl -> ⊥ : std::boxed::Box<test1::List<T>> ; + var@5 -> ⊥ : T ; + var@6 -> ⊥ : test1::List<T> ; + var@7 -> ⊥ : bool ; + var@8 -> false ; + var@9 -> ⊥ : () ; + var@10 -> ⊥ : isize ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List<T>) ; + l -> s@0 : test1::List<T> ; + var@2 -> ⊥ : isize ; + hd -> ⊥ : T ; + tl -> ⊥ : std::boxed::Box<test1::List<T>> ; + var@5 -> ⊥ : T ; + var@6 -> ⊥ : test1::List<T> ; + var@7 -> ⊥ : bool ; + var@8 -> false ; + var@9 -> ⊥ : () ; + var@10 -> ⊥ : isize ; +} + + +- op: +false + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@7 := true; + var@8 := true; + var@2 := discriminant(l); + switch (move var@2) { + 0: isize => { + var@8 := false; + hd := move (l as test1::List::Cons).0; + var@7 := false; + tl := move (l as test1::List::Cons).1; + var@5 := move hd; + var@6 := move deref_box(tl); + (var@0).0 := move var@5; + (var@0).1 := move var@6; + var@9 := move alloc::alloc::box_free<test1::List<T>>(move tl); + return + } + _ => { + panic + } + } +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List<T>) ; + l -> s@0 : test1::List<T> ; + var@2 -> ⊥ : isize ; + hd -> ⊥ : T ; + tl -> ⊥ : std::boxed::Box<test1::List<T>> ; + var@5 -> ⊥ : T ; + var@6 -> ⊥ : test1::List<T> ; + var@7 -> false ; + var@8 -> false ; + var@9 -> ⊥ : () ; + var@10 -> ⊥ : isize ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@7 := true +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List<T>) ; + l -> s@0 : test1::List<T> ; + var@2 -> ⊥ : isize ; + hd -> ⊥ : T ; + tl -> ⊥ : std::boxed::Box<test1::List<T>> ; + var@5 -> ⊥ : T ; + var@6 -> ⊥ : test1::List<T> ; + var@7 -> false ; + var@8 -> false ; + var@9 -> ⊥ : () ; + var@10 -> ⊥ : isize ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List<T>) ; + l -> s@0 : test1::List<T> ; + var@2 -> ⊥ : isize ; + hd -> ⊥ : T ; + tl -> ⊥ : std::boxed::Box<test1::List<T>> ; + var@5 -> ⊥ : T ; + var@6 -> ⊥ : test1::List<T> ; + var@7 -> false ; + var@8 -> false ; + var@9 -> ⊥ : () ; + var@10 -> ⊥ : isize ; +} + + +- op: +true + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@8 := true; + var@2 := discriminant(l); + switch (move var@2) { + 0: isize => { + var@8 := false; + hd := move (l as test1::List::Cons).0; + var@7 := false; + tl := move (l as test1::List::Cons).1; + var@5 := move hd; + var@6 := move deref_box(tl); + (var@0).0 := move var@5; + (var@0).1 := move var@6; + var@9 := move alloc::alloc::box_free<test1::List<T>>(move tl); + return + } + _ => { + panic + } + } +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List<T>) ; + l -> s@0 : test1::List<T> ; + var@2 -> ⊥ : isize ; + hd -> ⊥ : T ; + tl -> ⊥ : std::boxed::Box<test1::List<T>> ; + var@5 -> ⊥ : T ; + var@6 -> ⊥ : test1::List<T> ; + var@7 -> true ; + var@8 -> false ; + var@9 -> ⊥ : () ; + var@10 -> ⊥ : isize ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@8 := true +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List<T>) ; + l -> s@0 : test1::List<T> ; + var@2 -> ⊥ : isize ; + hd -> ⊥ : T ; + tl -> ⊥ : std::boxed::Box<test1::List<T>> ; + var@5 -> ⊥ : T ; + var@6 -> ⊥ : test1::List<T> ; + var@7 -> true ; + var@8 -> false ; + var@9 -> ⊥ : () ; + var@10 -> ⊥ : isize ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List<T>) ; + l -> s@0 : test1::List<T> ; + var@2 -> ⊥ : isize ; + hd -> ⊥ : T ; + tl -> ⊥ : std::boxed::Box<test1::List<T>> ; + var@5 -> ⊥ : T ; + var@6 -> ⊥ : test1::List<T> ; + var@7 -> true ; + var@8 -> false ; + var@9 -> ⊥ : () ; + var@10 -> ⊥ : isize ; +} + + +- op: +true + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@2 := discriminant(l); + switch (move var@2) { + 0: isize => { + var@8 := false; + hd := move (l as test1::List::Cons).0; + var@7 := false; + tl := move (l as test1::List::Cons).1; + var@5 := move hd; + var@6 := move deref_box(tl); + (var@0).0 := move var@5; + (var@0).1 := move var@6; + var@9 := move alloc::alloc::box_free<test1::List<T>>(move tl); + return + } + _ => { + panic + } + } +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List<T>) ; + l -> s@0 : test1::List<T> ; + var@2 -> ⊥ : isize ; + hd -> ⊥ : T ; + tl -> ⊥ : std::boxed::Box<test1::List<T>> ; + var@5 -> ⊥ : T ; + var@6 -> ⊥ : test1::List<T> ; + var@7 -> true ; + var@8 -> true ; + var@9 -> ⊥ : () ; + var@10 -> ⊥ : isize ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@2 := discriminant(l) +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List<T>) ; + l -> s@0 : test1::List<T> ; + var@2 -> ⊥ : isize ; + hd -> ⊥ : T ; + tl -> ⊥ : std::boxed::Box<test1::List<T>> ; + var@5 -> ⊥ : T ; + var@6 -> ⊥ : test1::List<T> ; + var@7 -> true ; + var@8 -> true ; + var@9 -> ⊥ : () ; + var@10 -> ⊥ : isize ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + switch (move var@2) { + 0: isize => { + var@8 := false; + hd := move (l as test1::List::Cons).0; + var@7 := false; + tl := move (l as test1::List::Cons).1; + var@5 := move hd; + var@6 := move deref_box(tl); + (var@0).0 := move var@5; + (var@0).1 := move var@6; + var@9 := move alloc::alloc::box_free<test1::List<T>>(move tl); + return + } + _ => { + panic + } + } +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List<T>) ; + l -> test1::List::Cons { 0 = s@1 : T; 1 = s@2 : std::boxed::Box<test1::List<T>>; } ; + var@2 -> 0: isize ; + hd -> ⊥ : T ; + tl -> ⊥ : std::boxed::Box<test1::List<T>> ; + var@5 -> ⊥ : T ; + var@6 -> ⊥ : test1::List<T> ; + var@7 -> true ; + var@8 -> true ; + var@9 -> ⊥ : () ; + var@10 -> ⊥ : isize ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List<T>) ; + l -> test1::List::Cons { 0 = s@1 : T; 1 = s@2 : std::boxed::Box<test1::List<T>>; } ; + var@2 -> 0: isize ; + hd -> ⊥ : T ; + tl -> ⊥ : std::boxed::Box<test1::List<T>> ; + var@5 -> ⊥ : T ; + var@6 -> ⊥ : test1::List<T> ; + var@7 -> true ; + var@8 -> true ; + var@9 -> ⊥ : () ; + var@10 -> ⊥ : isize ; +} + + +- op: +move var@2 + +[[32mDebug[39m] Value to move: +0: isize +[[32mDebug[39m] +**About to evaluate statement**: [ + var@8 := false; + hd := move (l as test1::List::Cons).0; + var@7 := false; + tl := move (l as test1::List::Cons).1; + var@5 := move hd; + var@6 := move deref_box(tl); + (var@0).0 := move var@5; + (var@0).1 := move var@6; + var@9 := move alloc::alloc::box_free<test1::List<T>>(move tl); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List<T>) ; + l -> test1::List::Cons { 0 = s@1 : T; 1 = s@2 : std::boxed::Box<test1::List<T>>; } ; + var@2 -> ⊥ : isize ; + hd -> ⊥ : T ; + tl -> ⊥ : std::boxed::Box<test1::List<T>> ; + var@5 -> ⊥ : T ; + var@6 -> ⊥ : test1::List<T> ; + var@7 -> true ; + var@8 -> true ; + var@9 -> ⊥ : () ; + var@10 -> ⊥ : isize ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@8 := false +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List<T>) ; + l -> test1::List::Cons { 0 = s@1 : T; 1 = s@2 : std::boxed::Box<test1::List<T>>; } ; + var@2 -> ⊥ : isize ; + hd -> ⊥ : T ; + tl -> ⊥ : std::boxed::Box<test1::List<T>> ; + var@5 -> ⊥ : T ; + var@6 -> ⊥ : test1::List<T> ; + var@7 -> true ; + var@8 -> true ; + var@9 -> ⊥ : () ; + var@10 -> ⊥ : isize ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List<T>) ; + l -> test1::List::Cons { 0 = s@1 : T; 1 = s@2 : std::boxed::Box<test1::List<T>>; } ; + var@2 -> ⊥ : isize ; + hd -> ⊥ : T ; + tl -> ⊥ : std::boxed::Box<test1::List<T>> ; + var@5 -> ⊥ : T ; + var@6 -> ⊥ : test1::List<T> ; + var@7 -> true ; + var@8 -> true ; + var@9 -> ⊥ : () ; + var@10 -> ⊥ : isize ; +} + + +- op: +false + +[[32mDebug[39m] +**About to evaluate statement**: [ + hd := move (l as test1::List::Cons).0; + var@7 := false; + tl := move (l as test1::List::Cons).1; + var@5 := move hd; + var@6 := move deref_box(tl); + (var@0).0 := move var@5; + (var@0).1 := move var@6; + var@9 := move alloc::alloc::box_free<test1::List<T>>(move tl); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List<T>) ; + l -> test1::List::Cons { 0 = s@1 : T; 1 = s@2 : std::boxed::Box<test1::List<T>>; } ; + var@2 -> ⊥ : isize ; + hd -> ⊥ : T ; + tl -> ⊥ : std::boxed::Box<test1::List<T>> ; + var@5 -> ⊥ : T ; + var@6 -> ⊥ : test1::List<T> ; + var@7 -> true ; + var@8 -> false ; + var@9 -> ⊥ : () ; + var@10 -> ⊥ : isize ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + hd := move (l as test1::List::Cons).0 +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List<T>) ; + l -> test1::List::Cons { 0 = s@1 : T; 1 = s@2 : std::boxed::Box<test1::List<T>>; } ; + var@2 -> ⊥ : isize ; + hd -> ⊥ : T ; + tl -> ⊥ : std::boxed::Box<test1::List<T>> ; + var@5 -> ⊥ : T ; + var@6 -> ⊥ : test1::List<T> ; + var@7 -> true ; + var@8 -> false ; + var@9 -> ⊥ : () ; + var@10 -> ⊥ : isize ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List<T>) ; + l -> test1::List::Cons { 0 = s@1 : T; 1 = s@2 : std::boxed::Box<test1::List<T>>; } ; + var@2 -> ⊥ : isize ; + hd -> ⊥ : T ; + tl -> ⊥ : std::boxed::Box<test1::List<T>> ; + var@5 -> ⊥ : T ; + var@6 -> ⊥ : test1::List<T> ; + var@7 -> true ; + var@8 -> false ; + var@9 -> ⊥ : () ; + var@10 -> ⊥ : isize ; +} + + +- op: +move (l as test1::List::Cons).0 + +[[32mDebug[39m] Value to move: +s@1 : T +[[32mDebug[39m] +**About to evaluate statement**: [ + var@7 := false; + tl := move (l as test1::List::Cons).1; + var@5 := move hd; + var@6 := move deref_box(tl); + (var@0).0 := move var@5; + (var@0).1 := move var@6; + var@9 := move alloc::alloc::box_free<test1::List<T>>(move tl); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List<T>) ; + l -> test1::List::Cons { 0 = ⊥ : T; 1 = s@2 : std::boxed::Box<test1::List<T>>; } ; + var@2 -> ⊥ : isize ; + hd -> s@1 : T ; + tl -> ⊥ : std::boxed::Box<test1::List<T>> ; + var@5 -> ⊥ : T ; + var@6 -> ⊥ : test1::List<T> ; + var@7 -> true ; + var@8 -> false ; + var@9 -> ⊥ : () ; + var@10 -> ⊥ : isize ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@7 := false +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List<T>) ; + l -> test1::List::Cons { 0 = ⊥ : T; 1 = s@2 : std::boxed::Box<test1::List<T>>; } ; + var@2 -> ⊥ : isize ; + hd -> s@1 : T ; + tl -> ⊥ : std::boxed::Box<test1::List<T>> ; + var@5 -> ⊥ : T ; + var@6 -> ⊥ : test1::List<T> ; + var@7 -> true ; + var@8 -> false ; + var@9 -> ⊥ : () ; + var@10 -> ⊥ : isize ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List<T>) ; + l -> test1::List::Cons { 0 = ⊥ : T; 1 = s@2 : std::boxed::Box<test1::List<T>>; } ; + var@2 -> ⊥ : isize ; + hd -> s@1 : T ; + tl -> ⊥ : std::boxed::Box<test1::List<T>> ; + var@5 -> ⊥ : T ; + var@6 -> ⊥ : test1::List<T> ; + var@7 -> true ; + var@8 -> false ; + var@9 -> ⊥ : () ; + var@10 -> ⊥ : isize ; +} + + +- op: +false + +[[32mDebug[39m] +**About to evaluate statement**: [ + tl := move (l as test1::List::Cons).1; + var@5 := move hd; + var@6 := move deref_box(tl); + (var@0).0 := move var@5; + (var@0).1 := move var@6; + var@9 := move alloc::alloc::box_free<test1::List<T>>(move tl); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List<T>) ; + l -> test1::List::Cons { 0 = ⊥ : T; 1 = s@2 : std::boxed::Box<test1::List<T>>; } ; + var@2 -> ⊥ : isize ; + hd -> s@1 : T ; + tl -> ⊥ : std::boxed::Box<test1::List<T>> ; + var@5 -> ⊥ : T ; + var@6 -> ⊥ : test1::List<T> ; + var@7 -> false ; + var@8 -> false ; + var@9 -> ⊥ : () ; + var@10 -> ⊥ : isize ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + tl := move (l as test1::List::Cons).1 +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List<T>) ; + l -> test1::List::Cons { 0 = ⊥ : T; 1 = s@2 : std::boxed::Box<test1::List<T>>; } ; + var@2 -> ⊥ : isize ; + hd -> s@1 : T ; + tl -> ⊥ : std::boxed::Box<test1::List<T>> ; + var@5 -> ⊥ : T ; + var@6 -> ⊥ : test1::List<T> ; + var@7 -> false ; + var@8 -> false ; + var@9 -> ⊥ : () ; + var@10 -> ⊥ : isize ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List<T>) ; + l -> test1::List::Cons { 0 = ⊥ : T; 1 = s@2 : std::boxed::Box<test1::List<T>>; } ; + var@2 -> ⊥ : isize ; + hd -> s@1 : T ; + tl -> ⊥ : std::boxed::Box<test1::List<T>> ; + var@5 -> ⊥ : T ; + var@6 -> ⊥ : test1::List<T> ; + var@7 -> false ; + var@8 -> false ; + var@9 -> ⊥ : () ; + var@10 -> ⊥ : isize ; +} + + +- op: +move (l as test1::List::Cons).1 + +[[32mDebug[39m] Value to move: +s@2 : std::boxed::Box<test1::List<T>> +[[32mDebug[39m] +**About to evaluate statement**: [ + var@5 := move hd; + var@6 := move deref_box(tl); + (var@0).0 := move var@5; + (var@0).1 := move var@6; + var@9 := move alloc::alloc::box_free<test1::List<T>>(move tl); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List<T>) ; + l -> test1::List::Cons { 0 = ⊥ : T; 1 = ⊥ : std::boxed::Box<test1::List<T>>; } ; + var@2 -> ⊥ : isize ; + hd -> s@1 : T ; + tl -> s@2 : std::boxed::Box<test1::List<T>> ; + var@5 -> ⊥ : T ; + var@6 -> ⊥ : test1::List<T> ; + var@7 -> false ; + var@8 -> false ; + var@9 -> ⊥ : () ; + var@10 -> ⊥ : isize ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@5 := move hd +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List<T>) ; + l -> test1::List::Cons { 0 = ⊥ : T; 1 = ⊥ : std::boxed::Box<test1::List<T>>; } ; + var@2 -> ⊥ : isize ; + hd -> s@1 : T ; + tl -> s@2 : std::boxed::Box<test1::List<T>> ; + var@5 -> ⊥ : T ; + var@6 -> ⊥ : test1::List<T> ; + var@7 -> false ; + var@8 -> false ; + var@9 -> ⊥ : () ; + var@10 -> ⊥ : isize ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List<T>) ; + l -> test1::List::Cons { 0 = ⊥ : T; 1 = ⊥ : std::boxed::Box<test1::List<T>>; } ; + var@2 -> ⊥ : isize ; + hd -> s@1 : T ; + tl -> s@2 : std::boxed::Box<test1::List<T>> ; + var@5 -> ⊥ : T ; + var@6 -> ⊥ : test1::List<T> ; + var@7 -> false ; + var@8 -> false ; + var@9 -> ⊥ : () ; + var@10 -> ⊥ : isize ; +} + + +- op: +move hd + +[[32mDebug[39m] Value to move: +s@1 : T +[[32mDebug[39m] +**About to evaluate statement**: [ + var@6 := move deref_box(tl); + (var@0).0 := move var@5; + (var@0).1 := move var@6; + var@9 := move alloc::alloc::box_free<test1::List<T>>(move tl); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List<T>) ; + l -> test1::List::Cons { 0 = ⊥ : T; 1 = ⊥ : std::boxed::Box<test1::List<T>>; } ; + var@2 -> ⊥ : isize ; + hd -> ⊥ : T ; + tl -> s@2 : std::boxed::Box<test1::List<T>> ; + var@5 -> s@1 : T ; + var@6 -> ⊥ : test1::List<T> ; + var@7 -> false ; + var@8 -> false ; + var@9 -> ⊥ : () ; + var@10 -> ⊥ : isize ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@6 := move deref_box(tl) +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List<T>) ; + l -> test1::List::Cons { 0 = ⊥ : T; 1 = ⊥ : std::boxed::Box<test1::List<T>>; } ; + var@2 -> ⊥ : isize ; + hd -> ⊥ : T ; + tl -> s@2 : std::boxed::Box<test1::List<T>> ; + var@5 -> s@1 : T ; + var@6 -> ⊥ : test1::List<T> ; + var@7 -> false ; + var@8 -> false ; + var@9 -> ⊥ : () ; + var@10 -> ⊥ : isize ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List<T>) ; + l -> test1::List::Cons { 0 = ⊥ : T; 1 = ⊥ : std::boxed::Box<test1::List<T>>; } ; + var@2 -> ⊥ : isize ; + hd -> ⊥ : T ; + tl -> s@2 : std::boxed::Box<test1::List<T>> ; + var@5 -> s@1 : T ; + var@6 -> ⊥ : test1::List<T> ; + var@7 -> false ; + var@8 -> false ; + var@9 -> ⊥ : () ; + var@10 -> ⊥ : isize ; +} + + +- op: +move deref_box(tl) + +[[32mDebug[39m] Value to move: +s@3 : test1::List<T> +[[32mDebug[39m] +**About to evaluate statement**: [ + (var@0).0 := move var@5; + (var@0).1 := move var@6; + var@9 := move alloc::alloc::box_free<test1::List<T>>(move tl); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List<T>) ; + l -> test1::List::Cons { 0 = ⊥ : T; 1 = ⊥ : std::boxed::Box<test1::List<T>>; } ; + var@2 -> ⊥ : isize ; + hd -> ⊥ : T ; + tl -> @Box(⊥ : test1::List<T>) ; + var@5 -> s@1 : T ; + var@6 -> s@3 : test1::List<T> ; + var@7 -> false ; + var@8 -> false ; + var@9 -> ⊥ : () ; + var@10 -> ⊥ : isize ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + (var@0).0 := move var@5 +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List<T>) ; + l -> test1::List::Cons { 0 = ⊥ : T; 1 = ⊥ : std::boxed::Box<test1::List<T>>; } ; + var@2 -> ⊥ : isize ; + hd -> ⊥ : T ; + tl -> @Box(⊥ : test1::List<T>) ; + var@5 -> s@1 : T ; + var@6 -> s@3 : test1::List<T> ; + var@7 -> false ; + var@8 -> false ; + var@9 -> ⊥ : () ; + var@10 -> ⊥ : isize ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List<T>) ; + l -> test1::List::Cons { 0 = ⊥ : T; 1 = ⊥ : std::boxed::Box<test1::List<T>>; } ; + var@2 -> ⊥ : isize ; + hd -> ⊥ : T ; + tl -> @Box(⊥ : test1::List<T>) ; + var@5 -> s@1 : T ; + var@6 -> s@3 : test1::List<T> ; + var@7 -> false ; + var@8 -> false ; + var@9 -> ⊥ : () ; + var@10 -> ⊥ : isize ; +} + + +- op: +move var@5 + +[[32mDebug[39m] Value to move: +s@1 : T +[[32mDebug[39m] expand_bottom_value_from_projection: +pe: (Expressions.Field ((Expressions.ProjTuple 2), 0)) +ty: (Types.Adt (Types.Tuple, [], + [(Types.TypeVar 0); (Types.Adt ((Types.AdtId 1), [], [(Types.TypeVar 0)])) + ] + )) +[[32mDebug[39m] +**About to evaluate statement**: [ + (var@0).1 := move var@6; + var@9 := move alloc::alloc::box_free<test1::List<T>>(move tl); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> (s@1 : T, ⊥ : test1::List<T>) ; + l -> test1::List::Cons { 0 = ⊥ : T; 1 = ⊥ : std::boxed::Box<test1::List<T>>; } ; + var@2 -> ⊥ : isize ; + hd -> ⊥ : T ; + tl -> @Box(⊥ : test1::List<T>) ; + var@5 -> ⊥ : T ; + var@6 -> s@3 : test1::List<T> ; + var@7 -> false ; + var@8 -> false ; + var@9 -> ⊥ : () ; + var@10 -> ⊥ : isize ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + (var@0).1 := move var@6 +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> (s@1 : T, ⊥ : test1::List<T>) ; + l -> test1::List::Cons { 0 = ⊥ : T; 1 = ⊥ : std::boxed::Box<test1::List<T>>; } ; + var@2 -> ⊥ : isize ; + hd -> ⊥ : T ; + tl -> @Box(⊥ : test1::List<T>) ; + var@5 -> ⊥ : T ; + var@6 -> s@3 : test1::List<T> ; + var@7 -> false ; + var@8 -> false ; + var@9 -> ⊥ : () ; + var@10 -> ⊥ : isize ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> (s@1 : T, ⊥ : test1::List<T>) ; + l -> test1::List::Cons { 0 = ⊥ : T; 1 = ⊥ : std::boxed::Box<test1::List<T>>; } ; + var@2 -> ⊥ : isize ; + hd -> ⊥ : T ; + tl -> @Box(⊥ : test1::List<T>) ; + var@5 -> ⊥ : T ; + var@6 -> s@3 : test1::List<T> ; + var@7 -> false ; + var@8 -> false ; + var@9 -> ⊥ : () ; + var@10 -> ⊥ : isize ; +} + + +- op: +move var@6 + +[[32mDebug[39m] Value to move: +s@3 : test1::List<T> +[[32mDebug[39m] +**About to evaluate statement**: [ + var@9 := move alloc::alloc::box_free<test1::List<T>>(move tl); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> (s@1 : T, s@3 : test1::List<T>) ; + l -> test1::List::Cons { 0 = ⊥ : T; 1 = ⊥ : std::boxed::Box<test1::List<T>>; } ; + var@2 -> ⊥ : isize ; + hd -> ⊥ : T ; + tl -> @Box(⊥ : test1::List<T>) ; + var@5 -> ⊥ : T ; + var@6 -> ⊥ : test1::List<T> ; + var@7 -> false ; + var@8 -> false ; + var@9 -> ⊥ : () ; + var@10 -> ⊥ : isize ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@9 := move alloc::alloc::box_free<test1::List<T>>(move tl) +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> (s@1 : T, s@3 : test1::List<T>) ; + l -> test1::List::Cons { 0 = ⊥ : T; 1 = ⊥ : std::boxed::Box<test1::List<T>>; } ; + var@2 -> ⊥ : isize ; + hd -> ⊥ : T ; + tl -> @Box(⊥ : test1::List<T>) ; + var@5 -> ⊥ : T ; + var@6 -> ⊥ : test1::List<T> ; + var@7 -> false ; + var@8 -> false ; + var@9 -> ⊥ : () ; + var@10 -> ⊥ : isize ; +} + + + +[[32mDebug[39m] eval_non_local_function_call: +- fid:CfimAst.BoxFree +- type_params: [test1::List<T>] +- args: [move tl] +- dest: var@9 +[[32mDebug[39m] drop_value: place: tl +[[32mDebug[39m] +**About to evaluate statement**: [ + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> (s@1 : T, s@3 : test1::List<T>) ; + l -> test1::List::Cons { 0 = ⊥ : T; 1 = ⊥ : std::boxed::Box<test1::List<T>>; } ; + var@2 -> ⊥ : isize ; + hd -> ⊥ : T ; + tl -> ⊥ : std::boxed::Box<test1::List<T>> ; + var@5 -> ⊥ : T ; + var@6 -> ⊥ : test1::List<T> ; + var@7 -> false ; + var@8 -> false ; + var@9 -> () ; + var@10 -> ⊥ : isize ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + switch (move var@2) { + 0: isize => { + var@8 := false; + hd := move (l as test1::List::Cons).0; + var@7 := false; + tl := move (l as test1::List::Cons).1; + var@5 := move hd; + var@6 := move deref_box(tl); + (var@0).0 := move var@5; + (var@0).1 := move var@6; + var@9 := move alloc::alloc::box_free<test1::List<T>>(move tl); + return + } + _ => { + panic + } + } +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List<T>) ; + l -> test1::List::Nil ; + var@2 -> 1: isize ; + hd -> ⊥ : T ; + tl -> ⊥ : std::boxed::Box<test1::List<T>> ; + var@5 -> ⊥ : T ; + var@6 -> ⊥ : test1::List<T> ; + var@7 -> true ; + var@8 -> true ; + var@9 -> ⊥ : () ; + var@10 -> ⊥ : isize ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List<T>) ; + l -> test1::List::Nil ; + var@2 -> 1: isize ; + hd -> ⊥ : T ; + tl -> ⊥ : std::boxed::Box<test1::List<T>> ; + var@5 -> ⊥ : T ; + var@6 -> ⊥ : test1::List<T> ; + var@7 -> true ; + var@8 -> true ; + var@9 -> ⊥ : () ; + var@10 -> ⊥ : isize ; +} + + +- op: +move var@2 + +[[32mDebug[39m] Value to move: +1: isize +[[32mDebug[39m] +**About to evaluate statement**: [ + panic +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List<T>) ; + l -> test1::List::Nil ; + var@2 -> ⊥ : isize ; + hd -> ⊥ : T ; + tl -> ⊥ : std::boxed::Box<test1::List<T>> ; + var@5 -> ⊥ : T ; + var@6 -> ⊥ : test1::List<T> ; + var@7 -> true ; + var@8 -> true ; + var@9 -> ⊥ : () ; + var@10 -> ⊥ : isize ; +} + + + +[[32mDebug[39m] test_function_symbolic: test_split_list +[[32mDebug[39m] +**About to evaluate statement**: [ + set_discriminant(var@3, 1); + var@2 := move alloc::boxed::Box<test1::List<i32>>::new(move var@3); + (l as test1::List::Cons).0 := 0: i32; + (l as test1::List::Cons).1 := move var@2; + set_discriminant(l, 0); + var@7 := move l; + var@6 := move split_list<i32>(move var@7); + hd := copy (var@6).0; + tl := move (var@6).1; + var@10 := copy hd; + var@9 := move var@10 == 0: i32; + var@8 := ¬ move var@9; + assert(¬move var@8); + drop(tl); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List<i32> ; + var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ; + var@3 -> ⊥ : test1::List<i32> ; + hd -> ⊥ : i32 ; + tl -> ⊥ : test1::List<i32> ; + var@6 -> ⊥ : (i32, test1::List<i32>) ; + var@7 -> ⊥ : test1::List<i32> ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : bool ; + var@10 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + set_discriminant(var@3, 1) +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List<i32> ; + var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ; + var@3 -> ⊥ : test1::List<i32> ; + hd -> ⊥ : i32 ; + tl -> ⊥ : test1::List<i32> ; + var@6 -> ⊥ : (i32, test1::List<i32>) ; + var@7 -> ⊥ : test1::List<i32> ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : bool ; + var@10 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@2 := move alloc::boxed::Box<test1::List<i32>>::new(move var@3); + (l as test1::List::Cons).0 := 0: i32; + (l as test1::List::Cons).1 := move var@2; + set_discriminant(l, 0); + var@7 := move l; + var@6 := move split_list<i32>(move var@7); + hd := copy (var@6).0; + tl := move (var@6).1; + var@10 := copy hd; + var@9 := move var@10 == 0: i32; + var@8 := ¬ move var@9; + assert(¬move var@8); + drop(tl); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List<i32> ; + var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ; + var@3 -> test1::List::Nil ; + hd -> ⊥ : i32 ; + tl -> ⊥ : test1::List<i32> ; + var@6 -> ⊥ : (i32, test1::List<i32>) ; + var@7 -> ⊥ : test1::List<i32> ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : bool ; + var@10 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@2 := move alloc::boxed::Box<test1::List<i32>>::new(move var@3) +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List<i32> ; + var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ; + var@3 -> test1::List::Nil ; + hd -> ⊥ : i32 ; + tl -> ⊥ : test1::List<i32> ; + var@6 -> ⊥ : (i32, test1::List<i32>) ; + var@7 -> ⊥ : test1::List<i32> ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : bool ; + var@10 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] eval_non_local_function_call: +- fid:CfimAst.BoxNew +- type_params: [test1::List<i32>] +- args: [move var@3] +- dest: var@2 +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List<i32> ; + var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ; + var@3 -> test1::List::Nil ; + hd -> ⊥ : i32 ; + tl -> ⊥ : test1::List<i32> ; + var@6 -> ⊥ : (i32, test1::List<i32>) ; + var@7 -> ⊥ : test1::List<i32> ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : bool ; + var@10 -> ⊥ : i32 ; +} + + +- op: +move var@3 + +[[32mDebug[39m] Value to move: +test1::List::Nil +[[32mDebug[39m] +**About to evaluate statement**: [ + (l as test1::List::Cons).0 := 0: i32; + (l as test1::List::Cons).1 := move var@2; + set_discriminant(l, 0); + var@7 := move l; + var@6 := move split_list<i32>(move var@7); + hd := copy (var@6).0; + tl := move (var@6).1; + var@10 := copy hd; + var@9 := move var@10 == 0: i32; + var@8 := ¬ move var@9; + assert(¬move var@8); + drop(tl); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List<i32> ; + var@2 -> s@0 : std::boxed::Box<test1::List<i32>> ; + var@3 -> ⊥ : test1::List<i32> ; + hd -> ⊥ : i32 ; + tl -> ⊥ : test1::List<i32> ; + var@6 -> ⊥ : (i32, test1::List<i32>) ; + var@7 -> ⊥ : test1::List<i32> ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : bool ; + var@10 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + (l as test1::List::Cons).0 := 0: i32 +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List<i32> ; + var@2 -> s@0 : std::boxed::Box<test1::List<i32>> ; + var@3 -> ⊥ : test1::List<i32> ; + hd -> ⊥ : i32 ; + tl -> ⊥ : test1::List<i32> ; + var@6 -> ⊥ : (i32, test1::List<i32>) ; + var@7 -> ⊥ : test1::List<i32> ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : bool ; + var@10 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List<i32> ; + var@2 -> s@0 : std::boxed::Box<test1::List<i32>> ; + var@3 -> ⊥ : test1::List<i32> ; + hd -> ⊥ : i32 ; + tl -> ⊥ : test1::List<i32> ; + var@6 -> ⊥ : (i32, test1::List<i32>) ; + var@7 -> ⊥ : test1::List<i32> ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : bool ; + var@10 -> ⊥ : i32 ; +} + + +- op: +0: i32 + +[[32mDebug[39m] expand_bottom_value_from_projection: +pe: (Expressions.Field ((Expressions.ProjAdt (1, (Some 0))), 0)) +ty: (Types.Adt ((Types.AdtId 1), [], [(Types.Integer Types.I32)])) +[[32mDebug[39m] +**About to evaluate statement**: [ + (l as test1::List::Cons).1 := move var@2; + set_discriminant(l, 0); + var@7 := move l; + var@6 := move split_list<i32>(move var@7); + hd := copy (var@6).0; + tl := move (var@6).1; + var@10 := copy hd; + var@9 := move var@10 == 0: i32; + var@8 := ¬ move var@9; + assert(¬move var@8); + drop(tl); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> test1::List::Cons { 0 = 0: i32; 1 = ⊥ : std::boxed::Box<test1::List<i32>>; } ; + var@2 -> s@0 : std::boxed::Box<test1::List<i32>> ; + var@3 -> ⊥ : test1::List<i32> ; + hd -> ⊥ : i32 ; + tl -> ⊥ : test1::List<i32> ; + var@6 -> ⊥ : (i32, test1::List<i32>) ; + var@7 -> ⊥ : test1::List<i32> ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : bool ; + var@10 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + (l as test1::List::Cons).1 := move var@2 +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> test1::List::Cons { 0 = 0: i32; 1 = ⊥ : std::boxed::Box<test1::List<i32>>; } ; + var@2 -> s@0 : std::boxed::Box<test1::List<i32>> ; + var@3 -> ⊥ : test1::List<i32> ; + hd -> ⊥ : i32 ; + tl -> ⊥ : test1::List<i32> ; + var@6 -> ⊥ : (i32, test1::List<i32>) ; + var@7 -> ⊥ : test1::List<i32> ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : bool ; + var@10 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> test1::List::Cons { 0 = 0: i32; 1 = ⊥ : std::boxed::Box<test1::List<i32>>; } ; + var@2 -> s@0 : std::boxed::Box<test1::List<i32>> ; + var@3 -> ⊥ : test1::List<i32> ; + hd -> ⊥ : i32 ; + tl -> ⊥ : test1::List<i32> ; + var@6 -> ⊥ : (i32, test1::List<i32>) ; + var@7 -> ⊥ : test1::List<i32> ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : bool ; + var@10 -> ⊥ : i32 ; +} + + +- op: +move var@2 + +[[32mDebug[39m] Value to move: +s@0 : std::boxed::Box<test1::List<i32>> +[[32mDebug[39m] +**About to evaluate statement**: [ + set_discriminant(l, 0); + var@7 := move l; + var@6 := move split_list<i32>(move var@7); + hd := copy (var@6).0; + tl := move (var@6).1; + var@10 := copy hd; + var@9 := move var@10 == 0: i32; + var@8 := ¬ move var@9; + assert(¬move var@8); + drop(tl); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box<test1::List<i32>>; } ; + var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ; + var@3 -> ⊥ : test1::List<i32> ; + hd -> ⊥ : i32 ; + tl -> ⊥ : test1::List<i32> ; + var@6 -> ⊥ : (i32, test1::List<i32>) ; + var@7 -> ⊥ : test1::List<i32> ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : bool ; + var@10 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + set_discriminant(l, 0) +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box<test1::List<i32>>; } ; + var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ; + var@3 -> ⊥ : test1::List<i32> ; + hd -> ⊥ : i32 ; + tl -> ⊥ : test1::List<i32> ; + var@6 -> ⊥ : (i32, test1::List<i32>) ; + var@7 -> ⊥ : test1::List<i32> ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : bool ; + var@10 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@7 := move l; + var@6 := move split_list<i32>(move var@7); + hd := copy (var@6).0; + tl := move (var@6).1; + var@10 := copy hd; + var@9 := move var@10 == 0: i32; + var@8 := ¬ move var@9; + assert(¬move var@8); + drop(tl); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box<test1::List<i32>>; } ; + var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ; + var@3 -> ⊥ : test1::List<i32> ; + hd -> ⊥ : i32 ; + tl -> ⊥ : test1::List<i32> ; + var@6 -> ⊥ : (i32, test1::List<i32>) ; + var@7 -> ⊥ : test1::List<i32> ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : bool ; + var@10 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@7 := move l +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box<test1::List<i32>>; } ; + var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ; + var@3 -> ⊥ : test1::List<i32> ; + hd -> ⊥ : i32 ; + tl -> ⊥ : test1::List<i32> ; + var@6 -> ⊥ : (i32, test1::List<i32>) ; + var@7 -> ⊥ : test1::List<i32> ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : bool ; + var@10 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box<test1::List<i32>>; } ; + var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ; + var@3 -> ⊥ : test1::List<i32> ; + hd -> ⊥ : i32 ; + tl -> ⊥ : test1::List<i32> ; + var@6 -> ⊥ : (i32, test1::List<i32>) ; + var@7 -> ⊥ : test1::List<i32> ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : bool ; + var@10 -> ⊥ : i32 ; +} + + +- op: +move l + +[[32mDebug[39m] Value to move: +test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box<test1::List<i32>>; } +[[32mDebug[39m] +**About to evaluate statement**: [ + var@6 := move split_list<i32>(move var@7); + hd := copy (var@6).0; + tl := move (var@6).1; + var@10 := copy hd; + var@9 := move var@10 == 0: i32; + var@8 := ¬ move var@9; + assert(¬move var@8); + drop(tl); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List<i32> ; + var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ; + var@3 -> ⊥ : test1::List<i32> ; + hd -> ⊥ : i32 ; + tl -> ⊥ : test1::List<i32> ; + var@6 -> ⊥ : (i32, test1::List<i32>) ; + var@7 -> test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box<test1::List<i32>>; } ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : bool ; + var@10 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@6 := move split_list<i32>(move var@7) +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List<i32> ; + var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ; + var@3 -> ⊥ : test1::List<i32> ; + hd -> ⊥ : i32 ; + tl -> ⊥ : test1::List<i32> ; + var@6 -> ⊥ : (i32, test1::List<i32>) ; + var@7 -> test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box<test1::List<i32>>; } ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : bool ; + var@10 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List<i32> ; + var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ; + var@3 -> ⊥ : test1::List<i32> ; + hd -> ⊥ : i32 ; + tl -> ⊥ : test1::List<i32> ; + var@6 -> ⊥ : (i32, test1::List<i32>) ; + var@7 -> test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box<test1::List<i32>>; } ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : bool ; + var@10 -> ⊥ : i32 ; +} + + +- op: +move var@7 + +[[32mDebug[39m] Value to move: +test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box<test1::List<i32>>; } +[[32mDebug[39m] +**About to evaluate statement**: [ + hd := copy (var@6).0; + tl := move (var@6).1; + var@10 := copy hd; + var@9 := move var@10 == 0: i32; + var@8 := ¬ move var@9; + assert(¬move var@8); + drop(tl); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List<i32> ; + var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ; + var@3 -> ⊥ : test1::List<i32> ; + hd -> ⊥ : i32 ; + tl -> ⊥ : test1::List<i32> ; + var@6 -> s@1 : (i32, test1::List<i32>) ; + var@7 -> ⊥ : test1::List<i32> ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : bool ; + var@10 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + hd := copy (var@6).0 +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List<i32> ; + var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ; + var@3 -> ⊥ : test1::List<i32> ; + hd -> ⊥ : i32 ; + tl -> ⊥ : test1::List<i32> ; + var@6 -> s@1 : (i32, test1::List<i32>) ; + var@7 -> ⊥ : test1::List<i32> ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : bool ; + var@10 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List<i32> ; + var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ; + var@3 -> ⊥ : test1::List<i32> ; + hd -> ⊥ : i32 ; + tl -> ⊥ : test1::List<i32> ; + var@6 -> s@1 : (i32, test1::List<i32>) ; + var@7 -> ⊥ : test1::List<i32> ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : bool ; + var@10 -> ⊥ : i32 ; +} + + +- op: +copy (var@6).0 + +[[32mDebug[39m] Value to copy: +s@2 : i32 +[[32mDebug[39m] +**About to evaluate statement**: [ + tl := move (var@6).1; + var@10 := copy hd; + var@9 := move var@10 == 0: i32; + var@8 := ¬ move var@9; + assert(¬move var@8); + drop(tl); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List<i32> ; + var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ; + var@3 -> ⊥ : test1::List<i32> ; + hd -> s@2 : i32 ; + tl -> ⊥ : test1::List<i32> ; + var@6 -> (s@2 : i32, s@3 : test1::List<i32>) ; + var@7 -> ⊥ : test1::List<i32> ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : bool ; + var@10 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + tl := move (var@6).1 +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List<i32> ; + var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ; + var@3 -> ⊥ : test1::List<i32> ; + hd -> s@2 : i32 ; + tl -> ⊥ : test1::List<i32> ; + var@6 -> (s@2 : i32, s@3 : test1::List<i32>) ; + var@7 -> ⊥ : test1::List<i32> ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : bool ; + var@10 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List<i32> ; + var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ; + var@3 -> ⊥ : test1::List<i32> ; + hd -> s@2 : i32 ; + tl -> ⊥ : test1::List<i32> ; + var@6 -> (s@2 : i32, s@3 : test1::List<i32>) ; + var@7 -> ⊥ : test1::List<i32> ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : bool ; + var@10 -> ⊥ : i32 ; +} + + +- op: +move (var@6).1 + +[[32mDebug[39m] Value to move: +s@3 : test1::List<i32> +[[32mDebug[39m] +**About to evaluate statement**: [ + var@10 := copy hd; + var@9 := move var@10 == 0: i32; + var@8 := ¬ move var@9; + assert(¬move var@8); + drop(tl); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List<i32> ; + var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ; + var@3 -> ⊥ : test1::List<i32> ; + hd -> s@2 : i32 ; + tl -> s@3 : test1::List<i32> ; + var@6 -> (s@2 : i32, ⊥ : test1::List<i32>) ; + var@7 -> ⊥ : test1::List<i32> ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : bool ; + var@10 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@10 := copy hd +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List<i32> ; + var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ; + var@3 -> ⊥ : test1::List<i32> ; + hd -> s@2 : i32 ; + tl -> s@3 : test1::List<i32> ; + var@6 -> (s@2 : i32, ⊥ : test1::List<i32>) ; + var@7 -> ⊥ : test1::List<i32> ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : bool ; + var@10 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List<i32> ; + var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ; + var@3 -> ⊥ : test1::List<i32> ; + hd -> s@2 : i32 ; + tl -> s@3 : test1::List<i32> ; + var@6 -> (s@2 : i32, ⊥ : test1::List<i32>) ; + var@7 -> ⊥ : test1::List<i32> ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : bool ; + var@10 -> ⊥ : i32 ; +} + + +- op: +copy hd + +[[32mDebug[39m] Value to copy: +s@2 : i32 +[[32mDebug[39m] +**About to evaluate statement**: [ + var@9 := move var@10 == 0: i32; + var@8 := ¬ move var@9; + assert(¬move var@8); + drop(tl); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List<i32> ; + var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ; + var@3 -> ⊥ : test1::List<i32> ; + hd -> s@2 : i32 ; + tl -> s@3 : test1::List<i32> ; + var@6 -> (s@2 : i32, ⊥ : test1::List<i32>) ; + var@7 -> ⊥ : test1::List<i32> ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : bool ; + var@10 -> s@2 : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@9 := move var@10 == 0: i32 +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List<i32> ; + var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ; + var@3 -> ⊥ : test1::List<i32> ; + hd -> s@2 : i32 ; + tl -> s@3 : test1::List<i32> ; + var@6 -> (s@2 : i32, ⊥ : test1::List<i32>) ; + var@7 -> ⊥ : test1::List<i32> ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : bool ; + var@10 -> s@2 : i32 ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List<i32> ; + var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ; + var@3 -> ⊥ : test1::List<i32> ; + hd -> s@2 : i32 ; + tl -> s@3 : test1::List<i32> ; + var@6 -> (s@2 : i32, ⊥ : test1::List<i32>) ; + var@7 -> ⊥ : test1::List<i32> ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : bool ; + var@10 -> s@2 : i32 ; +} + + +- op: +move var@10 + +[[32mDebug[39m] Value to move: +s@2 : i32 +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List<i32> ; + var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ; + var@3 -> ⊥ : test1::List<i32> ; + hd -> s@2 : i32 ; + tl -> s@3 : test1::List<i32> ; + var@6 -> (s@2 : i32, ⊥ : test1::List<i32>) ; + var@7 -> ⊥ : test1::List<i32> ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : bool ; + var@10 -> ⊥ : i32 ; +} + + +- op: +0: i32 + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@8 := ¬ move var@9; + assert(¬move var@8); + drop(tl); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List<i32> ; + var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ; + var@3 -> ⊥ : test1::List<i32> ; + hd -> s@2 : i32 ; + tl -> s@3 : test1::List<i32> ; + var@6 -> (s@2 : i32, ⊥ : test1::List<i32>) ; + var@7 -> ⊥ : test1::List<i32> ; + var@8 -> ⊥ : bool ; + var@9 -> s@4 : bool ; + var@10 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@8 := ¬ move var@9 +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List<i32> ; + var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ; + var@3 -> ⊥ : test1::List<i32> ; + hd -> s@2 : i32 ; + tl -> s@3 : test1::List<i32> ; + var@6 -> (s@2 : i32, ⊥ : test1::List<i32>) ; + var@7 -> ⊥ : test1::List<i32> ; + var@8 -> ⊥ : bool ; + var@9 -> s@4 : bool ; + var@10 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List<i32> ; + var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ; + var@3 -> ⊥ : test1::List<i32> ; + hd -> s@2 : i32 ; + tl -> s@3 : test1::List<i32> ; + var@6 -> (s@2 : i32, ⊥ : test1::List<i32>) ; + var@7 -> ⊥ : test1::List<i32> ; + var@8 -> ⊥ : bool ; + var@9 -> s@4 : bool ; + var@10 -> ⊥ : i32 ; +} + + +- op: +move var@9 + +[[32mDebug[39m] Value to move: +s@4 : bool +[[32mDebug[39m] +**About to evaluate statement**: [ + assert(¬move var@8); + drop(tl); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List<i32> ; + var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ; + var@3 -> ⊥ : test1::List<i32> ; + hd -> s@2 : i32 ; + tl -> s@3 : test1::List<i32> ; + var@6 -> (s@2 : i32, ⊥ : test1::List<i32>) ; + var@7 -> ⊥ : test1::List<i32> ; + var@8 -> s@5 : bool ; + var@9 -> ⊥ : bool ; + var@10 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + assert(¬move var@8) +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List<i32> ; + var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ; + var@3 -> ⊥ : test1::List<i32> ; + hd -> s@2 : i32 ; + tl -> s@3 : test1::List<i32> ; + var@6 -> (s@2 : i32, ⊥ : test1::List<i32>) ; + var@7 -> ⊥ : test1::List<i32> ; + var@8 -> s@5 : bool ; + var@9 -> ⊥ : bool ; + var@10 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List<i32> ; + var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ; + var@3 -> ⊥ : test1::List<i32> ; + hd -> s@2 : i32 ; + tl -> s@3 : test1::List<i32> ; + var@6 -> (s@2 : i32, ⊥ : test1::List<i32>) ; + var@7 -> ⊥ : test1::List<i32> ; + var@8 -> true ; + var@9 -> ⊥ : bool ; + var@10 -> ⊥ : i32 ; +} + + +- op: +move var@8 + +[[32mDebug[39m] Value to move: +true +[[32mDebug[39m] +**About to evaluate statement**: [ + drop(tl); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List<i32> ; + var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ; + var@3 -> ⊥ : test1::List<i32> ; + hd -> s@2 : i32 ; + tl -> s@3 : test1::List<i32> ; + var@6 -> (s@2 : i32, ⊥ : test1::List<i32>) ; + var@7 -> ⊥ : test1::List<i32> ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : bool ; + var@10 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + drop(tl) +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List<i32> ; + var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ; + var@3 -> ⊥ : test1::List<i32> ; + hd -> s@2 : i32 ; + tl -> s@3 : test1::List<i32> ; + var@6 -> (s@2 : i32, ⊥ : test1::List<i32>) ; + var@7 -> ⊥ : test1::List<i32> ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : bool ; + var@10 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] drop_value: place: tl +[[32mDebug[39m] +**About to evaluate statement**: [ + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List<i32> ; + var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ; + var@3 -> ⊥ : test1::List<i32> ; + hd -> s@2 : i32 ; + tl -> ⊥ : test1::List<i32> ; + var@6 -> (s@2 : i32, ⊥ : test1::List<i32>) ; + var@7 -> ⊥ : test1::List<i32> ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : bool ; + var@10 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] test_function_symbolic: get_elem +[[32mDebug[39m] +**About to evaluate statement**: [ + var@4 := copy b; + if (move var@4) { + var@0 := &mut *(x) + } + else { + var@0 := move y + }; + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + abs@0{parents={}}{regions={0}} { + proj_loans (s@0 : bool), + proj_loans (s@1 : &r@0 mut (T)), + proj_loans (s@2 : &r@0 mut (T)) + } + var@0 -> ⊥ : &'_ mut (T) ; + b -> s@0 : bool ; + x -> s@1 : &r@0 mut (T) ; + y -> s@2 : &r@0 mut (T) ; + var@4 -> ⊥ : bool ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@4 := copy b +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + abs@0{parents={}}{regions={0}} { + proj_loans (s@0 : bool), + proj_loans (s@1 : &r@0 mut (T)), + proj_loans (s@2 : &r@0 mut (T)) + } + var@0 -> ⊥ : &'_ mut (T) ; + b -> s@0 : bool ; + x -> s@1 : &r@0 mut (T) ; + y -> s@2 : &r@0 mut (T) ; + var@4 -> ⊥ : bool ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + abs@0{parents={}}{regions={0}} { + proj_loans (s@0 : bool), + proj_loans (s@1 : &r@0 mut (T)), + proj_loans (s@2 : &r@0 mut (T)) + } + var@0 -> ⊥ : &'_ mut (T) ; + b -> s@0 : bool ; + x -> s@1 : &r@0 mut (T) ; + y -> s@2 : &r@0 mut (T) ; + var@4 -> ⊥ : bool ; +} + + +- op: +copy b + +[[32mDebug[39m] Value to copy: +s@0 : bool +[[32mDebug[39m] +**About to evaluate statement**: [ + if (move var@4) { + var@0 := &mut *(x) + } + else { + var@0 := move y + }; + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + abs@0{parents={}}{regions={0}} { + proj_loans (s@0 : bool), + proj_loans (s@1 : &r@0 mut (T)), + proj_loans (s@2 : &r@0 mut (T)) + } + var@0 -> ⊥ : &'_ mut (T) ; + b -> s@0 : bool ; + x -> s@1 : &r@0 mut (T) ; + y -> s@2 : &r@0 mut (T) ; + var@4 -> s@0 : bool ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + if (move var@4) { + var@0 := &mut *(x) + } + else { + var@0 := move y + } +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + abs@0{parents={}}{regions={0}} { + proj_loans (s@0 : bool), + proj_loans (s@1 : &r@0 mut (T)), + proj_loans (s@2 : &r@0 mut (T)) + } + var@0 -> ⊥ : &'_ mut (T) ; + b -> s@0 : bool ; + x -> s@1 : &r@0 mut (T) ; + y -> s@2 : &r@0 mut (T) ; + var@4 -> s@0 : bool ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + abs@0{parents={}}{regions={0}} { + true, + proj_loans (s@1 : &r@0 mut (T)), + proj_loans (s@2 : &r@0 mut (T)) + } + var@0 -> ⊥ : &'_ mut (T) ; + b -> true ; + x -> s@1 : &r@0 mut (T) ; + y -> s@2 : &r@0 mut (T) ; + var@4 -> true ; +} + + +- op: +move var@4 + +[[32mDebug[39m] Value to move: +true +[[32mDebug[39m] +**About to evaluate statement**: [ + var@0 := &mut *(x) +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + abs@0{parents={}}{regions={0}} { + true, + proj_loans (s@1 : &r@0 mut (T)), + proj_loans (s@2 : &r@0 mut (T)) + } + var@0 -> ⊥ : &'_ mut (T) ; + b -> true ; + x -> s@1 : &r@0 mut (T) ; + y -> s@2 : &r@0 mut (T) ; + var@4 -> ⊥ : bool ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + abs@0{parents={}}{regions={0}} { + false, + proj_loans (s@1 : &r@0 mut (T)), + proj_loans (s@2 : &r@0 mut (T)) + } + var@0 -> ⊥ : &'_ mut (T) ; + b -> false ; + x -> s@1 : &r@0 mut (T) ; + y -> s@2 : &r@0 mut (T) ; + var@4 -> false ; +} + + +- op: +move var@4 + +[[32mDebug[39m] Value to move: +false +[[32mDebug[39m] +**About to evaluate statement**: [ + var@0 := move y +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + abs@0{parents={}}{regions={0}} { + false, + proj_loans (s@1 : &r@0 mut (T)), + proj_loans (s@2 : &r@0 mut (T)) + } + var@0 -> ⊥ : &'_ mut (T) ; + b -> false ; + x -> s@1 : &r@0 mut (T) ; + y -> s@2 : &r@0 mut (T) ; + var@4 -> ⊥ : bool ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + abs@0{parents={}}{regions={0}} { + false, + proj_loans (s@1 : &r@0 mut (T)), + proj_loans (s@2 : &r@0 mut (T)) + } + var@0 -> ⊥ : &'_ mut (T) ; + b -> false ; + x -> s@1 : &r@0 mut (T) ; + y -> s@2 : &r@0 mut (T) ; + var@4 -> ⊥ : bool ; +} + + +- op: +move y + +[[32mDebug[39m] Value to move: +s@2 : &r@0 mut (T) +[[32mDebug[39m] +**About to evaluate statement**: [ + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + abs@0{parents={}}{regions={0}} { + true, + ⌊mut@0, proj_loans (s@3 : T)⌋, + proj_loans (s@2 : &r@0 mut (T)) + } + var@0 -> &mut@1 (s@3 : T) ; + b -> true ; + x -> &mut@0 (⌊mut@1⌋) ; + y -> s@2 : &r@0 mut (T) ; + var@4 -> ⊥ : bool ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + abs@0{parents={}}{regions={0}} { + false, + proj_loans (s@1 : &r@0 mut (T)), + proj_loans (s@2 : &r@0 mut (T)) + } + var@0 -> s@2 : &r@0 mut (T) ; + b -> false ; + x -> s@1 : &r@0 mut (T) ; + y -> ⊥ : &'_ mut (T) ; + var@4 -> ⊥ : bool ; +} + + + +[[32mDebug[39m] test_function_symbolic: get_elem_test +[[32mDebug[39m] +**About to evaluate statement**: [ + x := 0: i32; + y := 0: i32; + var@5 := &mut x; + var@4 := &two-phase *(var@5); + var@7 := &mut y; + var@6 := &two-phase *(var@7); + z := move get_elem<i32>(true, move var@4, move var@6); + var@8 := copy *(z); + *(z) := copy var@8 + 1: i32; + var@12 := copy *(z); + var@11 := move var@12 == 1: i32; + var@10 := ¬ move var@11; + assert(¬move var@10); + var@15 := copy x; + var@14 := move var@15 == 1: i32; + var@13 := ¬ move var@14; + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 0: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⊥ : i32 ; + y -> ⊥ : i32 ; + z -> ⊥ : &'_ mut (i32) ; + var@4 -> ⊥ : &'_ mut (i32) ; + var@5 -> ⊥ : &'_ mut (i32) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : &'_ mut (i32) ; + var@8 -> ⊥ : i32 ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + x := 0: i32 +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⊥ : i32 ; + y -> ⊥ : i32 ; + z -> ⊥ : &'_ mut (i32) ; + var@4 -> ⊥ : &'_ mut (i32) ; + var@5 -> ⊥ : &'_ mut (i32) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : &'_ mut (i32) ; + var@8 -> ⊥ : i32 ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⊥ : i32 ; + y -> ⊥ : i32 ; + z -> ⊥ : &'_ mut (i32) ; + var@4 -> ⊥ : &'_ mut (i32) ; + var@5 -> ⊥ : &'_ mut (i32) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : &'_ mut (i32) ; + var@8 -> ⊥ : i32 ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + +- op: +0: i32 + +[[32mDebug[39m] +**About to evaluate statement**: [ + y := 0: i32; + var@5 := &mut x; + var@4 := &two-phase *(var@5); + var@7 := &mut y; + var@6 := &two-phase *(var@7); + z := move get_elem<i32>(true, move var@4, move var@6); + var@8 := copy *(z); + *(z) := copy var@8 + 1: i32; + var@12 := copy *(z); + var@11 := move var@12 == 1: i32; + var@10 := ¬ move var@11; + assert(¬move var@10); + var@15 := copy x; + var@14 := move var@15 == 1: i32; + var@13 := ¬ move var@14; + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 0: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 0: i32 ; + y -> ⊥ : i32 ; + z -> ⊥ : &'_ mut (i32) ; + var@4 -> ⊥ : &'_ mut (i32) ; + var@5 -> ⊥ : &'_ mut (i32) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : &'_ mut (i32) ; + var@8 -> ⊥ : i32 ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + y := 0: i32 +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 0: i32 ; + y -> ⊥ : i32 ; + z -> ⊥ : &'_ mut (i32) ; + var@4 -> ⊥ : &'_ mut (i32) ; + var@5 -> ⊥ : &'_ mut (i32) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : &'_ mut (i32) ; + var@8 -> ⊥ : i32 ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 0: i32 ; + y -> ⊥ : i32 ; + z -> ⊥ : &'_ mut (i32) ; + var@4 -> ⊥ : &'_ mut (i32) ; + var@5 -> ⊥ : &'_ mut (i32) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : &'_ mut (i32) ; + var@8 -> ⊥ : i32 ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + +- op: +0: i32 + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@5 := &mut x; + var@4 := &two-phase *(var@5); + var@7 := &mut y; + var@6 := &two-phase *(var@7); + z := move get_elem<i32>(true, move var@4, move var@6); + var@8 := copy *(z); + *(z) := copy var@8 + 1: i32; + var@12 := copy *(z); + var@11 := move var@12 == 1: i32; + var@10 := ¬ move var@11; + assert(¬move var@10); + var@15 := copy x; + var@14 := move var@15 == 1: i32; + var@13 := ¬ move var@14; + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 0: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 0: i32 ; + y -> 0: i32 ; + z -> ⊥ : &'_ mut (i32) ; + var@4 -> ⊥ : &'_ mut (i32) ; + var@5 -> ⊥ : &'_ mut (i32) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : &'_ mut (i32) ; + var@8 -> ⊥ : i32 ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@5 := &mut x +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 0: i32 ; + y -> 0: i32 ; + z -> ⊥ : &'_ mut (i32) ; + var@4 -> ⊥ : &'_ mut (i32) ; + var@5 -> ⊥ : &'_ mut (i32) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : &'_ mut (i32) ; + var@8 -> ⊥ : i32 ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@4 := &two-phase *(var@5); + var@7 := &mut y; + var@6 := &two-phase *(var@7); + z := move get_elem<i32>(true, move var@4, move var@6); + var@8 := copy *(z); + *(z) := copy var@8 + 1: i32; + var@12 := copy *(z); + var@11 := move var@12 == 1: i32; + var@10 := ¬ move var@11; + assert(¬move var@10); + var@15 := copy x; + var@14 := move var@15 == 1: i32; + var@13 := ¬ move var@14; + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 0: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + y -> 0: i32 ; + z -> ⊥ : &'_ mut (i32) ; + var@4 -> ⊥ : &'_ mut (i32) ; + var@5 -> &mut@0 (0: i32) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : &'_ mut (i32) ; + var@8 -> ⊥ : i32 ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@4 := &two-phase *(var@5) +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + y -> 0: i32 ; + z -> ⊥ : &'_ mut (i32) ; + var@4 -> ⊥ : &'_ mut (i32) ; + var@5 -> &mut@0 (0: i32) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : &'_ mut (i32) ; + var@8 -> ⊥ : i32 ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@7 := &mut y; + var@6 := &two-phase *(var@7); + z := move get_elem<i32>(true, move var@4, move var@6); + var@8 := copy *(z); + *(z) := copy var@8 + 1: i32; + var@12 := copy *(z); + var@11 := move var@12 == 1: i32; + var@10 := ¬ move var@11; + assert(¬move var@10); + var@15 := copy x; + var@14 := move var@15 == 1: i32; + var@13 := ¬ move var@14; + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 0: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + y -> 0: i32 ; + z -> ⊥ : &'_ mut (i32) ; + var@4 -> ⌊inactivated_mut@1⌋ ; + var@5 -> &mut@0 (@shared_loan({1}, 0: i32)) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : &'_ mut (i32) ; + var@8 -> ⊥ : i32 ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@7 := &mut y +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + y -> 0: i32 ; + z -> ⊥ : &'_ mut (i32) ; + var@4 -> ⌊inactivated_mut@1⌋ ; + var@5 -> &mut@0 (@shared_loan({1}, 0: i32)) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : &'_ mut (i32) ; + var@8 -> ⊥ : i32 ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@6 := &two-phase *(var@7); + z := move get_elem<i32>(true, move var@4, move var@6); + var@8 := copy *(z); + *(z) := copy var@8 + 1: i32; + var@12 := copy *(z); + var@11 := move var@12 == 1: i32; + var@10 := ¬ move var@11; + assert(¬move var@10); + var@15 := copy x; + var@14 := move var@15 == 1: i32; + var@13 := ¬ move var@14; + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 0: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + y -> ⌊mut@2⌋ ; + z -> ⊥ : &'_ mut (i32) ; + var@4 -> ⌊inactivated_mut@1⌋ ; + var@5 -> &mut@0 (@shared_loan({1}, 0: i32)) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> &mut@2 (0: i32) ; + var@8 -> ⊥ : i32 ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@6 := &two-phase *(var@7) +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + y -> ⌊mut@2⌋ ; + z -> ⊥ : &'_ mut (i32) ; + var@4 -> ⌊inactivated_mut@1⌋ ; + var@5 -> &mut@0 (@shared_loan({1}, 0: i32)) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> &mut@2 (0: i32) ; + var@8 -> ⊥ : i32 ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + z := move get_elem<i32>(true, move var@4, move var@6); + var@8 := copy *(z); + *(z) := copy var@8 + 1: i32; + var@12 := copy *(z); + var@11 := move var@12 == 1: i32; + var@10 := ¬ move var@11; + assert(¬move var@10); + var@15 := copy x; + var@14 := move var@15 == 1: i32; + var@13 := ¬ move var@14; + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 0: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + y -> ⌊mut@2⌋ ; + z -> ⊥ : &'_ mut (i32) ; + var@4 -> ⌊inactivated_mut@1⌋ ; + var@5 -> &mut@0 (@shared_loan({1}, 0: i32)) ; + var@6 -> ⌊inactivated_mut@3⌋ ; + var@7 -> &mut@2 (@shared_loan({3}, 0: i32)) ; + var@8 -> ⊥ : i32 ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + z := move get_elem<i32>(true, move var@4, move var@6) +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + y -> ⌊mut@2⌋ ; + z -> ⊥ : &'_ mut (i32) ; + var@4 -> ⌊inactivated_mut@1⌋ ; + var@5 -> &mut@0 (@shared_loan({1}, 0: i32)) ; + var@6 -> ⌊inactivated_mut@3⌋ ; + var@7 -> &mut@2 (@shared_loan({3}, 0: i32)) ; + var@8 -> ⊥ : i32 ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + y -> ⌊mut@2⌋ ; + z -> ⊥ : &'_ mut (i32) ; + var@4 -> ⌊inactivated_mut@1⌋ ; + var@5 -> &mut@0 (@shared_loan({1}, 0: i32)) ; + var@6 -> ⌊inactivated_mut@3⌋ ; + var@7 -> &mut@2 (@shared_loan({3}, 0: i32)) ; + var@8 -> ⊥ : i32 ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + +- op: +true + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + y -> ⌊mut@2⌋ ; + z -> ⊥ : &'_ mut (i32) ; + var@4 -> ⌊inactivated_mut@1⌋ ; + var@5 -> &mut@0 (@shared_loan({1}, 0: i32)) ; + var@6 -> ⌊inactivated_mut@3⌋ ; + var@7 -> &mut@2 (@shared_loan({3}, 0: i32)) ; + var@8 -> ⊥ : i32 ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + +- op: +move var@4 + +[[32mDebug[39m] activate_inactivated_mut_borrow: resulting value: +{ Values.value = + (Values.Concrete (Values.Scalar { Values.value = 0; int_ty = Types.I32 })); + ty = (Types.Integer Types.I32) } +[[32mDebug[39m] Value to move: +&mut@1 (0: i32) +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + y -> ⌊mut@2⌋ ; + z -> ⊥ : &'_ mut (i32) ; + var@4 -> ⊥ : &'_ mut (i32) ; + var@5 -> &mut@0 (⌊mut@1⌋) ; + var@6 -> ⌊inactivated_mut@3⌋ ; + var@7 -> &mut@2 (@shared_loan({3}, 0: i32)) ; + var@8 -> ⊥ : i32 ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + +- op: +move var@6 + +[[32mDebug[39m] activate_inactivated_mut_borrow: resulting value: +{ Values.value = + (Values.Concrete (Values.Scalar { Values.value = 0; int_ty = Types.I32 })); + ty = (Types.Integer Types.I32) } +[[32mDebug[39m] Value to move: +&mut@3 (0: i32) +[[32mDebug[39m] +**About to evaluate statement**: [ + var@8 := copy *(z); + *(z) := copy var@8 + 1: i32; + var@12 := copy *(z); + var@11 := move var@12 == 1: i32; + var@10 := ¬ move var@11; + assert(¬move var@10); + var@15 := copy x; + var@14 := move var@15 == 1: i32; + var@13 := ¬ move var@14; + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 0: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + y -> ⌊mut@2⌋ ; + z -> s@0 : &r@0 mut (i32) ; + var@4 -> ⊥ : &'_ mut (i32) ; + var@5 -> &mut@0 (⌊mut@1⌋) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> &mut@2 (⌊mut@3⌋) ; + var@8 -> ⊥ : i32 ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; + abs@0{parents={}}{regions={0}} { + true, + &mut@1 (0: i32), + &mut@3 (0: i32), + proj_loans (s@0 : &r@0 mut (i32)) + } +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@8 := copy *(z) +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + y -> ⌊mut@2⌋ ; + z -> s@0 : &r@0 mut (i32) ; + var@4 -> ⊥ : &'_ mut (i32) ; + var@5 -> &mut@0 (⌊mut@1⌋) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> &mut@2 (⌊mut@3⌋) ; + var@8 -> ⊥ : i32 ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; + abs@0{parents={}}{regions={0}} { + true, + &mut@1 (0: i32), + &mut@3 (0: i32), + proj_loans (s@0 : &r@0 mut (i32)) + } +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + y -> ⌊mut@2⌋ ; + z -> s@0 : &r@0 mut (i32) ; + var@4 -> ⊥ : &'_ mut (i32) ; + var@5 -> &mut@0 (⌊mut@1⌋) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> &mut@2 (⌊mut@3⌋) ; + var@8 -> ⊥ : i32 ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; + abs@0{parents={}}{regions={0}} { + true, + &mut@1 (0: i32), + &mut@3 (0: i32), + proj_loans (s@0 : &r@0 mut (i32)) + } +} + + +- op: +copy *(z) + +[[32mDebug[39m] Value to copy: +s@1 : i32 +[[32mDebug[39m] +**About to evaluate statement**: [ + *(z) := copy var@8 + 1: i32; + var@12 := copy *(z); + var@11 := move var@12 == 1: i32; + var@10 := ¬ move var@11; + assert(¬move var@10); + var@15 := copy x; + var@14 := move var@15 == 1: i32; + var@13 := ¬ move var@14; + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 0: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + y -> ⌊mut@2⌋ ; + z -> &mut@4 (s@1 : i32) ; + var@4 -> ⊥ : &'_ mut (i32) ; + var@5 -> &mut@0 (⌊mut@1⌋) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> &mut@2 (⌊mut@3⌋) ; + var@8 -> s@1 : i32 ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; + abs@0{parents={}}{regions={0}} { + true, + &mut@1 (0: i32), + &mut@3 (0: i32), + ⌊mut@4, proj_loans (s@1 : i32)⌋ + } +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + *(z) := copy var@8 + 1: i32 +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + y -> ⌊mut@2⌋ ; + z -> &mut@4 (s@1 : i32) ; + var@4 -> ⊥ : &'_ mut (i32) ; + var@5 -> &mut@0 (⌊mut@1⌋) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> &mut@2 (⌊mut@3⌋) ; + var@8 -> s@1 : i32 ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; + abs@0{parents={}}{regions={0}} { + true, + &mut@1 (0: i32), + &mut@3 (0: i32), + ⌊mut@4, proj_loans (s@1 : i32)⌋ + } +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + y -> ⌊mut@2⌋ ; + z -> &mut@4 (s@1 : i32) ; + var@4 -> ⊥ : &'_ mut (i32) ; + var@5 -> &mut@0 (⌊mut@1⌋) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> &mut@2 (⌊mut@3⌋) ; + var@8 -> s@1 : i32 ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; + abs@0{parents={}}{regions={0}} { + true, + &mut@1 (0: i32), + &mut@3 (0: i32), + ⌊mut@4, proj_loans (s@1 : i32)⌋ + } +} + + +- op: +copy var@8 + +[[32mDebug[39m] Value to copy: +s@1 : i32 +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + y -> ⌊mut@2⌋ ; + z -> &mut@4 (s@1 : i32) ; + var@4 -> ⊥ : &'_ mut (i32) ; + var@5 -> &mut@0 (⌊mut@1⌋) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> &mut@2 (⌊mut@3⌋) ; + var@8 -> s@1 : i32 ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; + abs@0{parents={}}{regions={0}} { + true, + &mut@1 (0: i32), + &mut@3 (0: i32), + ⌊mut@4, proj_loans (s@1 : i32)⌋ + } +} + + +- op: +1: i32 + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@12 := copy *(z); + var@11 := move var@12 == 1: i32; + var@10 := ¬ move var@11; + assert(¬move var@10); + var@15 := copy x; + var@14 := move var@15 == 1: i32; + var@13 := ¬ move var@14; + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 0: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + y -> ⌊mut@2⌋ ; + z -> &mut@4 (s@2 : i32) ; + var@4 -> ⊥ : &'_ mut (i32) ; + var@5 -> &mut@0 (⌊mut@1⌋) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> &mut@2 (⌊mut@3⌋) ; + var@8 -> s@1 : i32 ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; + abs@0{parents={}}{regions={0}} { + true, + &mut@1 (0: i32), + &mut@3 (0: i32), + ⌊mut@4, proj_loans (s@1 : i32)⌋ + } +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@12 := copy *(z) +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + y -> ⌊mut@2⌋ ; + z -> &mut@4 (s@2 : i32) ; + var@4 -> ⊥ : &'_ mut (i32) ; + var@5 -> &mut@0 (⌊mut@1⌋) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> &mut@2 (⌊mut@3⌋) ; + var@8 -> s@1 : i32 ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; + abs@0{parents={}}{regions={0}} { + true, + &mut@1 (0: i32), + &mut@3 (0: i32), + ⌊mut@4, proj_loans (s@1 : i32)⌋ + } +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + y -> ⌊mut@2⌋ ; + z -> &mut@4 (s@2 : i32) ; + var@4 -> ⊥ : &'_ mut (i32) ; + var@5 -> &mut@0 (⌊mut@1⌋) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> &mut@2 (⌊mut@3⌋) ; + var@8 -> s@1 : i32 ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; + abs@0{parents={}}{regions={0}} { + true, + &mut@1 (0: i32), + &mut@3 (0: i32), + ⌊mut@4, proj_loans (s@1 : i32)⌋ + } +} + + +- op: +copy *(z) + +[[32mDebug[39m] Value to copy: +s@2 : i32 +[[32mDebug[39m] +**About to evaluate statement**: [ + var@11 := move var@12 == 1: i32; + var@10 := ¬ move var@11; + assert(¬move var@10); + var@15 := copy x; + var@14 := move var@15 == 1: i32; + var@13 := ¬ move var@14; + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 0: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + y -> ⌊mut@2⌋ ; + z -> &mut@4 (s@2 : i32) ; + var@4 -> ⊥ : &'_ mut (i32) ; + var@5 -> &mut@0 (⌊mut@1⌋) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> &mut@2 (⌊mut@3⌋) ; + var@8 -> s@1 : i32 ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> s@2 : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; + abs@0{parents={}}{regions={0}} { + true, + &mut@1 (0: i32), + &mut@3 (0: i32), + ⌊mut@4, proj_loans (s@1 : i32)⌋ + } +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@11 := move var@12 == 1: i32 +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + y -> ⌊mut@2⌋ ; + z -> &mut@4 (s@2 : i32) ; + var@4 -> ⊥ : &'_ mut (i32) ; + var@5 -> &mut@0 (⌊mut@1⌋) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> &mut@2 (⌊mut@3⌋) ; + var@8 -> s@1 : i32 ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> s@2 : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; + abs@0{parents={}}{regions={0}} { + true, + &mut@1 (0: i32), + &mut@3 (0: i32), + ⌊mut@4, proj_loans (s@1 : i32)⌋ + } +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + y -> ⌊mut@2⌋ ; + z -> &mut@4 (s@2 : i32) ; + var@4 -> ⊥ : &'_ mut (i32) ; + var@5 -> &mut@0 (⌊mut@1⌋) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> &mut@2 (⌊mut@3⌋) ; + var@8 -> s@1 : i32 ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> s@2 : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; + abs@0{parents={}}{regions={0}} { + true, + &mut@1 (0: i32), + &mut@3 (0: i32), + ⌊mut@4, proj_loans (s@1 : i32)⌋ + } +} + + +- op: +move var@12 + +[[32mDebug[39m] Value to move: +s@2 : i32 +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + y -> ⌊mut@2⌋ ; + z -> &mut@4 (s@2 : i32) ; + var@4 -> ⊥ : &'_ mut (i32) ; + var@5 -> &mut@0 (⌊mut@1⌋) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> &mut@2 (⌊mut@3⌋) ; + var@8 -> s@1 : i32 ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; + abs@0{parents={}}{regions={0}} { + true, + &mut@1 (0: i32), + &mut@3 (0: i32), + ⌊mut@4, proj_loans (s@1 : i32)⌋ + } +} + + +- op: +1: i32 + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@10 := ¬ move var@11; + assert(¬move var@10); + var@15 := copy x; + var@14 := move var@15 == 1: i32; + var@13 := ¬ move var@14; + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 0: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + y -> ⌊mut@2⌋ ; + z -> &mut@4 (s@2 : i32) ; + var@4 -> ⊥ : &'_ mut (i32) ; + var@5 -> &mut@0 (⌊mut@1⌋) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> &mut@2 (⌊mut@3⌋) ; + var@8 -> s@1 : i32 ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> ⊥ : bool ; + var@11 -> s@3 : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; + abs@0{parents={}}{regions={0}} { + true, + &mut@1 (0: i32), + &mut@3 (0: i32), + ⌊mut@4, proj_loans (s@1 : i32)⌋ + } +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@10 := ¬ move var@11 +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + y -> ⌊mut@2⌋ ; + z -> &mut@4 (s@2 : i32) ; + var@4 -> ⊥ : &'_ mut (i32) ; + var@5 -> &mut@0 (⌊mut@1⌋) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> &mut@2 (⌊mut@3⌋) ; + var@8 -> s@1 : i32 ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> ⊥ : bool ; + var@11 -> s@3 : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; + abs@0{parents={}}{regions={0}} { + true, + &mut@1 (0: i32), + &mut@3 (0: i32), + ⌊mut@4, proj_loans (s@1 : i32)⌋ + } +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + y -> ⌊mut@2⌋ ; + z -> &mut@4 (s@2 : i32) ; + var@4 -> ⊥ : &'_ mut (i32) ; + var@5 -> &mut@0 (⌊mut@1⌋) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> &mut@2 (⌊mut@3⌋) ; + var@8 -> s@1 : i32 ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> ⊥ : bool ; + var@11 -> s@3 : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; + abs@0{parents={}}{regions={0}} { + true, + &mut@1 (0: i32), + &mut@3 (0: i32), + ⌊mut@4, proj_loans (s@1 : i32)⌋ + } +} + + +- op: +move var@11 + +[[32mDebug[39m] Value to move: +s@3 : bool +[[32mDebug[39m] +**About to evaluate statement**: [ + assert(¬move var@10); + var@15 := copy x; + var@14 := move var@15 == 1: i32; + var@13 := ¬ move var@14; + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 0: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + y -> ⌊mut@2⌋ ; + z -> &mut@4 (s@2 : i32) ; + var@4 -> ⊥ : &'_ mut (i32) ; + var@5 -> &mut@0 (⌊mut@1⌋) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> &mut@2 (⌊mut@3⌋) ; + var@8 -> s@1 : i32 ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> s@4 : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; + abs@0{parents={}}{regions={0}} { + true, + &mut@1 (0: i32), + &mut@3 (0: i32), + ⌊mut@4, proj_loans (s@1 : i32)⌋ + } +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + assert(¬move var@10) +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + y -> ⌊mut@2⌋ ; + z -> &mut@4 (s@2 : i32) ; + var@4 -> ⊥ : &'_ mut (i32) ; + var@5 -> &mut@0 (⌊mut@1⌋) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> &mut@2 (⌊mut@3⌋) ; + var@8 -> s@1 : i32 ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> s@4 : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; + abs@0{parents={}}{regions={0}} { + true, + &mut@1 (0: i32), + &mut@3 (0: i32), + ⌊mut@4, proj_loans (s@1 : i32)⌋ + } +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + y -> ⌊mut@2⌋ ; + z -> &mut@4 (s@2 : i32) ; + var@4 -> ⊥ : &'_ mut (i32) ; + var@5 -> &mut@0 (⌊mut@1⌋) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> &mut@2 (⌊mut@3⌋) ; + var@8 -> s@1 : i32 ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> true ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; + abs@0{parents={}}{regions={0}} { + true, + &mut@1 (0: i32), + &mut@3 (0: i32), + ⌊mut@4, proj_loans (s@1 : i32)⌋ + } +} + + +- op: +move var@10 + +[[32mDebug[39m] Value to move: +true +[[32mDebug[39m] +**About to evaluate statement**: [ + var@15 := copy x; + var@14 := move var@15 == 1: i32; + var@13 := ¬ move var@14; + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 0: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + y -> ⌊mut@2⌋ ; + z -> &mut@4 (s@2 : i32) ; + var@4 -> ⊥ : &'_ mut (i32) ; + var@5 -> &mut@0 (⌊mut@1⌋) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> &mut@2 (⌊mut@3⌋) ; + var@8 -> s@1 : i32 ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; + abs@0{parents={}}{regions={0}} { + true, + &mut@1 (0: i32), + &mut@3 (0: i32), + ⌊mut@4, proj_loans (s@1 : i32)⌋ + } +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@15 := copy x +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + y -> ⌊mut@2⌋ ; + z -> &mut@4 (s@2 : i32) ; + var@4 -> ⊥ : &'_ mut (i32) ; + var@5 -> &mut@0 (⌊mut@1⌋) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> &mut@2 (⌊mut@3⌋) ; + var@8 -> s@1 : i32 ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; + abs@0{parents={}}{regions={0}} { + true, + &mut@1 (0: i32), + &mut@3 (0: i32), + ⌊mut@4, proj_loans (s@1 : i32)⌋ + } +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + y -> ⌊mut@2⌋ ; + z -> &mut@4 (s@2 : i32) ; + var@4 -> ⊥ : &'_ mut (i32) ; + var@5 -> &mut@0 (⌊mut@1⌋) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> &mut@2 (⌊mut@3⌋) ; + var@8 -> s@1 : i32 ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; + abs@0{parents={}}{regions={0}} { + true, + &mut@1 (0: i32), + &mut@3 (0: i32), + ⌊mut@4, proj_loans (s@1 : i32)⌋ + } +} + + +- op: +copy x + +[[32mDebug[39m] Value to copy: +s@5 : i32 +[[32mDebug[39m] +**About to evaluate statement**: [ + var@14 := move var@15 == 1: i32; + var@13 := ¬ move var@14; + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 0: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {0} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> s@5 : i32 ; + y -> ⌊mut@2⌋ ; + z -> ⊥ : &'_ mut (i32) ; + var@4 -> ⊥ : &'_ mut (i32) ; + var@5 -> ⊥ : &'_ mut (i32) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> &mut@2 (s@6 : i32) ; + var@8 -> s@1 : i32 ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> s@5 : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@14 := move var@15 == 1: i32 +] + +**Context**: +# Ended regions: {0} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> s@5 : i32 ; + y -> ⌊mut@2⌋ ; + z -> ⊥ : &'_ mut (i32) ; + var@4 -> ⊥ : &'_ mut (i32) ; + var@5 -> ⊥ : &'_ mut (i32) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> &mut@2 (s@6 : i32) ; + var@8 -> s@1 : i32 ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> s@5 : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {0} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> s@5 : i32 ; + y -> ⌊mut@2⌋ ; + z -> ⊥ : &'_ mut (i32) ; + var@4 -> ⊥ : &'_ mut (i32) ; + var@5 -> ⊥ : &'_ mut (i32) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> &mut@2 (s@6 : i32) ; + var@8 -> s@1 : i32 ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> s@5 : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + +- op: +move var@15 + +[[32mDebug[39m] Value to move: +s@5 : i32 +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {0} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> s@5 : i32 ; + y -> ⌊mut@2⌋ ; + z -> ⊥ : &'_ mut (i32) ; + var@4 -> ⊥ : &'_ mut (i32) ; + var@5 -> ⊥ : &'_ mut (i32) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> &mut@2 (s@6 : i32) ; + var@8 -> s@1 : i32 ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + +- op: +1: i32 + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@13 := ¬ move var@14; + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 0: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {0} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> s@5 : i32 ; + y -> ⌊mut@2⌋ ; + z -> ⊥ : &'_ mut (i32) ; + var@4 -> ⊥ : &'_ mut (i32) ; + var@5 -> ⊥ : &'_ mut (i32) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> &mut@2 (s@6 : i32) ; + var@8 -> s@1 : i32 ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> s@7 : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@13 := ¬ move var@14 +] + +**Context**: +# Ended regions: {0} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> s@5 : i32 ; + y -> ⌊mut@2⌋ ; + z -> ⊥ : &'_ mut (i32) ; + var@4 -> ⊥ : &'_ mut (i32) ; + var@5 -> ⊥ : &'_ mut (i32) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> &mut@2 (s@6 : i32) ; + var@8 -> s@1 : i32 ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> s@7 : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {0} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> s@5 : i32 ; + y -> ⌊mut@2⌋ ; + z -> ⊥ : &'_ mut (i32) ; + var@4 -> ⊥ : &'_ mut (i32) ; + var@5 -> ⊥ : &'_ mut (i32) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> &mut@2 (s@6 : i32) ; + var@8 -> s@1 : i32 ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> s@7 : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + +- op: +move var@14 + +[[32mDebug[39m] Value to move: +s@7 : bool +[[32mDebug[39m] +**About to evaluate statement**: [ + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 0: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {0} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> s@5 : i32 ; + y -> ⌊mut@2⌋ ; + z -> ⊥ : &'_ mut (i32) ; + var@4 -> ⊥ : &'_ mut (i32) ; + var@5 -> ⊥ : &'_ mut (i32) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> &mut@2 (s@6 : i32) ; + var@8 -> s@1 : i32 ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> s@8 : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + assert(¬move var@13) +] + +**Context**: +# Ended regions: {0} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> s@5 : i32 ; + y -> ⌊mut@2⌋ ; + z -> ⊥ : &'_ mut (i32) ; + var@4 -> ⊥ : &'_ mut (i32) ; + var@5 -> ⊥ : &'_ mut (i32) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> &mut@2 (s@6 : i32) ; + var@8 -> s@1 : i32 ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> s@8 : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {0} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> s@5 : i32 ; + y -> ⌊mut@2⌋ ; + z -> ⊥ : &'_ mut (i32) ; + var@4 -> ⊥ : &'_ mut (i32) ; + var@5 -> ⊥ : &'_ mut (i32) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> &mut@2 (s@6 : i32) ; + var@8 -> s@1 : i32 ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> true ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + +- op: +move var@13 + +[[32mDebug[39m] Value to move: +true +[[32mDebug[39m] +**About to evaluate statement**: [ + var@18 := copy y; + var@17 := move var@18 == 0: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {0} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> s@5 : i32 ; + y -> ⌊mut@2⌋ ; + z -> ⊥ : &'_ mut (i32) ; + var@4 -> ⊥ : &'_ mut (i32) ; + var@5 -> ⊥ : &'_ mut (i32) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> &mut@2 (s@6 : i32) ; + var@8 -> s@1 : i32 ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@18 := copy y +] + +**Context**: +# Ended regions: {0} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> s@5 : i32 ; + y -> ⌊mut@2⌋ ; + z -> ⊥ : &'_ mut (i32) ; + var@4 -> ⊥ : &'_ mut (i32) ; + var@5 -> ⊥ : &'_ mut (i32) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> &mut@2 (s@6 : i32) ; + var@8 -> s@1 : i32 ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {0} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> s@5 : i32 ; + y -> ⌊mut@2⌋ ; + z -> ⊥ : &'_ mut (i32) ; + var@4 -> ⊥ : &'_ mut (i32) ; + var@5 -> ⊥ : &'_ mut (i32) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> &mut@2 (s@6 : i32) ; + var@8 -> s@1 : i32 ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + +- op: +copy y + +[[32mDebug[39m] Value to copy: +s@6 : i32 +[[32mDebug[39m] +**About to evaluate statement**: [ + var@17 := move var@18 == 0: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {0} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> s@5 : i32 ; + y -> s@6 : i32 ; + z -> ⊥ : &'_ mut (i32) ; + var@4 -> ⊥ : &'_ mut (i32) ; + var@5 -> ⊥ : &'_ mut (i32) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : &'_ mut (i32) ; + var@8 -> s@1 : i32 ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> s@6 : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@17 := move var@18 == 0: i32 +] + +**Context**: +# Ended regions: {0} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> s@5 : i32 ; + y -> s@6 : i32 ; + z -> ⊥ : &'_ mut (i32) ; + var@4 -> ⊥ : &'_ mut (i32) ; + var@5 -> ⊥ : &'_ mut (i32) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : &'_ mut (i32) ; + var@8 -> s@1 : i32 ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> s@6 : i32 ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {0} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> s@5 : i32 ; + y -> s@6 : i32 ; + z -> ⊥ : &'_ mut (i32) ; + var@4 -> ⊥ : &'_ mut (i32) ; + var@5 -> ⊥ : &'_ mut (i32) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : &'_ mut (i32) ; + var@8 -> s@1 : i32 ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> s@6 : i32 ; +} + + +- op: +move var@18 + +[[32mDebug[39m] Value to move: +s@6 : i32 +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {0} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> s@5 : i32 ; + y -> s@6 : i32 ; + z -> ⊥ : &'_ mut (i32) ; + var@4 -> ⊥ : &'_ mut (i32) ; + var@5 -> ⊥ : &'_ mut (i32) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : &'_ mut (i32) ; + var@8 -> s@1 : i32 ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + +- op: +0: i32 + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {0} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> s@5 : i32 ; + y -> s@6 : i32 ; + z -> ⊥ : &'_ mut (i32) ; + var@4 -> ⊥ : &'_ mut (i32) ; + var@5 -> ⊥ : &'_ mut (i32) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : &'_ mut (i32) ; + var@8 -> s@1 : i32 ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> s@9 : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@16 := ¬ move var@17 +] + +**Context**: +# Ended regions: {0} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> s@5 : i32 ; + y -> s@6 : i32 ; + z -> ⊥ : &'_ mut (i32) ; + var@4 -> ⊥ : &'_ mut (i32) ; + var@5 -> ⊥ : &'_ mut (i32) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : &'_ mut (i32) ; + var@8 -> s@1 : i32 ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> s@9 : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {0} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> s@5 : i32 ; + y -> s@6 : i32 ; + z -> ⊥ : &'_ mut (i32) ; + var@4 -> ⊥ : &'_ mut (i32) ; + var@5 -> ⊥ : &'_ mut (i32) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : &'_ mut (i32) ; + var@8 -> s@1 : i32 ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> s@9 : bool ; + var@18 -> ⊥ : i32 ; +} + + +- op: +move var@17 + +[[32mDebug[39m] Value to move: +s@9 : bool +[[32mDebug[39m] +**About to evaluate statement**: [ + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {0} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> s@5 : i32 ; + y -> s@6 : i32 ; + z -> ⊥ : &'_ mut (i32) ; + var@4 -> ⊥ : &'_ mut (i32) ; + var@5 -> ⊥ : &'_ mut (i32) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : &'_ mut (i32) ; + var@8 -> s@1 : i32 ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> s@10 : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + assert(¬move var@16) +] + +**Context**: +# Ended regions: {0} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> s@5 : i32 ; + y -> s@6 : i32 ; + z -> ⊥ : &'_ mut (i32) ; + var@4 -> ⊥ : &'_ mut (i32) ; + var@5 -> ⊥ : &'_ mut (i32) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : &'_ mut (i32) ; + var@8 -> s@1 : i32 ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> s@10 : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {0} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> s@5 : i32 ; + y -> s@6 : i32 ; + z -> ⊥ : &'_ mut (i32) ; + var@4 -> ⊥ : &'_ mut (i32) ; + var@5 -> ⊥ : &'_ mut (i32) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : &'_ mut (i32) ; + var@8 -> s@1 : i32 ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> true ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + +- op: +move var@16 + +[[32mDebug[39m] Value to move: +true +[[32mDebug[39m] +**About to evaluate statement**: [ + return +] + +**Context**: +# Ended regions: {0} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> s@5 : i32 ; + y -> s@6 : i32 ; + z -> ⊥ : &'_ mut (i32) ; + var@4 -> ⊥ : &'_ mut (i32) ; + var@5 -> ⊥ : &'_ mut (i32) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : &'_ mut (i32) ; + var@8 -> s@1 : i32 ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[[32mDebug[39m] test_function_symbolic: id_mut_mut +[[32mDebug[39m] +**About to evaluate statement**: [ + var@2 := &mut *(x); + var@0 := &mut *(var@2); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + abs@0{parents={}}{regions={0}} { + proj_loans (s@0 : &r@0 mut (&r@1 mut (T))) + } + abs@1{parents={0}}{regions={1}} { + proj_loans (s@0 : &r@0 mut (&r@1 mut (T))) + } + var@0 -> ⊥ : &'_ mut (&'_ mut (T)) ; + x -> s@0 : &r@0 mut (&r@1 mut (T)) ; + var@2 -> ⊥ : &'_ mut (&'_ mut (T)) ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@2 := &mut *(x) +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + abs@0{parents={}}{regions={0}} { + proj_loans (s@0 : &r@0 mut (&r@1 mut (T))) + } + abs@1{parents={0}}{regions={1}} { + proj_loans (s@0 : &r@0 mut (&r@1 mut (T))) + } + var@0 -> ⊥ : &'_ mut (&'_ mut (T)) ; + x -> s@0 : &r@0 mut (&r@1 mut (T)) ; + var@2 -> ⊥ : &'_ mut (&'_ mut (T)) ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@0 := &mut *(var@2); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + abs@0{parents={}}{regions={0}} { + ⌊mut@0, proj_loans (s@1 : &r@1 mut (T))⌋ + } + abs@1{parents={0}}{regions={1}} { + @ignored_mut_loan(0, proj_loans (s@1 : &r@1 mut (T))) + } + var@0 -> ⊥ : &'_ mut (&'_ mut (T)) ; + x -> &mut@0 (⌊mut@1⌋) ; + var@2 -> &mut@1 (s@1 : &r@1 mut (T)) ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@0 := &mut *(var@2) +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + abs@0{parents={}}{regions={0}} { + ⌊mut@0, proj_loans (s@1 : &r@1 mut (T))⌋ + } + abs@1{parents={0}}{regions={1}} { + @ignored_mut_loan(0, proj_loans (s@1 : &r@1 mut (T))) + } + var@0 -> ⊥ : &'_ mut (&'_ mut (T)) ; + x -> &mut@0 (⌊mut@1⌋) ; + var@2 -> &mut@1 (s@1 : &r@1 mut (T)) ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + abs@0{parents={}}{regions={0}} { + ⌊mut@0, proj_loans (s@1 : &r@1 mut (T))⌋ + } + abs@1{parents={0}}{regions={1}} { + @ignored_mut_loan(0, proj_loans (s@1 : &r@1 mut (T))) + } + var@0 -> &mut@2 (s@1 : &r@1 mut (T)) ; + x -> &mut@0 (⌊mut@1⌋) ; + var@2 -> &mut@1 (⌊mut@2⌋) ; +} + + + +[[32mDebug[39m] test_function_symbolic: id_mut_pair +[[32mDebug[39m] +**About to evaluate statement**: [ + var@2 := &mut *(x); + var@0 := &mut *(var@2); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + abs@0{parents={}}{regions={0}} { + proj_loans (s@0 : &r@0 mut ((&r@0 mut (T), u32))) + } + var@0 -> ⊥ : &'_ mut ((&'_ mut (T), u32)) ; + x -> s@0 : &r@0 mut ((&r@0 mut (T), u32)) ; + var@2 -> ⊥ : &'_ mut ((&'_ mut (T), u32)) ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@2 := &mut *(x) +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + abs@0{parents={}}{regions={0}} { + proj_loans (s@0 : &r@0 mut ((&r@0 mut (T), u32))) + } + var@0 -> ⊥ : &'_ mut ((&'_ mut (T), u32)) ; + x -> s@0 : &r@0 mut ((&r@0 mut (T), u32)) ; + var@2 -> ⊥ : &'_ mut ((&'_ mut (T), u32)) ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@0 := &mut *(var@2); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + abs@0{parents={}}{regions={0}} { + ⌊mut@0, proj_loans (s@1 : (&r@0 mut (T), u32))⌋ + } + var@0 -> ⊥ : &'_ mut ((&'_ mut (T), u32)) ; + x -> &mut@0 (⌊mut@1⌋) ; + var@2 -> &mut@1 (s@1 : (&r@0 mut (T), u32)) ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@0 := &mut *(var@2) +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + abs@0{parents={}}{regions={0}} { + ⌊mut@0, proj_loans (s@1 : (&r@0 mut (T), u32))⌋ + } + var@0 -> ⊥ : &'_ mut ((&'_ mut (T), u32)) ; + x -> &mut@0 (⌊mut@1⌋) ; + var@2 -> &mut@1 (s@1 : (&r@0 mut (T), u32)) ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + abs@0{parents={}}{regions={0}} { + ⌊mut@0, proj_loans (s@1 : (&r@0 mut (T), u32))⌋ + } + var@0 -> &mut@2 (s@1 : (&r@0 mut (T), u32)) ; + x -> &mut@0 (⌊mut@1⌋) ; + var@2 -> &mut@1 (⌊mut@2⌋) ; +} + + + +[[32mDebug[39m] test_function_symbolic: id_mut_pair_test1 +[[32mDebug[39m] +**About to evaluate statement**: [ + x := 0: u32; + px := &mut x; + var@4 := move px; + (p).0 := move var@4; + (p).1 := 1: u32; + pp0 := &mut p; + var@7 := &two-phase *(pp0); + pp1 := move id_mut_pair<u32>(move var@7); + y := 2: u32; + var@10 := &mut y; + var@9 := &mut *(var@10); + *((pp1).0) := move var@9; + *((pp1).1) := 3: u32; + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⊥ : u32 ; + px -> ⊥ : &'_ mut (u32) ; + p -> ⊥ : (&'_ mut (u32), u32) ; + var@4 -> ⊥ : &'_ mut (u32) ; + pp0 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + pp1 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + var@7 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + y -> ⊥ : u32 ; + var@9 -> ⊥ : &'_ mut (u32) ; + var@10 -> ⊥ : &'_ mut (u32) ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + x := 0: u32 +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⊥ : u32 ; + px -> ⊥ : &'_ mut (u32) ; + p -> ⊥ : (&'_ mut (u32), u32) ; + var@4 -> ⊥ : &'_ mut (u32) ; + pp0 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + pp1 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + var@7 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + y -> ⊥ : u32 ; + var@9 -> ⊥ : &'_ mut (u32) ; + var@10 -> ⊥ : &'_ mut (u32) ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⊥ : u32 ; + px -> ⊥ : &'_ mut (u32) ; + p -> ⊥ : (&'_ mut (u32), u32) ; + var@4 -> ⊥ : &'_ mut (u32) ; + pp0 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + pp1 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + var@7 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + y -> ⊥ : u32 ; + var@9 -> ⊥ : &'_ mut (u32) ; + var@10 -> ⊥ : &'_ mut (u32) ; +} + + +- op: +0: u32 + +[[32mDebug[39m] +**About to evaluate statement**: [ + px := &mut x; + var@4 := move px; + (p).0 := move var@4; + (p).1 := 1: u32; + pp0 := &mut p; + var@7 := &two-phase *(pp0); + pp1 := move id_mut_pair<u32>(move var@7); + y := 2: u32; + var@10 := &mut y; + var@9 := &mut *(var@10); + *((pp1).0) := move var@9; + *((pp1).1) := 3: u32; + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 0: u32 ; + px -> ⊥ : &'_ mut (u32) ; + p -> ⊥ : (&'_ mut (u32), u32) ; + var@4 -> ⊥ : &'_ mut (u32) ; + pp0 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + pp1 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + var@7 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + y -> ⊥ : u32 ; + var@9 -> ⊥ : &'_ mut (u32) ; + var@10 -> ⊥ : &'_ mut (u32) ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + px := &mut x +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 0: u32 ; + px -> ⊥ : &'_ mut (u32) ; + p -> ⊥ : (&'_ mut (u32), u32) ; + var@4 -> ⊥ : &'_ mut (u32) ; + pp0 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + pp1 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + var@7 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + y -> ⊥ : u32 ; + var@9 -> ⊥ : &'_ mut (u32) ; + var@10 -> ⊥ : &'_ mut (u32) ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@4 := move px; + (p).0 := move var@4; + (p).1 := 1: u32; + pp0 := &mut p; + var@7 := &two-phase *(pp0); + pp1 := move id_mut_pair<u32>(move var@7); + y := 2: u32; + var@10 := &mut y; + var@9 := &mut *(var@10); + *((pp1).0) := move var@9; + *((pp1).1) := 3: u32; + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + px -> &mut@0 (0: u32) ; + p -> ⊥ : (&'_ mut (u32), u32) ; + var@4 -> ⊥ : &'_ mut (u32) ; + pp0 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + pp1 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + var@7 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + y -> ⊥ : u32 ; + var@9 -> ⊥ : &'_ mut (u32) ; + var@10 -> ⊥ : &'_ mut (u32) ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@4 := move px +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + px -> &mut@0 (0: u32) ; + p -> ⊥ : (&'_ mut (u32), u32) ; + var@4 -> ⊥ : &'_ mut (u32) ; + pp0 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + pp1 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + var@7 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + y -> ⊥ : u32 ; + var@9 -> ⊥ : &'_ mut (u32) ; + var@10 -> ⊥ : &'_ mut (u32) ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + px -> &mut@0 (0: u32) ; + p -> ⊥ : (&'_ mut (u32), u32) ; + var@4 -> ⊥ : &'_ mut (u32) ; + pp0 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + pp1 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + var@7 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + y -> ⊥ : u32 ; + var@9 -> ⊥ : &'_ mut (u32) ; + var@10 -> ⊥ : &'_ mut (u32) ; +} + + +- op: +move px + +[[32mDebug[39m] Value to move: +&mut@0 (0: u32) +[[32mDebug[39m] +**About to evaluate statement**: [ + (p).0 := move var@4; + (p).1 := 1: u32; + pp0 := &mut p; + var@7 := &two-phase *(pp0); + pp1 := move id_mut_pair<u32>(move var@7); + y := 2: u32; + var@10 := &mut y; + var@9 := &mut *(var@10); + *((pp1).0) := move var@9; + *((pp1).1) := 3: u32; + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + px -> ⊥ : &'_ mut (u32) ; + p -> ⊥ : (&'_ mut (u32), u32) ; + var@4 -> &mut@0 (0: u32) ; + pp0 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + pp1 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + var@7 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + y -> ⊥ : u32 ; + var@9 -> ⊥ : &'_ mut (u32) ; + var@10 -> ⊥ : &'_ mut (u32) ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + (p).0 := move var@4 +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + px -> ⊥ : &'_ mut (u32) ; + p -> ⊥ : (&'_ mut (u32), u32) ; + var@4 -> &mut@0 (0: u32) ; + pp0 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + pp1 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + var@7 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + y -> ⊥ : u32 ; + var@9 -> ⊥ : &'_ mut (u32) ; + var@10 -> ⊥ : &'_ mut (u32) ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + px -> ⊥ : &'_ mut (u32) ; + p -> ⊥ : (&'_ mut (u32), u32) ; + var@4 -> &mut@0 (0: u32) ; + pp0 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + pp1 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + var@7 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + y -> ⊥ : u32 ; + var@9 -> ⊥ : &'_ mut (u32) ; + var@10 -> ⊥ : &'_ mut (u32) ; +} + + +- op: +move var@4 + +[[32mDebug[39m] Value to move: +&mut@0 (0: u32) +[[32mDebug[39m] expand_bottom_value_from_projection: +pe: (Expressions.Field ((Expressions.ProjTuple 2), 0)) +ty: (Types.Adt (Types.Tuple, [], + [(Types.Ref (Types.Erased, (Types.Integer Types.U32), Types.Mut)); + (Types.Integer Types.U32)] + )) +[[32mDebug[39m] +**About to evaluate statement**: [ + (p).1 := 1: u32; + pp0 := &mut p; + var@7 := &two-phase *(pp0); + pp1 := move id_mut_pair<u32>(move var@7); + y := 2: u32; + var@10 := &mut y; + var@9 := &mut *(var@10); + *((pp1).0) := move var@9; + *((pp1).1) := 3: u32; + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + px -> ⊥ : &'_ mut (u32) ; + p -> (&mut@0 (0: u32), ⊥ : u32) ; + var@4 -> ⊥ : &'_ mut (u32) ; + pp0 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + pp1 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + var@7 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + y -> ⊥ : u32 ; + var@9 -> ⊥ : &'_ mut (u32) ; + var@10 -> ⊥ : &'_ mut (u32) ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + (p).1 := 1: u32 +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + px -> ⊥ : &'_ mut (u32) ; + p -> (&mut@0 (0: u32), ⊥ : u32) ; + var@4 -> ⊥ : &'_ mut (u32) ; + pp0 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + pp1 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + var@7 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + y -> ⊥ : u32 ; + var@9 -> ⊥ : &'_ mut (u32) ; + var@10 -> ⊥ : &'_ mut (u32) ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + px -> ⊥ : &'_ mut (u32) ; + p -> (&mut@0 (0: u32), ⊥ : u32) ; + var@4 -> ⊥ : &'_ mut (u32) ; + pp0 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + pp1 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + var@7 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + y -> ⊥ : u32 ; + var@9 -> ⊥ : &'_ mut (u32) ; + var@10 -> ⊥ : &'_ mut (u32) ; +} + + +- op: +1: u32 + +[[32mDebug[39m] +**About to evaluate statement**: [ + pp0 := &mut p; + var@7 := &two-phase *(pp0); + pp1 := move id_mut_pair<u32>(move var@7); + y := 2: u32; + var@10 := &mut y; + var@9 := &mut *(var@10); + *((pp1).0) := move var@9; + *((pp1).1) := 3: u32; + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + px -> ⊥ : &'_ mut (u32) ; + p -> (&mut@0 (0: u32), 1: u32) ; + var@4 -> ⊥ : &'_ mut (u32) ; + pp0 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + pp1 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + var@7 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + y -> ⊥ : u32 ; + var@9 -> ⊥ : &'_ mut (u32) ; + var@10 -> ⊥ : &'_ mut (u32) ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + pp0 := &mut p +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + px -> ⊥ : &'_ mut (u32) ; + p -> (&mut@0 (0: u32), 1: u32) ; + var@4 -> ⊥ : &'_ mut (u32) ; + pp0 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + pp1 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + var@7 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + y -> ⊥ : u32 ; + var@9 -> ⊥ : &'_ mut (u32) ; + var@10 -> ⊥ : &'_ mut (u32) ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@7 := &two-phase *(pp0); + pp1 := move id_mut_pair<u32>(move var@7); + y := 2: u32; + var@10 := &mut y; + var@9 := &mut *(var@10); + *((pp1).0) := move var@9; + *((pp1).1) := 3: u32; + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + px -> ⊥ : &'_ mut (u32) ; + p -> ⌊mut@1⌋ ; + var@4 -> ⊥ : &'_ mut (u32) ; + pp0 -> &mut@1 ((&mut@0 (0: u32), 1: u32)) ; + pp1 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + var@7 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + y -> ⊥ : u32 ; + var@9 -> ⊥ : &'_ mut (u32) ; + var@10 -> ⊥ : &'_ mut (u32) ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@7 := &two-phase *(pp0) +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + px -> ⊥ : &'_ mut (u32) ; + p -> ⌊mut@1⌋ ; + var@4 -> ⊥ : &'_ mut (u32) ; + pp0 -> &mut@1 ((&mut@0 (0: u32), 1: u32)) ; + pp1 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + var@7 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + y -> ⊥ : u32 ; + var@9 -> ⊥ : &'_ mut (u32) ; + var@10 -> ⊥ : &'_ mut (u32) ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + pp1 := move id_mut_pair<u32>(move var@7); + y := 2: u32; + var@10 := &mut y; + var@9 := &mut *(var@10); + *((pp1).0) := move var@9; + *((pp1).1) := 3: u32; + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + px -> ⊥ : &'_ mut (u32) ; + p -> ⌊mut@1⌋ ; + var@4 -> ⊥ : &'_ mut (u32) ; + pp0 -> &mut@1 (@shared_loan({2}, (&mut@0 (0: u32), 1: u32))) ; + pp1 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + var@7 -> ⌊inactivated_mut@2⌋ ; + y -> ⊥ : u32 ; + var@9 -> ⊥ : &'_ mut (u32) ; + var@10 -> ⊥ : &'_ mut (u32) ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + pp1 := move id_mut_pair<u32>(move var@7) +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + px -> ⊥ : &'_ mut (u32) ; + p -> ⌊mut@1⌋ ; + var@4 -> ⊥ : &'_ mut (u32) ; + pp0 -> &mut@1 (@shared_loan({2}, (&mut@0 (0: u32), 1: u32))) ; + pp1 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + var@7 -> ⌊inactivated_mut@2⌋ ; + y -> ⊥ : u32 ; + var@9 -> ⊥ : &'_ mut (u32) ; + var@10 -> ⊥ : &'_ mut (u32) ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + px -> ⊥ : &'_ mut (u32) ; + p -> ⌊mut@1⌋ ; + var@4 -> ⊥ : &'_ mut (u32) ; + pp0 -> &mut@1 (@shared_loan({2}, (&mut@0 (0: u32), 1: u32))) ; + pp1 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + var@7 -> ⌊inactivated_mut@2⌋ ; + y -> ⊥ : u32 ; + var@9 -> ⊥ : &'_ mut (u32) ; + var@10 -> ⊥ : &'_ mut (u32) ; +} + + +- op: +move var@7 + +[[32mDebug[39m] activate_inactivated_mut_borrow: resulting value: +{ Values.value = + (Values.Adt + { Values.variant_id = <opaque>; + field_values = + [{ Values.value = + (Values.Borrow + (Values.MutBorrow (<opaque>, + { Values.value = + (Values.Concrete + (Values.Scalar { Values.value = 0; int_ty = Types.U32 })); + ty = (Types.Integer Types.U32) } + ))); + ty = + (Types.Ref (Types.Erased, (Types.Integer Types.U32), Types.Mut)) }; + { Values.value = + (Values.Concrete + (Values.Scalar { Values.value = 1; int_ty = Types.U32 })); + ty = (Types.Integer Types.U32) } + ] + }); + ty = + (Types.Adt (Types.Tuple, [], + [(Types.Ref (Types.Erased, (Types.Integer Types.U32), Types.Mut)); + (Types.Integer Types.U32)] + )) + } +[[32mDebug[39m] Value to move: +&mut@2 ((&mut@0 (0: u32), 1: u32)) +[[32mDebug[39m] +**About to evaluate statement**: [ + y := 2: u32; + var@10 := &mut y; + var@9 := &mut *(var@10); + *((pp1).0) := move var@9; + *((pp1).1) := 3: u32; + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + px -> ⊥ : &'_ mut (u32) ; + p -> ⌊mut@1⌋ ; + var@4 -> ⊥ : &'_ mut (u32) ; + pp0 -> &mut@1 (⌊mut@2⌋) ; + pp1 -> s@0 : &r@0 mut ((&r@0 mut (u32), u32)) ; + var@7 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + y -> ⊥ : u32 ; + var@9 -> ⊥ : &'_ mut (u32) ; + var@10 -> ⊥ : &'_ mut (u32) ; + abs@0{parents={}}{regions={0}} { + &mut@2 ((&mut@0 (0: u32), 1: u32)), + proj_loans (s@0 : &r@0 mut ((&r@0 mut (u32), u32))) + } +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + y := 2: u32 +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + px -> ⊥ : &'_ mut (u32) ; + p -> ⌊mut@1⌋ ; + var@4 -> ⊥ : &'_ mut (u32) ; + pp0 -> &mut@1 (⌊mut@2⌋) ; + pp1 -> s@0 : &r@0 mut ((&r@0 mut (u32), u32)) ; + var@7 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + y -> ⊥ : u32 ; + var@9 -> ⊥ : &'_ mut (u32) ; + var@10 -> ⊥ : &'_ mut (u32) ; + abs@0{parents={}}{regions={0}} { + &mut@2 ((&mut@0 (0: u32), 1: u32)), + proj_loans (s@0 : &r@0 mut ((&r@0 mut (u32), u32))) + } +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + px -> ⊥ : &'_ mut (u32) ; + p -> ⌊mut@1⌋ ; + var@4 -> ⊥ : &'_ mut (u32) ; + pp0 -> &mut@1 (⌊mut@2⌋) ; + pp1 -> s@0 : &r@0 mut ((&r@0 mut (u32), u32)) ; + var@7 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + y -> ⊥ : u32 ; + var@9 -> ⊥ : &'_ mut (u32) ; + var@10 -> ⊥ : &'_ mut (u32) ; + abs@0{parents={}}{regions={0}} { + &mut@2 ((&mut@0 (0: u32), 1: u32)), + proj_loans (s@0 : &r@0 mut ((&r@0 mut (u32), u32))) + } +} + + +- op: +2: u32 + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@10 := &mut y; + var@9 := &mut *(var@10); + *((pp1).0) := move var@9; + *((pp1).1) := 3: u32; + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + px -> ⊥ : &'_ mut (u32) ; + p -> ⌊mut@1⌋ ; + var@4 -> ⊥ : &'_ mut (u32) ; + pp0 -> &mut@1 (⌊mut@2⌋) ; + pp1 -> s@0 : &r@0 mut ((&r@0 mut (u32), u32)) ; + var@7 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + y -> 2: u32 ; + var@9 -> ⊥ : &'_ mut (u32) ; + var@10 -> ⊥ : &'_ mut (u32) ; + abs@0{parents={}}{regions={0}} { + &mut@2 ((&mut@0 (0: u32), 1: u32)), + proj_loans (s@0 : &r@0 mut ((&r@0 mut (u32), u32))) + } +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@10 := &mut y +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + px -> ⊥ : &'_ mut (u32) ; + p -> ⌊mut@1⌋ ; + var@4 -> ⊥ : &'_ mut (u32) ; + pp0 -> &mut@1 (⌊mut@2⌋) ; + pp1 -> s@0 : &r@0 mut ((&r@0 mut (u32), u32)) ; + var@7 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + y -> 2: u32 ; + var@9 -> ⊥ : &'_ mut (u32) ; + var@10 -> ⊥ : &'_ mut (u32) ; + abs@0{parents={}}{regions={0}} { + &mut@2 ((&mut@0 (0: u32), 1: u32)), + proj_loans (s@0 : &r@0 mut ((&r@0 mut (u32), u32))) + } +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@9 := &mut *(var@10); + *((pp1).0) := move var@9; + *((pp1).1) := 3: u32; + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + px -> ⊥ : &'_ mut (u32) ; + p -> ⌊mut@1⌋ ; + var@4 -> ⊥ : &'_ mut (u32) ; + pp0 -> &mut@1 (⌊mut@2⌋) ; + pp1 -> s@0 : &r@0 mut ((&r@0 mut (u32), u32)) ; + var@7 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + y -> ⌊mut@3⌋ ; + var@9 -> ⊥ : &'_ mut (u32) ; + var@10 -> &mut@3 (2: u32) ; + abs@0{parents={}}{regions={0}} { + &mut@2 ((&mut@0 (0: u32), 1: u32)), + proj_loans (s@0 : &r@0 mut ((&r@0 mut (u32), u32))) + } +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@9 := &mut *(var@10) +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + px -> ⊥ : &'_ mut (u32) ; + p -> ⌊mut@1⌋ ; + var@4 -> ⊥ : &'_ mut (u32) ; + pp0 -> &mut@1 (⌊mut@2⌋) ; + pp1 -> s@0 : &r@0 mut ((&r@0 mut (u32), u32)) ; + var@7 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + y -> ⌊mut@3⌋ ; + var@9 -> ⊥ : &'_ mut (u32) ; + var@10 -> &mut@3 (2: u32) ; + abs@0{parents={}}{regions={0}} { + &mut@2 ((&mut@0 (0: u32), 1: u32)), + proj_loans (s@0 : &r@0 mut ((&r@0 mut (u32), u32))) + } +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + *((pp1).0) := move var@9; + *((pp1).1) := 3: u32; + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + px -> ⊥ : &'_ mut (u32) ; + p -> ⌊mut@1⌋ ; + var@4 -> ⊥ : &'_ mut (u32) ; + pp0 -> &mut@1 (⌊mut@2⌋) ; + pp1 -> s@0 : &r@0 mut ((&r@0 mut (u32), u32)) ; + var@7 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + y -> ⌊mut@3⌋ ; + var@9 -> &mut@4 (2: u32) ; + var@10 -> &mut@3 (⌊mut@4⌋) ; + abs@0{parents={}}{regions={0}} { + &mut@2 ((&mut@0 (0: u32), 1: u32)), + proj_loans (s@0 : &r@0 mut ((&r@0 mut (u32), u32))) + } +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + *((pp1).0) := move var@9 +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + px -> ⊥ : &'_ mut (u32) ; + p -> ⌊mut@1⌋ ; + var@4 -> ⊥ : &'_ mut (u32) ; + pp0 -> &mut@1 (⌊mut@2⌋) ; + pp1 -> s@0 : &r@0 mut ((&r@0 mut (u32), u32)) ; + var@7 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + y -> ⌊mut@3⌋ ; + var@9 -> &mut@4 (2: u32) ; + var@10 -> &mut@3 (⌊mut@4⌋) ; + abs@0{parents={}}{regions={0}} { + &mut@2 ((&mut@0 (0: u32), 1: u32)), + proj_loans (s@0 : &r@0 mut ((&r@0 mut (u32), u32))) + } +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + px -> ⊥ : &'_ mut (u32) ; + p -> ⌊mut@1⌋ ; + var@4 -> ⊥ : &'_ mut (u32) ; + pp0 -> &mut@1 (⌊mut@2⌋) ; + pp1 -> s@0 : &r@0 mut ((&r@0 mut (u32), u32)) ; + var@7 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + y -> ⌊mut@3⌋ ; + var@9 -> &mut@4 (2: u32) ; + var@10 -> &mut@3 (⌊mut@4⌋) ; + abs@0{parents={}}{regions={0}} { + &mut@2 ((&mut@0 (0: u32), 1: u32)), + proj_loans (s@0 : &r@0 mut ((&r@0 mut (u32), u32))) + } +} + + +- op: +move var@9 + +[[32mDebug[39m] Value to move: +&mut@4 (2: u32) +[[32mDebug[39m] +**About to evaluate statement**: [ + *((pp1).1) := 3: u32; + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + px -> ⊥ : &'_ mut (u32) ; + p -> ⌊mut@1⌋ ; + var@4 -> ⊥ : &'_ mut (u32) ; + pp0 -> &mut@1 (⌊mut@2⌋) ; + pp1 -> &mut@5 ((&mut@4 (2: u32), s@3 : u32)) ; + var@7 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + y -> ⌊mut@3⌋ ; + var@9 -> ⊥ : &'_ mut (u32) ; + var@10 -> &mut@3 (⌊mut@4⌋) ; + abs@0{parents={}}{regions={0}} { + &mut@2 ((&mut@0 (0: u32), 1: u32)), + ⌊mut@5, (proj_loans (s@2 : &r@0 mut (u32)), proj_loans (s@3 : u32))⌋ + } +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + *((pp1).1) := 3: u32 +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + px -> ⊥ : &'_ mut (u32) ; + p -> ⌊mut@1⌋ ; + var@4 -> ⊥ : &'_ mut (u32) ; + pp0 -> &mut@1 (⌊mut@2⌋) ; + pp1 -> &mut@5 ((&mut@4 (2: u32), s@3 : u32)) ; + var@7 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + y -> ⌊mut@3⌋ ; + var@9 -> ⊥ : &'_ mut (u32) ; + var@10 -> &mut@3 (⌊mut@4⌋) ; + abs@0{parents={}}{regions={0}} { + &mut@2 ((&mut@0 (0: u32), 1: u32)), + ⌊mut@5, (proj_loans (s@2 : &r@0 mut (u32)), proj_loans (s@3 : u32))⌋ + } +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + px -> ⊥ : &'_ mut (u32) ; + p -> ⌊mut@1⌋ ; + var@4 -> ⊥ : &'_ mut (u32) ; + pp0 -> &mut@1 (⌊mut@2⌋) ; + pp1 -> &mut@5 ((&mut@4 (2: u32), s@3 : u32)) ; + var@7 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + y -> ⌊mut@3⌋ ; + var@9 -> ⊥ : &'_ mut (u32) ; + var@10 -> &mut@3 (⌊mut@4⌋) ; + abs@0{parents={}}{regions={0}} { + &mut@2 ((&mut@0 (0: u32), 1: u32)), + ⌊mut@5, (proj_loans (s@2 : &r@0 mut (u32)), proj_loans (s@3 : u32))⌋ + } +} + + +- op: +3: u32 + +[[32mDebug[39m] +**About to evaluate statement**: [ + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + px -> ⊥ : &'_ mut (u32) ; + p -> ⌊mut@1⌋ ; + var@4 -> ⊥ : &'_ mut (u32) ; + pp0 -> &mut@1 (⌊mut@2⌋) ; + pp1 -> &mut@5 ((&mut@4 (2: u32), 3: u32)) ; + var@7 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + y -> ⌊mut@3⌋ ; + var@9 -> ⊥ : &'_ mut (u32) ; + var@10 -> &mut@3 (⌊mut@4⌋) ; + abs@0{parents={}}{regions={0}} { + &mut@2 ((&mut@0 (0: u32), 1: u32)), + ⌊mut@5, (proj_loans (s@2 : &r@0 mut (u32)), proj_loans (s@3 : u32))⌋ + } +} + + + +[[32mDebug[39m] test_function_symbolic: id_mut_mut_pair +[[32mDebug[39m] +**About to evaluate statement**: [ + var@2 := &mut *(x); + var@0 := &mut *(var@2); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + abs@0{parents={}}{regions={0}} { + proj_loans (s@0 : &r@0 mut (&r@0 mut ((&r@0 mut (T), u32)))) + } + var@0 -> ⊥ : &'_ mut (&'_ mut ((&'_ mut (T), u32))) ; + x -> s@0 : &r@0 mut (&r@0 mut ((&r@0 mut (T), u32))) ; + var@2 -> ⊥ : &'_ mut (&'_ mut ((&'_ mut (T), u32))) ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@2 := &mut *(x) +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + abs@0{parents={}}{regions={0}} { + proj_loans (s@0 : &r@0 mut (&r@0 mut ((&r@0 mut (T), u32)))) + } + var@0 -> ⊥ : &'_ mut (&'_ mut ((&'_ mut (T), u32))) ; + x -> s@0 : &r@0 mut (&r@0 mut ((&r@0 mut (T), u32))) ; + var@2 -> ⊥ : &'_ mut (&'_ mut ((&'_ mut (T), u32))) ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@0 := &mut *(var@2); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + abs@0{parents={}}{regions={0}} { + ⌊mut@0, proj_loans (s@1 : &r@0 mut ((&r@0 mut (T), u32)))⌋ + } + var@0 -> ⊥ : &'_ mut (&'_ mut ((&'_ mut (T), u32))) ; + x -> &mut@0 (⌊mut@1⌋) ; + var@2 -> &mut@1 (s@1 : &r@0 mut ((&r@0 mut (T), u32))) ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@0 := &mut *(var@2) +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + abs@0{parents={}}{regions={0}} { + ⌊mut@0, proj_loans (s@1 : &r@0 mut ((&r@0 mut (T), u32)))⌋ + } + var@0 -> ⊥ : &'_ mut (&'_ mut ((&'_ mut (T), u32))) ; + x -> &mut@0 (⌊mut@1⌋) ; + var@2 -> &mut@1 (s@1 : &r@0 mut ((&r@0 mut (T), u32))) ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + abs@0{parents={}}{regions={0}} { + ⌊mut@0, proj_loans (s@1 : &r@0 mut ((&r@0 mut (T), u32)))⌋ + } + var@0 -> &mut@2 (s@1 : &r@0 mut ((&r@0 mut (T), u32))) ; + x -> &mut@0 (⌊mut@1⌋) ; + var@2 -> &mut@1 (⌊mut@2⌋) ; +} + + + +[[32mDebug[39m] test_function_symbolic: id_mut_mut_mut_same +[[32mDebug[39m] +**About to evaluate statement**: [ + var@2 := &mut *(x); + var@0 := &mut *(var@2); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + abs@0{parents={}}{regions={0}} { + proj_loans (s@0 : &r@0 mut (&r@0 mut (&r@0 mut (u32)))) + } + var@0 -> ⊥ : &'_ mut (&'_ mut (&'_ mut (u32))) ; + x -> s@0 : &r@0 mut (&r@0 mut (&r@0 mut (u32))) ; + var@2 -> ⊥ : &'_ mut (&'_ mut (&'_ mut (u32))) ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@2 := &mut *(x) +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + abs@0{parents={}}{regions={0}} { + proj_loans (s@0 : &r@0 mut (&r@0 mut (&r@0 mut (u32)))) + } + var@0 -> ⊥ : &'_ mut (&'_ mut (&'_ mut (u32))) ; + x -> s@0 : &r@0 mut (&r@0 mut (&r@0 mut (u32))) ; + var@2 -> ⊥ : &'_ mut (&'_ mut (&'_ mut (u32))) ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@0 := &mut *(var@2); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + abs@0{parents={}}{regions={0}} { + ⌊mut@0, proj_loans (s@1 : &r@0 mut (&r@0 mut (u32)))⌋ + } + var@0 -> ⊥ : &'_ mut (&'_ mut (&'_ mut (u32))) ; + x -> &mut@0 (⌊mut@1⌋) ; + var@2 -> &mut@1 (s@1 : &r@0 mut (&r@0 mut (u32))) ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@0 := &mut *(var@2) +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + abs@0{parents={}}{regions={0}} { + ⌊mut@0, proj_loans (s@1 : &r@0 mut (&r@0 mut (u32)))⌋ + } + var@0 -> ⊥ : &'_ mut (&'_ mut (&'_ mut (u32))) ; + x -> &mut@0 (⌊mut@1⌋) ; + var@2 -> &mut@1 (s@1 : &r@0 mut (&r@0 mut (u32))) ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + abs@0{parents={}}{regions={0}} { + ⌊mut@0, proj_loans (s@1 : &r@0 mut (&r@0 mut (u32)))⌋ + } + var@0 -> &mut@2 (s@1 : &r@0 mut (&r@0 mut (u32))) ; + x -> &mut@0 (⌊mut@1⌋) ; + var@2 -> &mut@1 (⌊mut@2⌋) ; +} + + + +[[32mDebug[39m] test_function_symbolic: id_borrow1 +[[32mDebug[39m] +**About to evaluate statement**: [ + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + abs@0{parents={}}{regions={0}} { + proj_loans (s@0 : &r@0 mut (&r@1 (u32))), + proj_loans (s@1 : &r@0 (&r@0 mut (u32))) + } + abs@1{parents={0}}{regions={1}} { + proj_loans (s@0 : &r@0 mut (&r@1 (u32))), + proj_loans (s@1 : &r@0 (&r@0 mut (u32))) + } + var@0 -> ⊥ : () ; + _x -> s@0 : &r@0 mut (&r@1 (u32)) ; + _y -> s@1 : &r@0 (&r@0 mut (u32)) ; +} + + + +[[32mDebug[39m] test_function_symbolic: test_static +[[32mDebug[39m] +**About to evaluate statement**: [ + var@0 := copy x; + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : &'_ (u32) ; + x -> s@0 : &'static (u32) ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@0 := copy x +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : &'_ (u32) ; + x -> s@0 : &'static (u32) ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : &'_ (u32) ; + x -> s@0 : &'static (u32) ; +} + + +- op: +copy x + +[[32mDebug[39m] Value to copy: +s@0 : &'static (u32) +[[32mDebug[39m] +**About to evaluate statement**: [ + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> s@0 : &'static (u32) ; + x -> s@0 : &'static (u32) ; +} + + + +[[32mDebug[39m] test_function_symbolic: test_char +[[32mDebug[39m] +**About to evaluate statement**: [ + var@0 := a; + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : char ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@0 := a +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : char ; +} + + + +[[32mDebug[39m] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : char ; +} + + +- op: +a + +[[32mDebug[39m] +**About to evaluate statement**: [ + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> a ; +} + + |