summaryrefslogtreecommitdiff
path: root/tests/trace_reference.txt
diff options
context:
space:
mode:
authorJonathan Protzenko2022-01-06 10:12:44 -0800
committerJonathan Protzenko2022-01-06 10:12:44 -0800
commitc3c1d91a976fdac52830239adb6429f09ea888a8 (patch)
tree15205f3a6356ad80effdc8b48641fff23a89466c /tests/trace_reference.txt
parent9872966d3c7a97ce8cd9ef16ab934ffa09c23e13 (diff)
parenta310c6036568d8f62e09804c67064686d106afd4 (diff)
Merge remote-tracking branch 'refs/remotes/origin/main'
Diffstat (limited to 'tests/trace_reference.txt')
-rw-r--r--tests/trace_reference.txt23692
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
}
[Debug] test_unit_function: test2
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -955,6 +968,23 @@ About to evaluate statement: x := 23: u32
23: u32
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -1029,6 +1055,22 @@ About to evaluate statement: y := 44: u32
44: u32
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -1102,6 +1141,21 @@ About to evaluate statement: z := 67: u32
67: u32
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -1176,6 +1228,20 @@ copy x
[Debug] Value to copy:
23: u32
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] 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)]))
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -1323,6 +1401,18 @@ About to evaluate statement: (p).y := 67: u32
67: u32
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] 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]))
[Debug]
+**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
+
[Debug]
+**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)
+
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] 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)]))
[Debug]
+**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
+
[Debug]
+**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)
+
[Debug]
+**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
+
[Debug]
+**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)
+
[Debug]
+**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
+
[Debug]
+**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)
+
[Debug]
+**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
+
[Debug] test_unit_function: test3
[Debug]
+**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
+
[Debug]
+**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)
+
[Debug] 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)
[Debug] 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
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 2 frame(s)
# Frame 0:
@@ -1849,6 +2034,20 @@ copy x
[Debug] Value to copy:
4: u32
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 2 frame(s)
# Frame 0:
@@ -1949,6 +2147,19 @@ copy y
[Debug] Value to copy:
3: u32
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 2 frame(s)
# Frame 0:
@@ -2049,6 +2260,7 @@ move var@4
4: u32
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 2 frame(s)
# Frame 0:
@@ -2082,6 +2294,18 @@ move var@5
[Debug] Value to move:
3: u32
[Debug]
+**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
+
[Debug]
+**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
-}
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 2 frame(s)
# Frame 0:
@@ -2185,6 +2410,12 @@ move var@3
[Debug] Value to move:
true
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 2 frame(s)
# Frame 0:
@@ -2248,6 +2480,12 @@ copy x
[Debug] Value to copy:
4: u32
[Debug]
+**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
+
[Debug] ctx_pop_frame:
+# Ended regions: {}
# 2 frame(s)
# Frame 0:
@@ -2310,6 +2549,7 @@ About to evaluate statement: return
[Debug] drop_value: place: y
[Debug] drop_value: place: x
[Debug] ctx_pop_frame: after dropping local variables:
+# Ended regions: {}
# 2 frame(s)
# Frame 0:
@@ -2338,6 +2578,7 @@ About to evaluate statement: return
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 2 frame(s)
# Frame 0:
@@ -2371,6 +2612,20 @@ move var@0
[Debug] Value to move:
4: u32
[Debug]
+**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
+
[Debug]
+**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)
+
[Debug] 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)
[Debug] 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
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 2 frame(s)
# Frame 0:
@@ -2562,6 +2830,20 @@ copy x
[Debug] Value to copy:
10: u32
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 2 frame(s)
# Frame 0:
@@ -2662,6 +2943,19 @@ copy y
[Debug] Value to copy:
11: u32
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 2 frame(s)
# Frame 0:
@@ -2762,6 +3056,7 @@ move var@4
10: u32
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 2 frame(s)
# Frame 0:
@@ -2795,6 +3090,18 @@ move var@5
[Debug] Value to move:
11: u32
[Debug]
+**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
+
[Debug]
+**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
-}
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 2 frame(s)
# Frame 0:
@@ -2898,6 +3206,12 @@ move var@3
[Debug] Value to move:
false
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 2 frame(s)
# Frame 0:
@@ -2961,6 +3276,12 @@ copy y
[Debug] Value to copy:
11: u32
[Debug]
+**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
+
[Debug] ctx_pop_frame:
+# Ended regions: {}
# 2 frame(s)
# Frame 0:
@@ -3023,6 +3345,7 @@ About to evaluate statement: return
[Debug] drop_value: place: y
[Debug] drop_value: place: x
[Debug] ctx_pop_frame: after dropping local variables:
+# Ended regions: {}
# 2 frame(s)
# Frame 0:
@@ -3051,6 +3374,7 @@ About to evaluate statement: return
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 2 frame(s)
# Frame 0:
@@ -3084,6 +3408,19 @@ move var@0
[Debug] Value to move:
11: u32
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -3153,6 +3490,18 @@ copy x
[Debug] Value to copy:
4: u32
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -3221,6 +3571,17 @@ copy y
[Debug] Value to copy:
11: u32
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -3289,6 +3652,7 @@ copy var@4
4: u32
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -3312,6 +3676,16 @@ copy var@5
[Debug] Value to copy:
11: u32
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -3378,6 +3755,15 @@ copy z
[Debug] Value to copy:
15: u32
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -3444,6 +3834,7 @@ move var@9
15: u32
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -3465,6 +3856,14 @@ move var@9
15: u32
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -3529,6 +3933,13 @@ move var@8
[Debug] Value to move:
true
[Debug]
+**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
+
[Debug]
+**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)
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -3592,6 +4009,12 @@ move var@7
[Debug] Value to move:
false
[Debug]
+**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
+
[Debug] test_unit_function: test_neg1
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -3653,6 +4089,13 @@ About to evaluate statement: x := 3: i32
3: i32
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -3693,6 +4142,12 @@ About to evaluate statement: y := -3: i32
-3: i32
[Debug]
+**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
+
[Debug] test_unit_function: refs_test1
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -3765,6 +4233,19 @@ About to evaluate statement: x := 0: i32
0: i32
[Debug]
+**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
+
[Debug]
+**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
+
[Debug]
+**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
+
[Debug]
+**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
+
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -3898,6 +4403,16 @@ About to evaluate statement: *(*(ppx)) := 1: i32
1: i32
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -3955,6 +4473,15 @@ copy x
[Debug] Value to copy:
1: i32
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -4012,6 +4543,7 @@ move var@6
1: i32
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -4030,6 +4562,14 @@ move var@6
1: i32
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -4085,6 +4630,13 @@ move var@5
[Debug] Value to move:
true
[Debug]
+**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
+
[Debug]
+**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)
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -4139,6 +4697,12 @@ move var@4
[Debug] Value to move:
false
[Debug]
+**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
+
[Debug] test_unit_function: refs_test2
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -4267,6 +4844,35 @@ About to evaluate statement: x := 0: i32
0: i32
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -4377,6 +4967,34 @@ About to evaluate statement: y := 1: i32
1: i32
[Debug]
+**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
+
[Debug]
+**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
+
[Debug]
+**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
+
[Debug]
+**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
+
[Debug]
+**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
+
[Debug]
+**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
+
[Debug]
+**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
+
[Debug]
+**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)
+
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -4790,6 +5441,29 @@ move var@6
[Debug] Value to move:
&mut@3 (1: i32)
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -4894,6 +5558,28 @@ About to evaluate statement: *(*(ppx)) := 2: i32
2: i32
[Debug]
+**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
+
[Debug]
+**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)
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -4999,6 +5676,27 @@ copy *(px)
[Debug] Value to copy:
2: i32
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -5104,6 +5794,7 @@ move var@9
2: i32
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -5134,6 +5825,26 @@ move var@9
2: i32
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -5237,6 +5941,25 @@ move var@8
[Debug] Value to move:
true
[Debug]
+**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
+
[Debug]
+**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)
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -5339,6 +6056,24 @@ move var@7
[Debug] Value to move:
false
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -5440,6 +6170,23 @@ copy x
[Debug] Value to copy:
0: i32
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -5541,6 +6284,7 @@ move var@12
0: i32
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -5571,6 +6315,22 @@ move var@12
0: i32
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -5670,6 +6427,21 @@ move var@11
[Debug] Value to move:
true
[Debug]
+**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
+
[Debug]
+**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)
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -5768,6 +6538,20 @@ move var@10
[Debug] Value to move:
false
[Debug]
+**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
+
[Debug]
+**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)
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -5865,6 +6648,19 @@ copy *(py)
[Debug] Value to copy:
2: i32
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -5962,6 +6758,7 @@ move var@15
2: i32
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -5992,6 +6789,18 @@ move var@15
2: i32
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -6087,6 +6897,17 @@ move var@14
[Debug] Value to move:
true
[Debug]
+**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
+
[Debug]
+**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)
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -6181,6 +7004,16 @@ move var@13
[Debug] Value to move:
false
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -6274,6 +7110,15 @@ copy y
[Debug] Value to copy:
2: i32
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -6367,6 +7216,7 @@ move var@18
2: i32
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -6397,6 +7247,14 @@ move var@18
2: i32
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -6488,6 +7351,13 @@ move var@17
[Debug] Value to move:
true
[Debug]
+**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
+
[Debug]
+**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)
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -6578,6 +7454,12 @@ move var@16
[Debug] Value to move:
false
[Debug]
+**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
+
[Debug] test_unit_function: test_list1
[Debug]
+**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
+
[Debug]
+**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)
+
[Debug]
+**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
+
[Debug]
+**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)
+
[Debug] 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
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -6694,6 +7601,7 @@ move var@3
test1::List::Nil
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 2 frame(s)
# Frame 0:
@@ -6717,6 +7625,7 @@ move var@1
[Debug] Value to move:
test1::List::Nil
[Debug] ctx_pop_frame:
+# Ended regions: {}
# 2 frame(s)
# Frame 0:
@@ -6736,6 +7645,7 @@ test1::List::Nil
[Debug] ctx_pop_frame: locals to drop: [1]
[Debug] drop_value: place: var@1
[Debug] ctx_pop_frame: after dropping local variables:
+# Ended regions: {}
# 2 frame(s)
# Frame 0:
@@ -6754,6 +7664,7 @@ test1::List::Nil
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 2 frame(s)
# Frame 0:
@@ -6777,6 +7688,16 @@ move @return
[Debug] Value to move:
@Box(test1::List::Nil)
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] 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)]))
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -6873,6 +7810,14 @@ move var@2
[Debug] Value to move:
@Box(test1::List::Nil)
[Debug]
+**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
+
[Debug]
+**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)
+
[Debug]
+**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
+
[Debug]
+**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)
+
[Debug] drop_value: place: l
[Debug]
+**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
+
[Debug] test_unit_function: test_box1
[Debug]
+**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
+
[Debug]
+**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)
+
[Debug] 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
[Debug] 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)
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 2 frame(s)
# Frame 0:
@@ -7045,6 +8026,7 @@ move var@1
[Debug] Value to move:
0: i32
[Debug] ctx_pop_frame:
+# Ended regions: {}
# 2 frame(s)
# Frame 0:
@@ -7069,6 +8051,7 @@ move var@1
[Debug] ctx_pop_frame: locals to drop: [1]
[Debug] drop_value: place: var@1
[Debug] ctx_pop_frame: after dropping local variables:
+# Ended regions: {}
# 2 frame(s)
# Frame 0:
@@ -7092,6 +8075,7 @@ move var@1
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 2 frame(s)
# Frame 0:
@@ -7120,6 +8104,22 @@ move @return
[Debug] Value to move:
@Box(0: i32)
[Debug]
+**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
+
[Debug]
+**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
+
[Debug]
+**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
+
[Debug]
+**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)
+
[Debug] 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
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -7252,6 +8261,7 @@ move var@3
[Debug] Value to move:
&mut@0 (@Box(0: i32))
[Debug] ctx_pop_frame:
+# Ended regions: {}
# 2 frame(s)
# Frame 0:
@@ -7276,6 +8286,7 @@ move var@3
[Debug] ctx_pop_frame: locals to drop: [1]
[Debug] drop_value: place: var@1
[Debug] ctx_pop_frame: after dropping local variables:
+# Ended regions: {}
# 2 frame(s)
# Frame 0:
@@ -7299,6 +8310,7 @@ move var@3
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 2 frame(s)
# Frame 0:
@@ -7327,6 +8339,20 @@ move @return
[Debug] Value to move:
&mut@1 (0: i32)
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -7392,6 +8417,19 @@ About to evaluate statement: *(x) := 1: i32
1: i32
[Debug]
+**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
+
[Debug]
+**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
+
[Debug]
+**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
+
[Debug]
+**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)
+
[Debug] 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
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -7505,6 +8555,7 @@ move var@5
[Debug] Value to move:
⌊shared@2⌋
[Debug] ctx_pop_frame:
+# Ended regions: {}
# 2 frame(s)
# Frame 0:
@@ -7529,6 +8580,7 @@ move var@5
[Debug] ctx_pop_frame: locals to drop: [1]
[Debug] drop_value: place: var@1
[Debug] ctx_pop_frame: after dropping local variables:
+# Ended regions: {}
# 2 frame(s)
# Frame 0:
@@ -7552,6 +8604,7 @@ move var@5
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 2 frame(s)
# Frame 0:
@@ -7580,6 +8633,17 @@ move @return
[Debug] Value to move:
⌊shared@3⌋
[Debug]
+**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
+
[Debug]
+**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)
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -7644,6 +8710,16 @@ copy *(x)
[Debug] Value to copy:
1: i32
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -7708,6 +8787,7 @@ move var@8
1: i32
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -7728,6 +8808,15 @@ move var@8
1: i32
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -7790,6 +8883,14 @@ move var@7
[Debug] Value to move:
true
[Debug]
+**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
+
[Debug]
+**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)
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -7851,6 +8957,13 @@ move var@6
[Debug] Value to move:
false
[Debug]
+**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
+
[Debug]
+**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)
+
[Debug] drop_value: place: b
[Debug]
+**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
+
[Debug] test_unit_function: test_copy_int
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -7974,6 +9111,20 @@ About to evaluate statement: x := 0: i32
0: i32
[Debug]
+**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
+
[Debug]
+**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
+
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -8084,6 +9246,18 @@ copy x
[Debug] Value to copy:
@shared_loan({0}, 0: i32)
[Debug]
+**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
+
[Debug]
+**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)
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -8149,6 +9324,13 @@ move var@4
[Debug] Value to move:
0: i32
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 2 frame(s)
# Frame 0:
@@ -8227,6 +9415,12 @@ copy x
[Debug] Value to copy:
0: i32
[Debug]
+**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
+
[Debug] ctx_pop_frame:
+# Ended regions: {}
# 2 frame(s)
# Frame 0:
@@ -8275,6 +9470,7 @@ About to evaluate statement: return
[Debug] ctx_pop_frame: locals to drop: [1]
[Debug] drop_value: place: x
[Debug] ctx_pop_frame: after dropping local variables:
+# Ended regions: {}
# 2 frame(s)
# Frame 0:
@@ -8298,6 +9494,7 @@ About to evaluate statement: return
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 2 frame(s)
# Frame 0:
@@ -8326,6 +9523,17 @@ move var@0
[Debug] Value to move:
0: i32
[Debug]
+**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
+
[Debug]
+**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)
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -8390,6 +9600,16 @@ copy *(px)
[Debug] Value to copy:
0: i32
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -8453,6 +9676,15 @@ copy y
[Debug] Value to copy:
0: i32
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -8516,6 +9752,7 @@ move var@7
0: i32
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -8538,6 +9775,14 @@ move var@8
[Debug] Value to move:
0: i32
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -8599,6 +9849,13 @@ move var@6
[Debug] Value to move:
true
[Debug]
+**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
+
[Debug]
+**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)
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -8659,6 +9922,12 @@ move var@5
[Debug] Value to move:
false
[Debug]
+**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
+
[Debug] test_unit_function: test_is_cons
[Debug]
+**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
+
[Debug]
+**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)
+
[Debug]
+**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
+
[Debug]
+**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)
+
[Debug] 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
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -8795,6 +10089,7 @@ move var@3
test1::List::Nil
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 2 frame(s)
# Frame 0:
@@ -8822,6 +10117,7 @@ move var@1
[Debug] Value to move:
test1::List::Nil
[Debug] ctx_pop_frame:
+# Ended regions: {}
# 2 frame(s)
# Frame 0:
@@ -8845,6 +10141,7 @@ test1::List::Nil
[Debug] ctx_pop_frame: locals to drop: [1]
[Debug] drop_value: place: var@1
[Debug] ctx_pop_frame: after dropping local variables:
+# Ended regions: {}
# 2 frame(s)
# Frame 0:
@@ -8867,6 +10164,7 @@ test1::List::Nil
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 2 frame(s)
# Frame 0:
@@ -8894,6 +10192,21 @@ move @return
[Debug] Value to move:
@Box(test1::List::Nil)
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] 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)]))
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -9024,6 +10348,19 @@ move var@2
[Debug] Value to move:
@Box(test1::List::Nil)
[Debug]
+**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
+
[Debug]
+**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)
+
[Debug]
+**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
+
[Debug]
+**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
+
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -9166,6 +10527,16 @@ copy var@7
[Debug] Value to copy:
⌊shared@0⌋
[Debug]
+**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
+
[Debug]
+**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)
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -9226,6 +10600,24 @@ move var@6
[Debug] Value to move:
⌊shared@1⌋
[Debug]
+**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
+
[Debug]
+**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))
+
[Debug]
+**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
+
[Debug]
+**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
- }
-}
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 2 frame(s)
# Frame 0:
@@ -9384,6 +10783,12 @@ move var@2
[Debug] Value to move:
0: isize
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 2 frame(s)
# Frame 0:
@@ -9435,6 +10841,12 @@ About to evaluate statement: var@0 := true
true
[Debug]
+**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
+
[Debug] ctx_pop_frame:
+# Ended regions: {}
# 2 frame(s)
# Frame 0:
@@ -9484,6 +10897,7 @@ About to evaluate statement: return
[Debug] drop_value: place: var@2
[Debug] drop_value: place: l
[Debug] ctx_pop_frame: after dropping local variables:
+# Ended regions: {}
# 2 frame(s)
# Frame 0:
@@ -9507,6 +10921,7 @@ About to evaluate statement: return
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 2 frame(s)
# Frame 0:
@@ -9535,6 +10950,15 @@ move var@0
[Debug] Value to move:
true
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -9594,6 +11022,14 @@ move var@5
[Debug] Value to move:
true
[Debug]
+**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
+
[Debug]
+**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)
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -9652,6 +11093,13 @@ move var@4
[Debug] Value to move:
false
[Debug]
+**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
+
[Debug]
+**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)
+
[Debug] drop_value: place: l
[Debug]
+**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
+
[Debug] test_unit_function: test_split_list
[Debug]
+**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
+
[Debug]
+**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)
+
[Debug]
+**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
+
[Debug]
+**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)
+
[Debug] 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
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -9844,6 +11328,7 @@ move var@3
test1::List::Nil
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 2 frame(s)
# Frame 0:
@@ -9874,6 +11359,7 @@ move var@1
[Debug] Value to move:
test1::List::Nil
[Debug] ctx_pop_frame:
+# Ended regions: {}
# 2 frame(s)
# Frame 0:
@@ -9900,6 +11386,7 @@ test1::List::Nil
[Debug] ctx_pop_frame: locals to drop: [1]
[Debug] drop_value: place: var@1
[Debug] ctx_pop_frame: after dropping local variables:
+# Ended regions: {}
# 2 frame(s)
# Frame 0:
@@ -9925,6 +11412,7 @@ test1::List::Nil
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 2 frame(s)
# Frame 0:
@@ -9955,6 +11443,24 @@ move @return
[Debug] Value to move:
@Box(test1::List::Nil)
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] 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)]))
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -10109,6 +11623,22 @@ move var@2
[Debug] Value to move:
@Box(test1::List::Nil)
[Debug]
+**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
+
[Debug]
+**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)
+
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -10233,6 +11772,20 @@ move l
[Debug] Value to move:
test1::List::Cons { 0 = 0: i32; 1 = @Box(test1::List::Nil); }
[Debug]
+**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
+
[Debug]
+**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)
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -10306,6 +11858,33 @@ move var@7
[Debug] Value to move:
test1::List::Cons { 0 = 0: i32; 1 = @Box(test1::List::Nil); }
[Debug]
+**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
- }
-}
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 2 frame(s)
# Frame 0:
@@ -10435,6 +12000,32 @@ About to evaluate statement: var@8 := false
false
[Debug]
+**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
- }
-}
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 2 frame(s)
# Frame 0:
@@ -10563,6 +12141,31 @@ About to evaluate statement: var@7 := false
false
[Debug]
+**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
- }
-}
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 2 frame(s)
# Frame 0:
@@ -10690,6 +12281,30 @@ About to evaluate statement: var@7 := true
true
[Debug]
+**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
- }
-}
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 2 frame(s)
# Frame 0:
@@ -10816,6 +12420,29 @@ About to evaluate statement: var@8 := true
true
[Debug]
+**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
- }
-}
+
[Debug]
+**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)
+
[Debug]
+**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
- }
-}
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 2 frame(s)
# Frame 0:
@@ -10994,6 +12617,21 @@ move var@2
[Debug] Value to move:
0: isize
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 2 frame(s)
# Frame 0:
@@ -11111,6 +12747,20 @@ About to evaluate statement: var@8 := false
false
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 2 frame(s)
# Frame 0:
@@ -11229,6 +12878,19 @@ move (l as test1::List::Cons).0
[Debug] Value to move:
0: i32
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 2 frame(s)
# Frame 0:
@@ -11344,6 +13006,18 @@ About to evaluate statement: var@7 := false
false
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 2 frame(s)
# Frame 0:
@@ -11460,6 +13135,17 @@ move (l as test1::List::Cons).1
[Debug] Value to move:
@Box(test1::List::Nil)
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 2 frame(s)
# Frame 0:
@@ -11575,6 +13263,16 @@ move hd
[Debug] Value to move:
0: i32
[Debug]
+**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
+
[Debug]
+**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)
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 2 frame(s)
# Frame 0:
@@ -11689,6 +13390,15 @@ move deref_box(tl)
[Debug] Value to move:
test1::List::Nil
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] 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)]))]
))
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 2 frame(s)
# Frame 0:
@@ -11920,6 +13647,13 @@ move var@6
[Debug] Value to move:
test1::List::Nil
[Debug]
+**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
+
[Debug]
+**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)
+
[Debug] 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
[Debug] drop_value: place: tl
[Debug]
+**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
+
[Debug] ctx_pop_frame:
+# Ended regions: {}
# 2 frame(s)
# Frame 0:
@@ -12076,6 +13822,7 @@ About to evaluate statement: return
[Debug] drop_value: place: var@2
[Debug] drop_value: place: l
[Debug] ctx_pop_frame: after dropping local variables:
+# Ended regions: {}
# 2 frame(s)
# Frame 0:
@@ -12110,6 +13857,7 @@ About to evaluate statement: return
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 2 frame(s)
# Frame 0:
@@ -12149,6 +13897,19 @@ move var@0
[Debug] Value to move:
(0: i32, test1::List::Nil)
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -12221,6 +13982,18 @@ copy (var@6).0
[Debug] Value to copy:
0: i32
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -12292,6 +14066,17 @@ move (var@6).1
[Debug] Value to move:
test1::List::Nil
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -12362,6 +14149,16 @@ copy hd
[Debug] Value to copy:
0: i32
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -12432,6 +14232,7 @@ move var@10
0: i32
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -12454,6 +14255,15 @@ move var@10
0: i32
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -12522,6 +14336,14 @@ move var@9
[Debug] Value to move:
true
[Debug]
+**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
+
[Debug]
+**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)
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -12589,6 +14416,13 @@ move var@8
[Debug] Value to move:
false
[Debug]
+**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
+
[Debug]
+**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)
+
[Debug] drop_value: place: tl
[Debug]
+**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
+
[Debug] test_unit_function: get_elem_test
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -12760,6 +14618,32 @@ About to evaluate statement: x := 0: i32
0: i32
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -12867,6 +14738,31 @@ About to evaluate statement: y := 0: i32
0: i32
[Debug]
+**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
+
[Debug]
+**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
+
[Debug]
+**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
+
[Debug]
+**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)
+
[Debug]
+**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
+
[Debug]
+**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
+
[Debug]
+**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
+
[Debug]
+**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)
+
[Debug]
+**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
+
[Debug]
+**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)
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -13264,6 +15196,7 @@ true
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -13301,6 +15234,7 @@ move var@4
&mut@1 (0: i32)
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -13337,6 +15271,19 @@ move var@6
[Debug] Value to move:
&mut@3 (0: i32)
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 2 frame(s)
# Frame 0:
@@ -13460,6 +15407,18 @@ copy b
[Debug] Value to copy:
true
[Debug]
+**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
+
[Debug]
+**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
-}
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 2 frame(s)
# Frame 0:
@@ -13587,6 +15547,12 @@ move var@4
[Debug] Value to move:
true
[Debug]
+**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)
+
[Debug]
+**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
+
[Debug] ctx_pop_frame:
+# Ended regions: {}
# 2 frame(s)
# Frame 0:
@@ -13701,6 +15674,7 @@ About to evaluate statement: return
[Debug] drop_value: place: x
[Debug] drop_value: place: b
[Debug] ctx_pop_frame: after dropping local variables:
+# Ended regions: {}
# 2 frame(s)
# Frame 0:
@@ -13737,6 +15711,7 @@ About to evaluate statement: return
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 2 frame(s)
# Frame 0:
@@ -13778,6 +15753,26 @@ move var@0
[Debug] Value to move:
&mut@4 (0: i32)
[Debug]
+**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
+
[Debug]
+**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)
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -13881,6 +15869,25 @@ copy *(z)
[Debug] Value to copy:
0: i32
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -13984,6 +15985,7 @@ copy var@8
0: i32
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -14014,6 +16016,24 @@ copy var@8
1: i32
[Debug]
+**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
+
[Debug]
+**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)
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -14115,6 +16130,23 @@ copy *(z)
[Debug] Value to copy:
1: i32
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -14216,6 +16244,7 @@ move var@12
1: i32
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -14246,6 +16275,22 @@ move var@12
1: i32
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -14345,6 +16387,21 @@ move var@11
[Debug] Value to move:
true
[Debug]
+**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
+
[Debug]
+**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)
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -14443,6 +16498,20 @@ move var@10
[Debug] Value to move:
false
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -14540,6 +16608,19 @@ copy x
[Debug] Value to copy:
1: i32
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -14637,6 +16718,7 @@ move var@15
1: i32
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -14667,6 +16749,18 @@ move var@15
1: i32
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -14762,6 +16857,17 @@ move var@14
[Debug] Value to move:
true
[Debug]
+**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
+
[Debug]
+**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)
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -14856,6 +16964,16 @@ move var@13
[Debug] Value to move:
false
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -14949,6 +17070,15 @@ copy y
[Debug] Value to copy:
0: i32
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -15042,6 +17176,7 @@ move var@18
0: i32
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -15072,6 +17207,14 @@ move var@18
0: i32
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -15163,6 +17311,13 @@ move var@17
[Debug] Value to move:
true
[Debug]
+**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
+
[Debug]
+**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)
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -15253,6 +17414,12 @@ move var@16
[Debug] Value to move:
false
[Debug]
+**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
+
[Debug] test_unit_function: id_mut_pair_test1
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -15358,6 +17538,24 @@ About to evaluate statement: x := 0: u32
0: u32
[Debug]
+**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
+
[Debug]
+**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
+
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -15486,6 +17691,22 @@ move px
[Debug] Value to move:
&mut@0 (0: u32)
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -15567,6 +17785,21 @@ ty: (Types.Adt (Types.Tuple, [],
(Types.Integer Types.U32)]
))
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -15639,6 +17870,20 @@ About to evaluate statement: (p).1 := 1: u32
1: u32
[Debug]
+**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
+
[Debug]
+**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
+
[Debug]
+**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
+
[Debug]
+**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)
+
[Debug]
+**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
+
[Debug]
+**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)
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -15832,6 +18100,14 @@ move var@7
[Debug] Value to move:
&mut@2 ((&mut@0 (0: u32), 1: u32))
[Debug]
+**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
+
[Debug]
+**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)
+
[Debug]
+**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
+
[Debug]
+**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)
+
[Debug]
+**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
+
[Debug] ctx_pop_frame:
+# Ended regions: {}
# 2 frame(s)
# Frame 0:
@@ -15998,6 +18297,7 @@ About to evaluate statement: return
[Debug] drop_value: place: var@2
[Debug] drop_value: place: x
[Debug] ctx_pop_frame: after dropping local variables:
+# Ended regions: {}
# 2 frame(s)
# Frame 0:
@@ -16024,6 +18324,7 @@ About to evaluate statement: return
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 2 frame(s)
# Frame 0:
@@ -16055,6 +18356,17 @@ move var@0
[Debug] Value to move:
&mut@4 ((&mut@0 (0: u32), 1: u32))
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -16123,6 +18437,16 @@ About to evaluate statement: y := 2: u32
2: u32
[Debug]
+**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
+
[Debug]
+**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
+
[Debug]
+**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
+
[Debug]
+**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)
+
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -16277,6 +18628,13 @@ move var@9
[Debug] Value to move:
&mut@6 (2: u32)
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -16341,6 +18705,12 @@ About to evaluate statement: *((pp1).1) := 3: u32
3: u32
[Debug]
+**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
+
[Debug] test_unit_function: test_char
[Debug]
+**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
+
[Debug]
+**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
+
[Debug] eval_operand:
- ctx:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
@@ -16396,6 +18779,12 @@ About to evaluate statement: var@0 := a
a
[Debug]
+**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
+
+
+[Debug] test_function_symbolic: add_test
+[Debug]
+**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) ;
+}
+
+
+
+[Debug]
+**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) ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to copy:
+s@0 : u32
+[Debug]
+**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) ;
+}
+
+
+
+[Debug]
+**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) ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to copy:
+s@1 : u32
+[Debug]
+**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) ;
+}
+
+
+
+[Debug]
+**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) ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to copy:
+s@0 : u32
+[Debug] 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
+
+[Debug] Value to copy:
+s@1 : u32
+[Debug]
+**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) ;
+}
+
+
+
+[Debug] test_function_symbolic: subs_test
+[Debug]
+**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) ;
+}
+
+
+
+[Debug]
+**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) ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to copy:
+s@0 : u32
+[Debug]
+**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) ;
+}
+
+
+
+[Debug]
+**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) ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to copy:
+s@1 : u32
+[Debug]
+**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) ;
+}
+
+
+
+[Debug]
+**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) ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to copy:
+s@0 : u32
+[Debug] 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
+
+[Debug] Value to copy:
+s@1 : u32
+[Debug]
+**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) ;
+}
+
+
+
+[Debug] test_function_symbolic: div_test
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to copy:
+s@0 : u32
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to copy:
+s@1 : u32
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to move:
+s@0 : u32
+[Debug] 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
+
+[Debug] Value to move:
+s@1 : u32
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] test_function_symbolic: rem_test
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to copy:
+s@0 : u32
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to copy:
+s@1 : u32
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to move:
+s@0 : u32
+[Debug] 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
+
+[Debug] Value to move:
+s@1 : u32
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] test_function_symbolic: test2
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to copy:
+23: u32
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to move:
+23: u32
+[Debug] 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)]))
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] 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]))
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] expand_bottom_value_from_projection:
+pe: (Expressions.Field ((Expressions.ProjAdt (2, (Some 0))), 0))
+ty: (Types.Adt ((Types.AdtId 2), [], [(Types.Integer Types.U64)]))
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] test_function_symbolic: get_max
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to copy:
+s@0 : u32
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to copy:
+s@1 : u32
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to move:
+s@0 : u32
+[Debug] 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
+
+[Debug] Value to move:
+s@1 : u32
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to move:
+true
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to copy:
+s@0 : u32
+[Debug] 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
+
+[Debug] Value to move:
+false
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to copy:
+s@1 : u32
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] test_function_symbolic: test3
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] 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
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] 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
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to copy:
+s@0 : u32
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to copy:
+s@1 : u32
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to copy:
+s@0 : u32
+[Debug] 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
+
+[Debug] Value to copy:
+s@1 : u32
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to copy:
+s@2 : u32
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to move:
+s@2 : u32
+[Debug] 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
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to move:
+s@3 : bool
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to move:
+true
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] test_function_symbolic: test_neg
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to copy:
+s@0 : i32
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to copy:
+s@0 : i32
+[Debug] 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
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to move:
+true
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to move:
+s@0 : i32
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] test_function_symbolic: test_neg1
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ x := 3: i32
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⊥ : i32 ;
+ y -> ⊥ : i32 ;
+}
+
+
+
+[Debug] eval_operand:
+- ctx:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⊥ : i32 ;
+ y -> ⊥ : i32 ;
+}
+
+
+- op:
+3: i32
+
+[Debug]
+**About to evaluate statement**: [
+ y := -3: i32;
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 3: i32 ;
+ y -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ y := -3: i32
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 3: i32 ;
+ y -> ⊥ : i32 ;
+}
+
+
+
+[Debug] eval_operand:
+- ctx:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 3: i32 ;
+ y -> ⊥ : i32 ;
+}
+
+
+- op:
+-3: i32
+
+[Debug]
+**About to evaluate statement**: [
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 3: i32 ;
+ y -> -3: i32 ;
+}
+
+
+
+[Debug] test_function_symbolic: refs_test1
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to copy:
+1: i32
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to move:
+1: i32
+[Debug] 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
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to move:
+s@0 : bool
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to move:
+true
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] test_function_symbolic: refs_test2
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to move:
+&mut@3 (1: i32)
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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)
+
+[Debug] Value to copy:
+2: i32
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to move:
+2: i32
+[Debug] 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
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to move:
+s@0 : bool
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to move:
+true
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to copy:
+0: i32
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to move:
+0: i32
+[Debug] 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
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to move:
+s@2 : bool
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to move:
+true
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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)
+
+[Debug] Value to copy:
+2: i32
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to move:
+2: i32
+[Debug] 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
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to move:
+s@4 : bool
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to move:
+true
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to copy:
+2: i32
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to move:
+2: i32
+[Debug] 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
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to move:
+s@6 : bool
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to move:
+true
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] test_function_symbolic: test_list1
+[Debug]
+**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> ;
+}
+
+
+
+[Debug]
+**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> ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] eval_non_local_function_call:
+- fid:CfimAst.BoxNew
+- type_params: [test1::List<i32>]
+- args: [move var@3]
+- dest: var@2
+[Debug] 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
+
+[Debug] Value to move:
+test1::List::Nil
+[Debug]
+**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> ;
+}
+
+
+
+[Debug]
+**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> ;
+}
+
+
+
+[Debug] 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
+
+[Debug] expand_bottom_value_from_projection:
+pe: (Expressions.Field ((Expressions.ProjAdt (1, (Some 0))), 0))
+ty: (Types.Adt ((Types.AdtId 1), [], [(Types.Integer Types.I32)]))
+[Debug]
+**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> ;
+}
+
+
+
+[Debug]
+**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> ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to move:
+s@0 : std::boxed::Box<test1::List<i32>>
+[Debug]
+**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> ;
+}
+
+
+
+[Debug]
+**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> ;
+}
+
+
+
+[Debug]
+**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> ;
+}
+
+
+
+[Debug]
+**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> ;
+}
+
+
+
+[Debug] drop_value: place: l
+[Debug]
+**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> ;
+}
+
+
+
+[Debug] test_function_symbolic: test_box1
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] eval_non_local_function_call:
+- fid:CfimAst.BoxNew
+- type_params: [i32]
+- args: [0: i32]
+- dest: b
+[Debug] 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
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] eval_non_local_function_call:
+- fid:CfimAst.BoxDerefMut
+- type_params: [i32]
+- args: [move var@3]
+- dest: x
+[Debug] 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
+
+[Debug] 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)])) }
+[Debug] Value to move:
+&mut@0 (s@0 : std::boxed::Box<i32>)
+[Debug]
+**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))
+ }
+}
+
+
+
+[Debug]
+**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))
+ }
+}
+
+
+
+[Debug] 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
+
+[Debug]
+**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)⌋
+ }
+}
+
+
+
+[Debug]
+**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)⌋
+ }
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] eval_non_local_function_call:
+- fid:CfimAst.BoxDeref
+- type_params: [i32]
+- args: [move var@5]
+- dest: x
+[Debug] 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
+
+[Debug] Value to move:
+⌊shared@2⌋
+[Debug]
+**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))
+ }
+}
+
+
+
+[Debug]
+**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))
+ }
+}
+
+
+
+[Debug] 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)
+
+[Debug] Value to copy:
+s@5 : i32
+[Debug]
+**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))
+ }
+}
+
+
+
+[Debug]
+**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))
+ }
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to move:
+s@5 : i32
+[Debug] 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
+
+[Debug]
+**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))
+ }
+}
+
+
+
+[Debug]
+**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))
+ }
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to move:
+s@6 : bool
+[Debug]
+**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))
+ }
+}
+
+
+
+[Debug]
+**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))
+ }
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to move:
+true
+[Debug]
+**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))
+ }
+}
+
+
+
+[Debug]
+**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))
+ }
+}
+
+
+
+[Debug] drop_value: place: b
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] test_function_symbolic: copy_int
+[Debug]
+**About to evaluate statement**: [
+ var@0 := copy x;
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : i32 ;
+ x -> s@0 : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@0 := copy x
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : i32 ;
+ x -> s@0 : i32 ;
+}
+
+
+
+[Debug] eval_operand:
+- ctx:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : i32 ;
+ x -> s@0 : i32 ;
+}
+
+
+- op:
+copy x
+
+[Debug] Value to copy:
+s@0 : i32
+[Debug]
+**About to evaluate statement**: [
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> s@0 : i32 ;
+ x -> s@0 : i32 ;
+}
+
+
+
+[Debug] test_function_symbolic: test_copy_int
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to copy:
+@shared_loan({0}, 0: i32)
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to move:
+0: i32
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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)
+
+[Debug] Value to copy:
+0: i32
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to copy:
+s@0 : i32
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to move:
+0: i32
+[Debug] 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
+
+[Debug] Value to move:
+s@0 : i32
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to move:
+s@1 : bool
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to move:
+true
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] test_function_symbolic: is_cons
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to move:
+0: isize
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to move:
+1: isize
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] test_function_symbolic: test_is_cons
+[Debug]
+**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>) ;
+}
+
+
+
+[Debug]
+**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>) ;
+}
+
+
+
+[Debug]
+**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>) ;
+}
+
+
+
+[Debug]
+**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>) ;
+}
+
+
+
+[Debug] eval_non_local_function_call:
+- fid:CfimAst.BoxNew
+- type_params: [test1::List<i32>]
+- args: [move var@3]
+- dest: var@2
+[Debug] 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
+
+[Debug] Value to move:
+test1::List::Nil
+[Debug]
+**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>) ;
+}
+
+
+
+[Debug]
+**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>) ;
+}
+
+
+
+[Debug] 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
+
+[Debug] expand_bottom_value_from_projection:
+pe: (Expressions.Field ((Expressions.ProjAdt (1, (Some 0))), 0))
+ty: (Types.Adt ((Types.AdtId 1), [], [(Types.Integer Types.I32)]))
+[Debug]
+**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>) ;
+}
+
+
+
+[Debug]
+**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>) ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to move:
+s@0 : std::boxed::Box<test1::List<i32>>
+[Debug]
+**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>) ;
+}
+
+
+
+[Debug]
+**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>) ;
+}
+
+
+
+[Debug]
+**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>) ;
+}
+
+
+
+[Debug]
+**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>) ;
+}
+
+
+
+[Debug]
+**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⌋ ;
+}
+
+
+
+[Debug]
+**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⌋ ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to copy:
+⌊shared@0⌋
+[Debug]
+**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⌋ ;
+}
+
+
+
+[Debug]
+**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⌋ ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to move:
+⌊shared@1⌋
+[Debug]
+**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)
+ }
+}
+
+
+
+[Debug]
+**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)
+ }
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to move:
+s@1 : bool
+[Debug]
+**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)
+ }
+}
+
+
+
+[Debug]
+**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)
+ }
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to move:
+true
+[Debug]
+**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)
+ }
+}
+
+
+
+[Debug]
+**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)
+ }
+}
+
+
+
+[Debug] drop_value: place: l
+[Debug]
+**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>) ;
+}
+
+
+
+[Debug] test_function_symbolic: split_list
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to move:
+0: isize
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to move:
+s@1 : T
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to move:
+s@2 : std::boxed::Box<test1::List<T>>
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to move:
+s@1 : T
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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)
+
+[Debug] Value to move:
+s@3 : test1::List<T>
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to move:
+s@1 : T
+[Debug] 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)]))
+ ]
+ ))
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to move:
+s@3 : test1::List<T>
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] eval_non_local_function_call:
+- fid:CfimAst.BoxFree
+- type_params: [test1::List<T>]
+- args: [move tl]
+- dest: var@9
+[Debug] drop_value: place: tl
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to move:
+1: isize
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] test_function_symbolic: test_split_list
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] eval_non_local_function_call:
+- fid:CfimAst.BoxNew
+- type_params: [test1::List<i32>]
+- args: [move var@3]
+- dest: var@2
+[Debug] 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
+
+[Debug] Value to move:
+test1::List::Nil
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] expand_bottom_value_from_projection:
+pe: (Expressions.Field ((Expressions.ProjAdt (1, (Some 0))), 0))
+ty: (Types.Adt ((Types.AdtId 1), [], [(Types.Integer Types.I32)]))
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to move:
+s@0 : std::boxed::Box<test1::List<i32>>
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to move:
+test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box<test1::List<i32>>; }
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to move:
+test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box<test1::List<i32>>; }
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to copy:
+s@2 : i32
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to move:
+s@3 : test1::List<i32>
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to copy:
+s@2 : i32
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to move:
+s@2 : i32
+[Debug] 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
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to move:
+s@4 : bool
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to move:
+true
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] drop_value: place: tl
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] test_function_symbolic: get_elem
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to copy:
+s@0 : bool
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to move:
+true
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to move:
+false
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to move:
+s@2 : &r@0 mut (T)
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] test_function_symbolic: get_elem_test
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] 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
+
+[Debug] activate_inactivated_mut_borrow: resulting value:
+{ Values.value =
+ (Values.Concrete (Values.Scalar { Values.value = 0; int_ty = Types.I32 }));
+ ty = (Types.Integer Types.I32) }
+[Debug] Value to move:
+&mut@1 (0: i32)
+[Debug] 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
+
+[Debug] activate_inactivated_mut_borrow: resulting value:
+{ Values.value =
+ (Values.Concrete (Values.Scalar { Values.value = 0; int_ty = Types.I32 }));
+ ty = (Types.Integer Types.I32) }
+[Debug] Value to move:
+&mut@3 (0: i32)
+[Debug]
+**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))
+ }
+}
+
+
+
+[Debug]
+**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))
+ }
+}
+
+
+
+[Debug] 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)
+
+[Debug] Value to copy:
+s@1 : i32
+[Debug]
+**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)⌋
+ }
+}
+
+
+
+[Debug]
+**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)⌋
+ }
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to copy:
+s@1 : i32
+[Debug] 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
+
+[Debug]
+**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)⌋
+ }
+}
+
+
+
+[Debug]
+**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)⌋
+ }
+}
+
+
+
+[Debug] 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)
+
+[Debug] Value to copy:
+s@2 : i32
+[Debug]
+**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)⌋
+ }
+}
+
+
+
+[Debug]
+**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)⌋
+ }
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to move:
+s@2 : i32
+[Debug] 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
+
+[Debug]
+**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)⌋
+ }
+}
+
+
+
+[Debug]
+**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)⌋
+ }
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to move:
+s@3 : bool
+[Debug]
+**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)⌋
+ }
+}
+
+
+
+[Debug]
+**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)⌋
+ }
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to move:
+true
+[Debug]
+**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)⌋
+ }
+}
+
+
+
+[Debug]
+**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)⌋
+ }
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to copy:
+s@5 : i32
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to move:
+s@5 : i32
+[Debug] 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
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to move:
+s@7 : bool
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to move:
+true
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to copy:
+s@6 : i32
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to move:
+s@6 : i32
+[Debug] 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
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to move:
+s@9 : bool
+[Debug]
+**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 ;
+}
+
+
+
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to move:
+true
+[Debug]
+**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 ;
+}
+
+
+
+[Debug] test_function_symbolic: id_mut_mut
+[Debug]
+**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)) ;
+}
+
+
+
+[Debug]
+**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)) ;
+}
+
+
+
+[Debug]
+**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)) ;
+}
+
+
+
+[Debug]
+**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)) ;
+}
+
+
+
+[Debug]
+**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⌋) ;
+}
+
+
+
+[Debug] test_function_symbolic: id_mut_pair
+[Debug]
+**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)) ;
+}
+
+
+
+[Debug]
+**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)) ;
+}
+
+
+
+[Debug]
+**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)) ;
+}
+
+
+
+[Debug]
+**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)) ;
+}
+
+
+
+[Debug]
+**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⌋) ;
+}
+
+
+
+[Debug] test_function_symbolic: id_mut_pair_test1
+[Debug]
+**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) ;
+}
+
+
+
+[Debug]
+**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) ;
+}
+
+
+
+[Debug] 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
+
+[Debug]
+**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) ;
+}
+
+
+
+[Debug]
+**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) ;
+}
+
+
+
+[Debug]
+**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) ;
+}
+
+
+
+[Debug]
+**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) ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to move:
+&mut@0 (0: u32)
+[Debug]
+**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) ;
+}
+
+
+
+[Debug]
+**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) ;
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to move:
+&mut@0 (0: u32)
+[Debug] 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)]
+ ))
+[Debug]
+**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) ;
+}
+
+
+
+[Debug]
+**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) ;
+}
+
+
+
+[Debug] 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
+
+[Debug]
+**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) ;
+}
+
+
+
+[Debug]
+**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) ;
+}
+
+
+
+[Debug]
+**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) ;
+}
+
+
+
+[Debug]
+**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) ;
+}
+
+
+
+[Debug]
+**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) ;
+}
+
+
+
+[Debug]
+**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) ;
+}
+
+
+
+[Debug] 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
+
+[Debug] 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)]
+ ))
+ }
+[Debug] Value to move:
+&mut@2 ((&mut@0 (0: u32), 1: u32))
+[Debug]
+**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)))
+ }
+}
+
+
+
+[Debug]
+**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)))
+ }
+}
+
+
+
+[Debug] 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
+
+[Debug]
+**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)))
+ }
+}
+
+
+
+[Debug]
+**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)))
+ }
+}
+
+
+
+[Debug]
+**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)))
+ }
+}
+
+
+
+[Debug]
+**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)))
+ }
+}
+
+
+
+[Debug]
+**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)))
+ }
+}
+
+
+
+[Debug]
+**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)))
+ }
+}
+
+
+
+[Debug] 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
+
+[Debug] Value to move:
+&mut@4 (2: u32)
+[Debug]
+**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))⌋
+ }
+}
+
+
+
+[Debug]
+**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))⌋
+ }
+}
+
+
+
+[Debug] 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
+
+[Debug]
+**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))⌋
+ }
+}
+
+
+
+[Debug] test_function_symbolic: id_mut_mut_pair
+[Debug]
+**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))) ;
+}
+
+
+
+[Debug]
+**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))) ;
+}
+
+
+
+[Debug]
+**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))) ;
+}
+
+
+
+[Debug]
+**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))) ;
+}
+
+
+
+[Debug]
+**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⌋) ;
+}
+
+
+
+[Debug] test_function_symbolic: id_mut_mut_mut_same
+[Debug]
+**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))) ;
+}
+
+
+
+[Debug]
+**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))) ;
+}
+
+
+
+[Debug]
+**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))) ;
+}
+
+
+
+[Debug]
+**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))) ;
+}
+
+
+
+[Debug]
+**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⌋) ;
+}
+
+
+
+[Debug] test_function_symbolic: id_borrow1
+[Debug]
+**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)) ;
+}
+
+
+
+[Debug] test_function_symbolic: test_static
+[Debug]
+**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) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@0 := copy x
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : &'_ (u32) ;
+ x -> s@0 : &'static (u32) ;
+}
+
+
+
+[Debug] eval_operand:
+- ctx:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : &'_ (u32) ;
+ x -> s@0 : &'static (u32) ;
+}
+
+
+- op:
+copy x
+
+[Debug] Value to copy:
+s@0 : &'static (u32)
+[Debug]
+**About to evaluate statement**: [
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> s@0 : &'static (u32) ;
+ x -> s@0 : &'static (u32) ;
+}
+
+
+
+[Debug] test_function_symbolic: test_char
+[Debug]
+**About to evaluate statement**: [
+ var@0 := a;
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : char ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@0 := a
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : char ;
+}
+
+
+
+[Debug] eval_operand:
+- ctx:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : char ;
+}
+
+
+- op:
+a
+
+[Debug]
+**About to evaluate statement**: [
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> a ;
+}
+
+