From 335de855331a424c35b577907eb504c198990c0b Mon Sep 17 00:00:00 2001 From: Son Ho Date: Thu, 6 Jan 2022 16:30:20 +0100 Subject: Update the trace --- tests/trace_reference.txt | 22536 ++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 20517 insertions(+), 2019 deletions(-) (limited to 'tests/trace_reference.txt') diff --git a/tests/trace_reference.txt b/tests/trace_reference.txt index f32f5de8..0901e59b 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>; var@3 : test1::List; - set_discriminant(var@3, 1) - var@2 := move alloc::boxed::Box>::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>::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::new(0: i32) - var@3 := &two-phase b - x := move core::ops::deref::DerefMut::deref_mut(move var@3) - *(x) := 1: i32 - var@5 := &b - x := move core::ops::deref::Deref>::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::new(0: i32); + var@3 := &two-phase b; + x := move core::ops::deref::DerefMut::deref_mut(move var@3); + *(x) := 1: i32; + var@5 := &b; + x := move core::ops::deref::Deref>::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)) -> bool { l : &'_ (test1::List); 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)) -> bool { _ => { panic } - } + }; return } @@ -343,17 +343,17 @@ fn test_is_cons() { var@6 : &'_ (test1::List); var@7 : &'_ (test1::List); - set_discriminant(var@3, 1) - var@2 := move alloc::boxed::Box>::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(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>::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(move var@6); + var@4 := ¬ move var@5; + assert(¬move var@4); + drop(l); return } @@ -370,22 +370,22 @@ fn split_list(l : test1::List) -> (T, test1::List) { 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>(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>(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>::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(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>::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(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(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(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(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(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 := 1: 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,36 @@ 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**: # 1 frame(s) # Frame 0: @@ -897,21 +914,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -929,7 +939,7 @@ return enum0 -> ⊥ : test1::Enum ; } -About to evaluate statement: x := 23: u32 + [Debug] eval_operand: - ctx: @@ -955,6 +965,22 @@ 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**: # 1 frame(s) # Frame 0: @@ -972,20 +998,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -1003,7 +1023,7 @@ return enum0 -> ⊥ : test1::Enum ; } -About to evaluate statement: y := 44: u32 + [Debug] eval_operand: - ctx: @@ -1029,6 +1049,21 @@ 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**: # 1 frame(s) # Frame 0: @@ -1046,19 +1081,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -1076,7 +1106,7 @@ return enum0 -> ⊥ : test1::Enum ; } -About to evaluate statement: z := 67: u32 + [Debug] eval_operand: - ctx: @@ -1102,6 +1132,20 @@ 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**: # 1 frame(s) # Frame 0: @@ -1119,18 +1163,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -1148,7 +1188,7 @@ return enum0 -> ⊥ : test1::Enum ; } -About to evaluate statement: var@5 := copy x + [Debug] eval_operand: - ctx: @@ -1176,6 +1216,19 @@ 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**: # 1 frame(s) # Frame 0: @@ -1193,17 +1246,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -1221,7 +1271,7 @@ return enum0 -> ⊥ : test1::Enum ; } -About to evaluate statement: (p).x := move var@5 + [Debug] eval_operand: - ctx: @@ -1253,6 +1303,18 @@ 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**: # 1 frame(s) # Frame 0: @@ -1270,16 +1332,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -1297,7 +1357,7 @@ return enum0 -> ⊥ : test1::Enum ; } -About to evaluate statement: (p).y := 67: u32 + [Debug] eval_operand: - ctx: @@ -1323,6 +1383,17 @@ 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**: # 1 frame(s) # Frame 0: @@ -1340,15 +1411,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -1366,7 +1436,7 @@ return enum0 -> ⊥ : test1::Enum ; } -About to evaluate statement: (s as test1::Sum::Right).0 := true + [Debug] eval_operand: - ctx: @@ -1395,6 +1465,16 @@ 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**: # 1 frame(s) # Frame 0: @@ -1412,14 +1492,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -1437,9 +1517,18 @@ 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**: # 1 frame(s) # Frame 0: @@ -1457,13 +1546,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -1481,7 +1571,7 @@ return enum0 -> ⊥ : test1::Enum ; } -About to evaluate statement: (o as test1::One::One).0 := 3: u64 + [Debug] eval_operand: - ctx: @@ -1510,6 +1600,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -1527,12 +1625,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -1550,9 +1650,16 @@ 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**: # 1 frame(s) # Frame 0: @@ -1570,11 +1677,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -1592,9 +1702,15 @@ return enum0 -> ⊥ : test1::Enum ; } -About to evaluate statement: set_discriminant(e0, 0) + [Debug] +**About to evaluate statement**: [ + set_discriminant(enum0, 0); + return +] + +**Context**: # 1 frame(s) # Frame 0: @@ -1612,10 +1728,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -1633,9 +1753,14 @@ return enum0 -> ⊥ : test1::Enum ; } -About to evaluate statement: set_discriminant(enum0, 0) + [Debug] +**About to evaluate statement**: [ + return +] + +**Context**: # 1 frame(s) # Frame 0: @@ -1653,10 +1778,24 @@ 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**: # 1 frame(s) # Frame 0: @@ -1673,18 +1812,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -1701,7 +1836,7 @@ return var@9 -> ⊥ : u32 ; } -About to evaluate statement: x := move get_max(4: u32, 3: u32) + [Debug] eval_operand: - ctx: @@ -1748,6 +1883,20 @@ 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**: # 2 frame(s) # Frame 0: @@ -1774,18 +1923,14 @@ 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**: # 2 frame(s) # Frame 0: @@ -1812,7 +1957,7 @@ return var@5 -> ⊥ : u32 ; } -About to evaluate statement: var@4 := copy x + [Debug] eval_operand: - ctx: @@ -1849,6 +1994,19 @@ 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**: # 2 frame(s) # Frame 0: @@ -1875,17 +2033,14 @@ 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**: # 2 frame(s) # Frame 0: @@ -1912,7 +2067,7 @@ return var@5 -> ⊥ : u32 ; } -About to evaluate statement: var@5 := copy y + [Debug] eval_operand: - ctx: @@ -1949,6 +2104,18 @@ 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**: # 2 frame(s) # Frame 0: @@ -1975,16 +2142,14 @@ 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**: # 2 frame(s) # Frame 0: @@ -2011,7 +2176,7 @@ return var@5 -> 3: u32 ; } -About to evaluate statement: var@3 := move var@4 >= move var@5 + [Debug] eval_operand: - ctx: @@ -2082,6 +2247,17 @@ 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**: # 2 frame(s) # Frame 0: @@ -2108,15 +2284,19 @@ 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**: # 2 frame(s) # Frame 0: @@ -2143,12 +2323,7 @@ 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: @@ -2185,6 +2360,11 @@ move var@3 [Debug] Value to move: true [Debug] +**About to evaluate statement**: [ + var@0 := copy x +] + +**Context**: # 2 frame(s) # Frame 0: @@ -2211,7 +2391,7 @@ true var@5 -> ⊥ : u32 ; } -About to evaluate statement: var@0 := copy x + [Debug] eval_operand: - ctx: @@ -2248,6 +2428,11 @@ copy x [Debug] Value to copy: 4: u32 [Debug] +**About to evaluate statement**: [ + return +] + +**Context**: # 2 frame(s) # Frame 0: @@ -2274,7 +2459,7 @@ copy x var@5 -> ⊥ : u32 ; } -About to evaluate statement: return + [Debug] ctx_pop_frame: # 2 frame(s) @@ -2371,6 +2556,19 @@ 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**: # 1 frame(s) # Frame 0: @@ -2387,17 +2585,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -2414,7 +2609,7 @@ return var@9 -> ⊥ : u32 ; } -About to evaluate statement: y := move get_max(10: u32, 11: u32) + [Debug] eval_operand: - ctx: @@ -2461,6 +2656,20 @@ 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**: # 2 frame(s) # Frame 0: @@ -2487,18 +2696,14 @@ 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**: # 2 frame(s) # Frame 0: @@ -2525,7 +2730,7 @@ return var@5 -> ⊥ : u32 ; } -About to evaluate statement: var@4 := copy x + [Debug] eval_operand: - ctx: @@ -2562,6 +2767,19 @@ 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**: # 2 frame(s) # Frame 0: @@ -2588,17 +2806,14 @@ 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**: # 2 frame(s) # Frame 0: @@ -2625,7 +2840,7 @@ return var@5 -> ⊥ : u32 ; } -About to evaluate statement: var@5 := copy y + [Debug] eval_operand: - ctx: @@ -2662,6 +2877,18 @@ 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**: # 2 frame(s) # Frame 0: @@ -2688,16 +2915,14 @@ 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**: # 2 frame(s) # Frame 0: @@ -2724,7 +2949,7 @@ return var@5 -> 11: u32 ; } -About to evaluate statement: var@3 := move var@4 >= move var@5 + [Debug] eval_operand: - ctx: @@ -2795,6 +3020,17 @@ 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**: # 2 frame(s) # Frame 0: @@ -2821,15 +3057,19 @@ 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**: # 2 frame(s) # Frame 0: @@ -2856,12 +3096,7 @@ 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: @@ -2898,6 +3133,11 @@ move var@3 [Debug] Value to move: false [Debug] +**About to evaluate statement**: [ + var@0 := copy y +] + +**Context**: # 2 frame(s) # Frame 0: @@ -2924,7 +3164,7 @@ false var@5 -> ⊥ : u32 ; } -About to evaluate statement: var@0 := copy y + [Debug] eval_operand: - ctx: @@ -2961,6 +3201,11 @@ copy y [Debug] Value to copy: 11: u32 [Debug] +**About to evaluate statement**: [ + return +] + +**Context**: # 2 frame(s) # Frame 0: @@ -2987,7 +3232,7 @@ copy y var@5 -> ⊥ : u32 ; } -About to evaluate statement: return + [Debug] ctx_pop_frame: # 2 frame(s) @@ -3084,6 +3329,18 @@ 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**: # 1 frame(s) # Frame 0: @@ -3100,16 +3357,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -3126,7 +3381,7 @@ return var@9 -> ⊥ : u32 ; } -About to evaluate statement: var@4 := copy x + [Debug] eval_operand: - ctx: @@ -3153,6 +3408,17 @@ 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**: # 1 frame(s) # Frame 0: @@ -3169,15 +3435,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -3194,7 +3459,7 @@ return var@9 -> ⊥ : u32 ; } -About to evaluate statement: var@5 := copy y + [Debug] eval_operand: - ctx: @@ -3221,6 +3486,16 @@ 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**: # 1 frame(s) # Frame 0: @@ -3237,14 +3512,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -3261,7 +3536,7 @@ return var@9 -> ⊥ : u32 ; } -About to evaluate statement: z := copy var@4 + copy var@5 + [Debug] eval_operand: - ctx: @@ -3312,6 +3587,15 @@ 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**: # 1 frame(s) # Frame 0: @@ -3328,13 +3612,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -3351,7 +3636,7 @@ return var@9 -> ⊥ : u32 ; } -About to evaluate statement: var@9 := copy z + [Debug] eval_operand: - ctx: @@ -3378,6 +3663,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -3394,12 +3687,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -3416,7 +3711,7 @@ return var@9 -> 15: u32 ; } -About to evaluate statement: var@8 := move var@9 == 15: u32 + [Debug] eval_operand: - ctx: @@ -3465,6 +3760,13 @@ move var@9 15: u32 [Debug] +**About to evaluate statement**: [ + var@7 := ¬ move var@8; + assert(¬move var@7); + return +] + +**Context**: # 1 frame(s) # Frame 0: @@ -3481,11 +3783,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -3502,7 +3807,7 @@ return var@9 -> ⊥ : u32 ; } -About to evaluate statement: var@7 := ¬ move var@8 + [Debug] eval_operand: - ctx: @@ -3529,6 +3834,12 @@ move var@8 [Debug] Value to move: true [Debug] +**About to evaluate statement**: [ + assert(¬move var@7); + return +] + +**Context**: # 1 frame(s) # Frame 0: @@ -3545,10 +3856,14 @@ true var@9 -> ⊥ : u32 ; } -About to evaluate statement: assert(¬move var@7) -return + [Debug] +**About to evaluate statement**: [ + assert(¬move var@7) +] + +**Context**: # 1 frame(s) # Frame 0: @@ -3565,7 +3880,7 @@ return var@9 -> ⊥ : u32 ; } -About to evaluate statement: assert(¬move var@7) + [Debug] eval_operand: - ctx: @@ -3592,6 +3907,11 @@ move var@7 [Debug] Value to move: false [Debug] +**About to evaluate statement**: [ + return +] + +**Context**: # 1 frame(s) # Frame 0: @@ -3608,10 +3928,17 @@ 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**: # 1 frame(s) # Frame 0: @@ -3621,11 +3948,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -3635,7 +3965,7 @@ return y -> ⊥ : i32 ; } -About to evaluate statement: x := 3: i32 + [Debug] eval_operand: - ctx: @@ -3653,6 +3983,12 @@ About to evaluate statement: x := 3: i32 3: i32 [Debug] +**About to evaluate statement**: [ + y := -3: i32; + return +] + +**Context**: # 1 frame(s) # Frame 0: @@ -3662,10 +3998,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -3675,7 +4015,7 @@ return y -> ⊥ : i32 ; } -About to evaluate statement: y := -3: i32 + [Debug] eval_operand: - ctx: @@ -3693,6 +4033,11 @@ About to evaluate statement: y := -3: i32 -3: i32 [Debug] +**About to evaluate statement**: [ + return +] + +**Context**: # 1 frame(s) # Frame 0: @@ -3702,10 +4047,23 @@ 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**: # 1 frame(s) # Frame 0: @@ -3719,17 +4077,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -3743,7 +4098,7 @@ return var@6 -> ⊥ : i32 ; } -About to evaluate statement: x := 0: i32 + [Debug] eval_operand: - ctx: @@ -3765,6 +4120,18 @@ 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**: # 1 frame(s) # Frame 0: @@ -3778,16 +4145,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -3801,9 +4166,20 @@ 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**: # 1 frame(s) # Frame 0: @@ -3817,15 +4193,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -3839,9 +4214,19 @@ 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**: # 1 frame(s) # Frame 0: @@ -3855,14 +4240,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -3876,7 +4261,7 @@ return var@6 -> ⊥ : i32 ; } -About to evaluate statement: *(*(ppx)) := 1: i32 + [Debug] eval_operand: - ctx: @@ -3898,6 +4283,15 @@ 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**: # 1 frame(s) # Frame 0: @@ -3911,13 +4305,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -3931,7 +4326,7 @@ return var@6 -> ⊥ : i32 ; } -About to evaluate statement: var@6 := copy x + [Debug] eval_operand: - ctx: @@ -3955,6 +4350,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -3968,12 +4371,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -3987,7 +4392,7 @@ return var@6 -> 1: i32 ; } -About to evaluate statement: var@5 := move var@6 == 1: i32 + [Debug] eval_operand: - ctx: @@ -4030,6 +4435,13 @@ move var@6 1: i32 [Debug] +**About to evaluate statement**: [ + var@4 := ¬ move var@5; + assert(¬move var@4); + return +] + +**Context**: # 1 frame(s) # Frame 0: @@ -4043,11 +4455,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -4061,7 +4476,7 @@ return var@6 -> ⊥ : i32 ; } -About to evaluate statement: var@4 := ¬ move var@5 + [Debug] eval_operand: - ctx: @@ -4085,6 +4500,12 @@ move var@5 [Debug] Value to move: true [Debug] +**About to evaluate statement**: [ + assert(¬move var@4); + return +] + +**Context**: # 1 frame(s) # Frame 0: @@ -4098,10 +4519,14 @@ true var@6 -> ⊥ : i32 ; } -About to evaluate statement: assert(¬move var@4) -return + [Debug] +**About to evaluate statement**: [ + assert(¬move var@4) +] + +**Context**: # 1 frame(s) # Frame 0: @@ -4115,7 +4540,7 @@ return var@6 -> ⊥ : i32 ; } -About to evaluate statement: assert(¬move var@4) + [Debug] eval_operand: - ctx: @@ -4139,6 +4564,11 @@ move var@4 [Debug] Value to move: false [Debug] +**About to evaluate statement**: [ + return +] + +**Context**: # 1 frame(s) # Frame 0: @@ -4152,10 +4582,39 @@ 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**: # 1 frame(s) # Frame 0: @@ -4181,33 +4640,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -4233,7 +4673,7 @@ return var@18 -> ⊥ : i32 ; } -About to evaluate statement: x := 0: i32 + [Debug] eval_operand: - ctx: @@ -4267,6 +4707,34 @@ 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**: # 1 frame(s) # Frame 0: @@ -4292,32 +4760,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -4343,7 +4793,7 @@ return var@18 -> ⊥ : i32 ; } -About to evaluate statement: y := 1: i32 + [Debug] eval_operand: - ctx: @@ -4377,6 +4827,33 @@ 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**: # 1 frame(s) # Frame 0: @@ -4402,31 +4879,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -4452,9 +4912,35 @@ 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**: # 1 frame(s) # Frame 0: @@ -4480,30 +4966,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -4529,9 +4999,34 @@ 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**: # 1 frame(s) # Frame 0: @@ -4557,29 +5052,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -4605,9 +5085,33 @@ 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**: # 1 frame(s) # Frame 0: @@ -4633,28 +5137,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -4680,9 +5170,32 @@ 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**: # 1 frame(s) # Frame 0: @@ -4708,27 +5221,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -4754,7 +5254,7 @@ return var@18 -> ⊥ : i32 ; } -About to evaluate statement: *(ppx) := move var@6 + [Debug] eval_operand: - ctx: @@ -4790,6 +5290,28 @@ 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**: # 1 frame(s) # Frame 0: @@ -4815,26 +5337,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -4860,7 +5370,7 @@ return var@18 -> ⊥ : i32 ; } -About to evaluate statement: *(*(ppx)) := 2: i32 + [Debug] eval_operand: - ctx: @@ -4894,6 +5404,27 @@ 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**: # 1 frame(s) # Frame 0: @@ -4919,25 +5450,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -4963,7 +5483,7 @@ return var@18 -> ⊥ : i32 ; } -About to evaluate statement: var@9 := copy *(px) + [Debug] eval_operand: - ctx: @@ -4999,6 +5519,26 @@ 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**: # 1 frame(s) # Frame 0: @@ -5024,24 +5564,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -5067,7 +5597,7 @@ return var@18 -> ⊥ : i32 ; } -About to evaluate statement: var@8 := move var@9 == 2: i32 + [Debug] eval_operand: - ctx: @@ -5134,6 +5664,25 @@ 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**: # 1 frame(s) # Frame 0: @@ -5159,23 +5708,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -5201,7 +5741,7 @@ return var@18 -> ⊥ : i32 ; } -About to evaluate statement: var@7 := ¬ move var@8 + [Debug] eval_operand: - ctx: @@ -5237,6 +5777,24 @@ 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**: # 1 frame(s) # Frame 0: @@ -5262,22 +5820,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -5303,7 +5853,7 @@ return var@18 -> ⊥ : i32 ; } -About to evaluate statement: assert(¬move var@7) + [Debug] eval_operand: - ctx: @@ -5339,6 +5889,23 @@ 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**: # 1 frame(s) # Frame 0: @@ -5364,21 +5931,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -5404,7 +5964,7 @@ return var@18 -> ⊥ : i32 ; } -About to evaluate statement: var@12 := copy x + [Debug] eval_operand: - ctx: @@ -5440,6 +6000,22 @@ 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**: # 1 frame(s) # Frame 0: @@ -5465,20 +6041,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -5504,7 +6074,7 @@ return var@18 -> ⊥ : i32 ; } -About to evaluate statement: var@11 := move var@12 == 0: i32 + [Debug] eval_operand: - ctx: @@ -5571,6 +6141,21 @@ 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**: # 1 frame(s) # Frame 0: @@ -5596,19 +6181,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -5634,7 +6214,7 @@ return var@18 -> ⊥ : i32 ; } -About to evaluate statement: var@10 := ¬ move var@11 + [Debug] eval_operand: - ctx: @@ -5670,6 +6250,20 @@ 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**: # 1 frame(s) # Frame 0: @@ -5695,18 +6289,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -5732,7 +6322,7 @@ return var@18 -> ⊥ : i32 ; } -About to evaluate statement: assert(¬move var@10) + [Debug] eval_operand: - ctx: @@ -5768,6 +6358,19 @@ 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**: # 1 frame(s) # Frame 0: @@ -5793,17 +6396,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -5829,7 +6429,7 @@ return var@18 -> ⊥ : i32 ; } -About to evaluate statement: var@15 := copy *(py) + [Debug] eval_operand: - ctx: @@ -5865,6 +6465,18 @@ 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**: # 1 frame(s) # Frame 0: @@ -5890,16 +6502,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -5925,7 +6535,7 @@ return var@18 -> ⊥ : i32 ; } -About to evaluate statement: var@14 := move var@15 == 2: i32 + [Debug] eval_operand: - ctx: @@ -5992,6 +6602,17 @@ 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**: # 1 frame(s) # Frame 0: @@ -6017,15 +6638,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -6051,7 +6671,7 @@ return var@18 -> ⊥ : i32 ; } -About to evaluate statement: var@13 := ¬ move var@14 + [Debug] eval_operand: - ctx: @@ -6087,6 +6707,16 @@ 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**: # 1 frame(s) # Frame 0: @@ -6112,14 +6742,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -6145,7 +6775,7 @@ return var@18 -> ⊥ : i32 ; } -About to evaluate statement: assert(¬move var@13) + [Debug] eval_operand: - ctx: @@ -6181,6 +6811,15 @@ 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**: # 1 frame(s) # Frame 0: @@ -6206,13 +6845,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -6238,7 +6878,7 @@ return var@18 -> ⊥ : i32 ; } -About to evaluate statement: var@18 := copy y + [Debug] eval_operand: - ctx: @@ -6274,6 +6914,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -6299,12 +6947,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -6330,7 +6980,7 @@ return var@18 -> 2: i32 ; } -About to evaluate statement: var@17 := move var@18 == 2: i32 + [Debug] eval_operand: - ctx: @@ -6397,6 +7047,13 @@ move var@18 2: i32 [Debug] +**About to evaluate statement**: [ + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: # 1 frame(s) # Frame 0: @@ -6422,11 +7079,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -6452,7 +7112,7 @@ return var@18 -> ⊥ : i32 ; } -About to evaluate statement: var@16 := ¬ move var@17 + [Debug] eval_operand: - ctx: @@ -6488,6 +7148,12 @@ move var@17 [Debug] Value to move: true [Debug] +**About to evaluate statement**: [ + assert(¬move var@16); + return +] + +**Context**: # 1 frame(s) # Frame 0: @@ -6513,10 +7179,14 @@ true var@18 -> ⊥ : i32 ; } -About to evaluate statement: assert(¬move var@16) -return + [Debug] +**About to evaluate statement**: [ + assert(¬move var@16) +] + +**Context**: # 1 frame(s) # Frame 0: @@ -6542,7 +7212,7 @@ return var@18 -> ⊥ : i32 ; } -About to evaluate statement: assert(¬move var@16) + [Debug] eval_operand: - ctx: @@ -6578,6 +7248,11 @@ move var@16 [Debug] Value to move: false [Debug] +**About to evaluate statement**: [ + return +] + +**Context**: # 1 frame(s) # Frame 0: @@ -6603,10 +7278,21 @@ 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>::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**: # 1 frame(s) # Frame 0: @@ -6617,15 +7303,14 @@ About to evaluate statement: return var@3 -> ⊥ : test1::List ; } -About to evaluate statement: set_discriminant(var@3, 1) -var@2 := move alloc::boxed::Box>::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**: # 1 frame(s) # Frame 0: @@ -6636,9 +7321,19 @@ return var@3 -> ⊥ : test1::List ; } -About to evaluate statement: set_discriminant(var@3, 1) + [Debug] +**About to evaluate statement**: [ + var@2 := move alloc::boxed::Box>::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**: # 1 frame(s) # Frame 0: @@ -6649,14 +7344,14 @@ About to evaluate statement: set_discriminant(var@3, 1) var@3 -> test1::List::Nil ; } -About to evaluate statement: var@2 := move alloc::boxed::Box>::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>::new(move var@3) +] + +**Context**: # 1 frame(s) # Frame 0: @@ -6667,7 +7362,7 @@ return var@3 -> test1::List::Nil ; } -About to evaluate statement: var@2 := move alloc::boxed::Box>::new(move var@3) + [Debug] eval_non_local_function_call: - fid:CfimAst.BoxNew @@ -6777,6 +7472,15 @@ 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**: # 1 frame(s) # Frame 0: @@ -6787,13 +7491,14 @@ move @return var@3 -> ⊥ : test1::List ; } -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**: # 1 frame(s) # Frame 0: @@ -6804,7 +7509,7 @@ return var@3 -> ⊥ : test1::List ; } -About to evaluate statement: (l as test1::List::Cons).0 := 0: i32 + [Debug] eval_operand: - ctx: @@ -6826,6 +7531,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -6836,12 +7549,14 @@ ty: (Types.Adt ((Types.AdtId 1), [], [(Types.Integer Types.I32)])) var@3 -> ⊥ : test1::List ; } -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**: # 1 frame(s) # Frame 0: @@ -6852,7 +7567,7 @@ return var@3 -> ⊥ : test1::List ; } -About to evaluate statement: (l as test1::List::Cons).1 := move var@2 + [Debug] eval_operand: - ctx: @@ -6873,6 +7588,13 @@ move var@2 [Debug] Value to move: @Box(test1::List::Nil) [Debug] +**About to evaluate statement**: [ + set_discriminant(l, 0); + drop(l); + return +] + +**Context**: # 1 frame(s) # Frame 0: @@ -6883,11 +7605,14 @@ move var@2 var@3 -> ⊥ : test1::List ; } -About to evaluate statement: set_discriminant(l, 0) -drop(l) -return + [Debug] +**About to evaluate statement**: [ + set_discriminant(l, 0) +] + +**Context**: # 1 frame(s) # Frame 0: @@ -6898,9 +7623,15 @@ return var@3 -> ⊥ : test1::List ; } -About to evaluate statement: set_discriminant(l, 0) + [Debug] +**About to evaluate statement**: [ + drop(l); + return +] + +**Context**: # 1 frame(s) # Frame 0: @@ -6911,10 +7642,14 @@ About to evaluate statement: set_discriminant(l, 0) var@3 -> ⊥ : test1::List ; } -About to evaluate statement: drop(l) -return + [Debug] +**About to evaluate statement**: [ + drop(l) +] + +**Context**: # 1 frame(s) # Frame 0: @@ -6925,10 +7660,15 @@ return var@3 -> ⊥ : test1::List ; } -About to evaluate statement: drop(l) + [Debug] drop_value: place: l [Debug] +**About to evaluate statement**: [ + return +] + +**Context**: # 1 frame(s) # Frame 0: @@ -6939,10 +7679,26 @@ About to evaluate statement: drop(l) var@3 -> ⊥ : test1::List ; } -About to evaluate statement: return + [Debug] test_unit_function: test_box1 [Debug] +**About to evaluate statement**: [ + b := move alloc::boxed::Box::new(0: i32); + var@3 := &two-phase b; + x := move core::ops::deref::DerefMut::deref_mut(move var@3); + *(x) := 1: i32; + var@5 := &b; + x := move core::ops::deref::Deref>::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**: # 1 frame(s) # Frame 0: @@ -6958,20 +7714,14 @@ About to evaluate statement: return var@8 -> ⊥ : i32 ; } -About to evaluate statement: b := move alloc::boxed::Box::new(0: i32) -var@3 := &two-phase b -x := move core::ops::deref::DerefMut::deref_mut(move var@3) -*(x) := 1: i32 -var@5 := &b -x := move core::ops::deref::Deref>::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::new(0: i32) +] + +**Context**: # 1 frame(s) # Frame 0: @@ -6987,7 +7737,7 @@ return var@8 -> ⊥ : i32 ; } -About to evaluate statement: b := move alloc::boxed::Box::new(0: i32) + [Debug] eval_non_local_function_call: - fid:CfimAst.BoxNew @@ -7120,6 +7870,21 @@ 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::deref_mut(move var@3); + *(x) := 1: i32; + var@5 := &b; + x := move core::ops::deref::Deref>::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**: # 1 frame(s) # Frame 0: @@ -7135,19 +7900,14 @@ move @return var@8 -> ⊥ : i32 ; } -About to evaluate statement: var@3 := &two-phase b -x := move core::ops::deref::DerefMut::deref_mut(move var@3) -*(x) := 1: i32 -var@5 := &b -x := move core::ops::deref::Deref>::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**: # 1 frame(s) # Frame 0: @@ -7163,9 +7923,23 @@ return var@8 -> ⊥ : i32 ; } -About to evaluate statement: var@3 := &two-phase b + [Debug] +**About to evaluate statement**: [ + x := move core::ops::deref::DerefMut::deref_mut(move var@3); + *(x) := 1: i32; + var@5 := &b; + x := move core::ops::deref::Deref>::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**: # 1 frame(s) # Frame 0: @@ -7181,18 +7955,14 @@ About to evaluate statement: var@3 := &two-phase b var@8 -> ⊥ : i32 ; } -About to evaluate statement: x := move core::ops::deref::DerefMut::deref_mut(move var@3) -*(x) := 1: i32 -var@5 := &b -x := move core::ops::deref::Deref>::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::deref_mut(move var@3) +] + +**Context**: # 1 frame(s) # Frame 0: @@ -7208,7 +7978,7 @@ return var@8 -> ⊥ : i32 ; } -About to evaluate statement: x := move core::ops::deref::DerefMut::deref_mut(move var@3) + [Debug] eval_non_local_function_call: - fid:CfimAst.BoxDerefMut @@ -7327,6 +8097,19 @@ 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>::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**: # 1 frame(s) # Frame 0: @@ -7342,17 +8125,14 @@ move @return var@8 -> ⊥ : i32 ; } -About to evaluate statement: *(x) := 1: i32 -var@5 := &b -x := move core::ops::deref::Deref>::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**: # 1 frame(s) # Frame 0: @@ -7368,7 +8148,7 @@ return var@8 -> ⊥ : i32 ; } -About to evaluate statement: *(x) := 1: i32 + [Debug] eval_operand: - ctx: @@ -7392,6 +8172,18 @@ About to evaluate statement: *(x) := 1: i32 1: i32 [Debug] +**About to evaluate statement**: [ + var@5 := &b; + x := move core::ops::deref::Deref>::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**: # 1 frame(s) # Frame 0: @@ -7407,16 +8199,14 @@ About to evaluate statement: *(x) := 1: i32 var@8 -> ⊥ : i32 ; } -About to evaluate statement: var@5 := &b -x := move core::ops::deref::Deref>::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**: # 1 frame(s) # Frame 0: @@ -7432,9 +8222,20 @@ return var@8 -> ⊥ : i32 ; } -About to evaluate statement: var@5 := &b + [Debug] +**About to evaluate statement**: [ + x := move core::ops::deref::Deref>::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**: # 1 frame(s) # Frame 0: @@ -7450,15 +8251,14 @@ About to evaluate statement: var@5 := &b var@8 -> ⊥ : i32 ; } -About to evaluate statement: x := move core::ops::deref::Deref>::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>::deref(move var@5) +] + +**Context**: # 1 frame(s) # Frame 0: @@ -7474,7 +8274,7 @@ return var@8 -> ⊥ : i32 ; } -About to evaluate statement: x := move core::ops::deref::Deref>::deref(move var@5) + [Debug] eval_non_local_function_call: - fid:CfimAst.BoxDeref @@ -7580,6 +8380,16 @@ 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**: # 1 frame(s) # Frame 0: @@ -7595,14 +8405,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -7618,7 +8428,7 @@ return var@8 -> ⊥ : i32 ; } -About to evaluate statement: var@8 := copy *(x) + [Debug] eval_operand: - ctx: @@ -7644,6 +8454,15 @@ 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**: # 1 frame(s) # Frame 0: @@ -7659,13 +8478,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -7681,7 +8501,7 @@ return var@8 -> 1: i32 ; } -About to evaluate statement: var@7 := move var@8 == 1: i32 + [Debug] eval_operand: - ctx: @@ -7728,6 +8548,14 @@ move var@8 1: i32 [Debug] +**About to evaluate statement**: [ + var@6 := ¬ move var@7; + assert(¬move var@6); + drop(b); + return +] + +**Context**: # 1 frame(s) # Frame 0: @@ -7743,12 +8571,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -7764,7 +8594,7 @@ return var@8 -> ⊥ : i32 ; } -About to evaluate statement: var@6 := ¬ move var@7 + [Debug] eval_operand: - ctx: @@ -7790,6 +8620,13 @@ move var@7 [Debug] Value to move: true [Debug] +**About to evaluate statement**: [ + assert(¬move var@6); + drop(b); + return +] + +**Context**: # 1 frame(s) # Frame 0: @@ -7805,11 +8642,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -7825,7 +8665,7 @@ return var@8 -> ⊥ : i32 ; } -About to evaluate statement: assert(¬move var@6) + [Debug] eval_operand: - ctx: @@ -7851,6 +8691,12 @@ move var@6 [Debug] Value to move: false [Debug] +**About to evaluate statement**: [ + drop(b); + return +] + +**Context**: # 1 frame(s) # Frame 0: @@ -7866,10 +8712,14 @@ false var@8 -> ⊥ : i32 ; } -About to evaluate statement: drop(b) -return + [Debug] +**About to evaluate statement**: [ + drop(b) +] + +**Context**: # 1 frame(s) # Frame 0: @@ -7885,10 +8735,15 @@ return var@8 -> ⊥ : i32 ; } -About to evaluate statement: drop(b) + [Debug] drop_value: place: b [Debug] +**About to evaluate statement**: [ + return +] + +**Context**: # 1 frame(s) # Frame 0: @@ -7904,10 +8759,24 @@ 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**: # 1 frame(s) # Frame 0: @@ -7923,18 +8792,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -7950,7 +8815,7 @@ return var@8 -> ⊥ : i32 ; } -About to evaluate statement: x := 0: i32 + [Debug] eval_operand: - ctx: @@ -7974,6 +8839,19 @@ 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**: # 1 frame(s) # Frame 0: @@ -7989,17 +8867,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -8015,9 +8890,21 @@ 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**: # 1 frame(s) # Frame 0: @@ -8033,16 +8920,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -8058,7 +8943,7 @@ return var@8 -> ⊥ : i32 ; } -About to evaluate statement: var@4 := copy x + [Debug] eval_operand: - ctx: @@ -8084,6 +8969,17 @@ 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**: # 1 frame(s) # Frame 0: @@ -8099,15 +8995,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -8123,7 +9018,7 @@ return var@8 -> ⊥ : i32 ; } -About to evaluate statement: y := move copy_int(move var@4) + [Debug] eval_operand: - ctx: @@ -8149,6 +9044,12 @@ move var@4 [Debug] Value to move: 0: i32 [Debug] +**About to evaluate statement**: [ + var@0 := copy x; + return +] + +**Context**: # 2 frame(s) # Frame 0: @@ -8170,10 +9071,14 @@ 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**: # 2 frame(s) # Frame 0: @@ -8195,7 +9100,7 @@ return x -> 0: i32 ; } -About to evaluate statement: var@0 := copy x + [Debug] eval_operand: - ctx: @@ -8227,6 +9132,11 @@ copy x [Debug] Value to copy: 0: i32 [Debug] +**About to evaluate statement**: [ + return +] + +**Context**: # 2 frame(s) # Frame 0: @@ -8248,7 +9158,7 @@ copy x x -> 0: i32 ; } -About to evaluate statement: return + [Debug] ctx_pop_frame: # 2 frame(s) @@ -8326,6 +9236,16 @@ 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**: # 1 frame(s) # Frame 0: @@ -8341,14 +9261,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -8364,7 +9284,7 @@ return var@8 -> ⊥ : i32 ; } -About to evaluate statement: var@7 := copy *(px) + [Debug] eval_operand: - ctx: @@ -8390,6 +9310,15 @@ 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**: # 1 frame(s) # Frame 0: @@ -8405,13 +9334,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -8427,7 +9357,7 @@ return var@8 -> ⊥ : i32 ; } -About to evaluate statement: var@8 := copy y + [Debug] eval_operand: - ctx: @@ -8453,6 +9383,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -8468,12 +9406,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -8489,7 +9429,7 @@ return var@8 -> 0: i32 ; } -About to evaluate statement: var@6 := move var@7 == move var@8 + [Debug] eval_operand: - ctx: @@ -8538,6 +9478,13 @@ 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**: # 1 frame(s) # Frame 0: @@ -8553,11 +9500,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -8573,7 +9523,7 @@ return var@8 -> ⊥ : i32 ; } -About to evaluate statement: var@5 := ¬ move var@6 + [Debug] eval_operand: - ctx: @@ -8599,6 +9549,12 @@ move var@6 [Debug] Value to move: true [Debug] +**About to evaluate statement**: [ + assert(¬move var@5); + return +] + +**Context**: # 1 frame(s) # Frame 0: @@ -8614,10 +9570,14 @@ true var@8 -> ⊥ : i32 ; } -About to evaluate statement: assert(¬move var@5) -return + [Debug] +**About to evaluate statement**: [ + assert(¬move var@5) +] + +**Context**: # 1 frame(s) # Frame 0: @@ -8633,7 +9593,7 @@ return var@8 -> ⊥ : i32 ; } -About to evaluate statement: assert(¬move var@5) + [Debug] eval_operand: - ctx: @@ -8659,6 +9619,11 @@ move var@5 [Debug] Value to move: false [Debug] +**About to evaluate statement**: [ + return +] + +**Context**: # 1 frame(s) # Frame 0: @@ -8674,10 +9639,26 @@ 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>::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(move var@6); + var@4 := ¬ move var@5; + assert(¬move var@4); + drop(l); + return +] + +**Context**: # 1 frame(s) # Frame 0: @@ -8692,20 +9673,14 @@ About to evaluate statement: return var@7 -> ⊥ : &'_ (test1::List) ; } -About to evaluate statement: set_discriminant(var@3, 1) -var@2 := move alloc::boxed::Box>::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(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**: # 1 frame(s) # Frame 0: @@ -8720,9 +9695,24 @@ return var@7 -> ⊥ : &'_ (test1::List) ; } -About to evaluate statement: set_discriminant(var@3, 1) + [Debug] +**About to evaluate statement**: [ + var@2 := move alloc::boxed::Box>::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(move var@6); + var@4 := ¬ move var@5; + assert(¬move var@4); + drop(l); + return +] + +**Context**: # 1 frame(s) # Frame 0: @@ -8737,19 +9727,14 @@ About to evaluate statement: set_discriminant(var@3, 1) var@7 -> ⊥ : &'_ (test1::List) ; } -About to evaluate statement: var@2 := move alloc::boxed::Box>::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(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>::new(move var@3) +] + +**Context**: # 1 frame(s) # Frame 0: @@ -8764,7 +9749,7 @@ return var@7 -> ⊥ : &'_ (test1::List) ; } -About to evaluate statement: var@2 := move alloc::boxed::Box>::new(move var@3) + [Debug] eval_non_local_function_call: - fid:CfimAst.BoxNew @@ -8894,6 +9879,20 @@ 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(move var@6); + var@4 := ¬ move var@5; + assert(¬move var@4); + drop(l); + return +] + +**Context**: # 1 frame(s) # Frame 0: @@ -8908,18 +9907,14 @@ move @return var@7 -> ⊥ : &'_ (test1::List) ; } -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(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**: # 1 frame(s) # Frame 0: @@ -8934,7 +9929,7 @@ return var@7 -> ⊥ : &'_ (test1::List) ; } -About to evaluate statement: (l as test1::List::Cons).0 := 0: i32 + [Debug] eval_operand: - ctx: @@ -8960,6 +9955,19 @@ 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(move var@6); + var@4 := ¬ move var@5; + assert(¬move var@4); + drop(l); + return +] + +**Context**: # 1 frame(s) # Frame 0: @@ -8974,17 +9982,14 @@ ty: (Types.Adt ((Types.AdtId 1), [], [(Types.Integer Types.I32)])) var@7 -> ⊥ : &'_ (test1::List) ; } -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(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**: # 1 frame(s) # Frame 0: @@ -8999,7 +10004,7 @@ return var@7 -> ⊥ : &'_ (test1::List) ; } -About to evaluate statement: (l as test1::List::Cons).1 := move var@2 + [Debug] eval_operand: - ctx: @@ -9024,6 +10029,18 @@ 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(move var@6); + var@4 := ¬ move var@5; + assert(¬move var@4); + drop(l); + return +] + +**Context**: # 1 frame(s) # Frame 0: @@ -9038,16 +10055,14 @@ move var@2 var@7 -> ⊥ : &'_ (test1::List) ; } -About to evaluate statement: set_discriminant(l, 0) -var@7 := &l -var@6 := copy var@7 -var@5 := move is_cons(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**: # 1 frame(s) # Frame 0: @@ -9062,9 +10077,20 @@ return var@7 -> ⊥ : &'_ (test1::List) ; } -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(move var@6); + var@4 := ¬ move var@5; + assert(¬move var@4); + drop(l); + return +] + +**Context**: # 1 frame(s) # Frame 0: @@ -9079,15 +10105,14 @@ About to evaluate statement: set_discriminant(l, 0) var@7 -> ⊥ : &'_ (test1::List) ; } -About to evaluate statement: var@7 := &l -var@6 := copy var@7 -var@5 := move is_cons(move var@6) -var@4 := ¬ move var@5 -assert(¬move var@4) -drop(l) -return + [Debug] +**About to evaluate statement**: [ + var@7 := &l +] + +**Context**: # 1 frame(s) # Frame 0: @@ -9102,9 +10127,19 @@ return var@7 -> ⊥ : &'_ (test1::List) ; } -About to evaluate statement: var@7 := &l + [Debug] +**About to evaluate statement**: [ + var@6 := copy var@7; + var@5 := move is_cons(move var@6); + var@4 := ¬ move var@5; + assert(¬move var@4); + drop(l); + return +] + +**Context**: # 1 frame(s) # Frame 0: @@ -9119,14 +10154,14 @@ 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(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**: # 1 frame(s) # Frame 0: @@ -9141,7 +10176,7 @@ return var@7 -> ⌊shared@0⌋ ; } -About to evaluate statement: var@6 := copy var@7 + [Debug] eval_operand: - ctx: @@ -9166,6 +10201,15 @@ copy var@7 [Debug] Value to copy: ⌊shared@0⌋ [Debug] +**About to evaluate statement**: [ + var@5 := move is_cons(move var@6); + var@4 := ¬ move var@5; + assert(¬move var@4); + drop(l); + return +] + +**Context**: # 1 frame(s) # Frame 0: @@ -9180,13 +10224,14 @@ copy var@7 var@7 -> ⌊shared@0⌋ ; } -About to evaluate statement: var@5 := move is_cons(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(move var@6) +] + +**Context**: # 1 frame(s) # Frame 0: @@ -9201,7 +10246,7 @@ return var@7 -> ⌊shared@0⌋ ; } -About to evaluate statement: var@5 := move is_cons(move var@6) + [Debug] eval_operand: - ctx: @@ -9226,6 +10271,23 @@ 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**: # 2 frame(s) # Frame 0: @@ -9247,21 +10309,14 @@ 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**: # 2 frame(s) # Frame 0: @@ -9283,9 +10338,25 @@ 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**: # 2 frame(s) # Frame 0: @@ -9307,20 +10378,24 @@ 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**: # 2 frame(s) # Frame 0: @@ -9342,17 +10417,7 @@ 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: @@ -9384,6 +10449,11 @@ move var@2 [Debug] Value to move: 0: isize [Debug] +**About to evaluate statement**: [ + var@0 := true +] + +**Context**: # 2 frame(s) # Frame 0: @@ -9405,7 +10475,7 @@ move var@2 var@2 -> ⊥ : isize ; } -About to evaluate statement: var@0 := true + [Debug] eval_operand: - ctx: @@ -9435,6 +10505,11 @@ About to evaluate statement: var@0 := true true [Debug] +**About to evaluate statement**: [ + return +] + +**Context**: # 2 frame(s) # Frame 0: @@ -9456,7 +10531,7 @@ true var@2 -> ⊥ : isize ; } -About to evaluate statement: return + [Debug] ctx_pop_frame: # 2 frame(s) @@ -9535,6 +10610,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -9549,12 +10632,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -9569,7 +10654,7 @@ return var@7 -> ⌊shared@0⌋ ; } -About to evaluate statement: var@4 := ¬ move var@5 + [Debug] eval_operand: - ctx: @@ -9594,6 +10679,13 @@ move var@5 [Debug] Value to move: true [Debug] +**About to evaluate statement**: [ + assert(¬move var@4); + drop(l); + return +] + +**Context**: # 1 frame(s) # Frame 0: @@ -9608,11 +10700,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -9627,7 +10722,7 @@ return var@7 -> ⌊shared@0⌋ ; } -About to evaluate statement: assert(¬move var@4) + [Debug] eval_operand: - ctx: @@ -9652,6 +10747,12 @@ move var@4 [Debug] Value to move: false [Debug] +**About to evaluate statement**: [ + drop(l); + return +] + +**Context**: # 1 frame(s) # Frame 0: @@ -9666,10 +10767,14 @@ false var@7 -> ⌊shared@0⌋ ; } -About to evaluate statement: drop(l) -return + [Debug] +**About to evaluate statement**: [ + drop(l) +] + +**Context**: # 1 frame(s) # Frame 0: @@ -9684,10 +10789,15 @@ return var@7 -> ⌊shared@0⌋ ; } -About to evaluate statement: drop(l) + [Debug] drop_value: place: l [Debug] +**About to evaluate statement**: [ + return +] + +**Context**: # 1 frame(s) # Frame 0: @@ -9702,10 +10812,29 @@ About to evaluate statement: drop(l) var@7 -> ⊥ : &'_ (test1::List) ; } -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>::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(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**: # 1 frame(s) # Frame 0: @@ -9723,23 +10852,14 @@ About to evaluate statement: return var@10 -> ⊥ : i32 ; } -About to evaluate statement: set_discriminant(var@3, 1) -var@2 := move alloc::boxed::Box>::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(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**: # 1 frame(s) # Frame 0: @@ -9757,9 +10877,27 @@ return var@10 -> ⊥ : i32 ; } -About to evaluate statement: set_discriminant(var@3, 1) + [Debug] +**About to evaluate statement**: [ + var@2 := move alloc::boxed::Box>::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(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**: # 1 frame(s) # Frame 0: @@ -9777,22 +10915,14 @@ About to evaluate statement: set_discriminant(var@3, 1) var@10 -> ⊥ : i32 ; } -About to evaluate statement: var@2 := move alloc::boxed::Box>::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(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>::new(move var@3) +] + +**Context**: # 1 frame(s) # Frame 0: @@ -9810,7 +10940,7 @@ return var@10 -> ⊥ : i32 ; } -About to evaluate statement: var@2 := move alloc::boxed::Box>::new(move var@3) + [Debug] eval_non_local_function_call: - fid:CfimAst.BoxNew @@ -9955,6 +11085,23 @@ 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(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**: # 1 frame(s) # Frame 0: @@ -9972,21 +11119,14 @@ 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(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**: # 1 frame(s) # Frame 0: @@ -10004,7 +11144,7 @@ return var@10 -> ⊥ : i32 ; } -About to evaluate statement: (l as test1::List::Cons).0 := 0: i32 + [Debug] eval_operand: - ctx: @@ -10033,6 +11173,22 @@ 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(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**: # 1 frame(s) # Frame 0: @@ -10050,20 +11206,14 @@ 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(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**: # 1 frame(s) # Frame 0: @@ -10081,7 +11231,7 @@ return var@10 -> ⊥ : i32 ; } -About to evaluate statement: (l as test1::List::Cons).1 := move var@2 + [Debug] eval_operand: - ctx: @@ -10109,6 +11259,21 @@ 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(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**: # 1 frame(s) # Frame 0: @@ -10126,19 +11291,14 @@ move var@2 var@10 -> ⊥ : i32 ; } -About to evaluate statement: set_discriminant(l, 0) -var@7 := move l -var@6 := move split_list(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**: # 1 frame(s) # Frame 0: @@ -10156,9 +11316,23 @@ 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(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**: # 1 frame(s) # Frame 0: @@ -10176,18 +11350,14 @@ About to evaluate statement: set_discriminant(l, 0) var@10 -> ⊥ : i32 ; } -About to evaluate statement: var@7 := move l -var@6 := move split_list(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**: # 1 frame(s) # Frame 0: @@ -10205,7 +11375,7 @@ return var@10 -> ⊥ : i32 ; } -About to evaluate statement: var@7 := move l + [Debug] eval_operand: - ctx: @@ -10233,6 +11403,19 @@ 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(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**: # 1 frame(s) # Frame 0: @@ -10250,17 +11433,14 @@ test1::List::Cons { 0 = 0: i32; 1 = @Box(test1::List::Nil); } var@10 -> ⊥ : i32 ; } -About to evaluate statement: var@6 := move split_list(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(move var@7) +] + +**Context**: # 1 frame(s) # Frame 0: @@ -10278,7 +11458,7 @@ return var@10 -> ⊥ : i32 ; } -About to evaluate statement: var@6 := move split_list(move var@7) + [Debug] eval_operand: - ctx: @@ -10306,9 +11486,35 @@ move var@7 [Debug] Value to move: test1::List::Cons { 0 = 0: i32; 1 = @Box(test1::List::Nil); } [Debug] -# 2 frame(s) - -# Frame 0: +**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>(move tl); + return + } + _ => { + panic + } + } +] + +**Context**: +# 2 frame(s) + +# Frame 0: { var@0 -> ⊥ : () ; l -> ⊥ : test1::List ; @@ -10338,30 +11544,14 @@ 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>(move tl) - return - } - _ => { - panic - } -} + [Debug] +**About to evaluate statement**: [ + var@8 := false +] + +**Context**: # 2 frame(s) # Frame 0: @@ -10394,7 +11584,7 @@ switch (move var@2) { var@10 -> ⊥ : isize ; } -About to evaluate statement: var@8 := false + [Debug] eval_operand: - ctx: @@ -10435,6 +11625,31 @@ 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>(move tl); + return + } + _ => { + panic + } + } +] + +**Context**: # 2 frame(s) # Frame 0: @@ -10467,29 +11682,14 @@ 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>(move tl) - return - } - _ => { - panic - } -} + [Debug] +**About to evaluate statement**: [ + var@7 := false +] + +**Context**: # 2 frame(s) # Frame 0: @@ -10522,7 +11722,7 @@ switch (move var@2) { var@10 -> ⊥ : isize ; } -About to evaluate statement: var@7 := false + [Debug] eval_operand: - ctx: @@ -10563,6 +11763,30 @@ 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>(move tl); + return + } + _ => { + panic + } + } +] + +**Context**: # 2 frame(s) # Frame 0: @@ -10595,28 +11819,14 @@ 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>(move tl) - return - } - _ => { - panic - } -} + [Debug] +**About to evaluate statement**: [ + var@7 := true +] + +**Context**: # 2 frame(s) # Frame 0: @@ -10649,7 +11859,7 @@ switch (move var@2) { var@10 -> ⊥ : isize ; } -About to evaluate statement: var@7 := true + [Debug] eval_operand: - ctx: @@ -10690,6 +11900,29 @@ 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>(move tl); + return + } + _ => { + panic + } + } +] + +**Context**: # 2 frame(s) # Frame 0: @@ -10722,27 +11955,14 @@ 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>(move tl) - return - } - _ => { - panic - } -} + [Debug] +**About to evaluate statement**: [ + var@8 := true +] + +**Context**: # 2 frame(s) # Frame 0: @@ -10775,7 +11995,7 @@ switch (move var@2) { var@10 -> ⊥ : isize ; } -About to evaluate statement: var@8 := true + [Debug] eval_operand: - ctx: @@ -10816,6 +12036,28 @@ 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>(move tl); + return + } + _ => { + panic + } + } +] + +**Context**: # 2 frame(s) # Frame 0: @@ -10848,26 +12090,14 @@ 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>(move tl) - return - } - _ => { - panic - } -} + [Debug] +**About to evaluate statement**: [ + var@2 := discriminant(l) +] + +**Context**: # 2 frame(s) # Frame 0: @@ -10900,9 +12130,30 @@ 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>(move tl); + return + } + _ => { + panic + } + } +] + +**Context**: # 2 frame(s) # Frame 0: @@ -10935,23 +12186,7 @@ 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>(move tl) - return - } - _ => { - panic - } -} + [Debug] eval_operand: - ctx: @@ -10994,6 +12229,20 @@ 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>(move tl); + return +] + +**Context**: # 2 frame(s) # Frame 0: @@ -11026,18 +12275,14 @@ 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>(move tl) -return + [Debug] +**About to evaluate statement**: [ + var@8 := false +] + +**Context**: # 2 frame(s) # Frame 0: @@ -11070,7 +12315,7 @@ return var@10 -> ⊥ : isize ; } -About to evaluate statement: var@8 := false + [Debug] eval_operand: - ctx: @@ -11111,6 +12356,19 @@ 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>(move tl); + return +] + +**Context**: # 2 frame(s) # Frame 0: @@ -11143,17 +12401,14 @@ 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>(move tl) -return + [Debug] +**About to evaluate statement**: [ + hd := move (l as test1::List::Cons).0 +] + +**Context**: # 2 frame(s) # Frame 0: @@ -11186,7 +12441,7 @@ return var@10 -> ⊥ : isize ; } -About to evaluate statement: hd := move (l as test1::List::Cons).0 + [Debug] eval_operand: - ctx: @@ -11229,6 +12484,18 @@ 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>(move tl); + return +] + +**Context**: # 2 frame(s) # Frame 0: @@ -11261,16 +12528,14 @@ 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>(move tl) -return + [Debug] +**About to evaluate statement**: [ + var@7 := false +] + +**Context**: # 2 frame(s) # Frame 0: @@ -11303,7 +12568,7 @@ return var@10 -> ⊥ : isize ; } -About to evaluate statement: var@7 := false + [Debug] eval_operand: - ctx: @@ -11344,6 +12609,17 @@ 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>(move tl); + return +] + +**Context**: # 2 frame(s) # Frame 0: @@ -11376,15 +12652,14 @@ 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>(move tl) -return + [Debug] +**About to evaluate statement**: [ + tl := move (l as test1::List::Cons).1 +] + +**Context**: # 2 frame(s) # Frame 0: @@ -11417,7 +12692,7 @@ return var@10 -> ⊥ : isize ; } -About to evaluate statement: tl := move (l as test1::List::Cons).1 + [Debug] eval_operand: - ctx: @@ -11460,6 +12735,16 @@ 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>(move tl); + return +] + +**Context**: # 2 frame(s) # Frame 0: @@ -11492,14 +12777,14 @@ 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>(move tl) -return + [Debug] +**About to evaluate statement**: [ + var@5 := move hd +] + +**Context**: # 2 frame(s) # Frame 0: @@ -11532,7 +12817,7 @@ return var@10 -> ⊥ : isize ; } -About to evaluate statement: var@5 := move hd + [Debug] eval_operand: - ctx: @@ -11575,6 +12860,15 @@ 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>(move tl); + return +] + +**Context**: # 2 frame(s) # Frame 0: @@ -11607,13 +12901,14 @@ 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>(move tl) -return + [Debug] +**About to evaluate statement**: [ + var@6 := move deref_box(tl) +] + +**Context**: # 2 frame(s) # Frame 0: @@ -11646,7 +12941,7 @@ return var@10 -> ⊥ : isize ; } -About to evaluate statement: var@6 := move deref_box(tl) + [Debug] eval_operand: - ctx: @@ -11689,6 +12984,14 @@ 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>(move tl); + return +] + +**Context**: # 2 frame(s) # Frame 0: @@ -11721,12 +13024,14 @@ 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>(move tl) -return + [Debug] +**About to evaluate statement**: [ + (var@0).0 := move var@5 +] + +**Context**: # 2 frame(s) # Frame 0: @@ -11759,7 +13064,7 @@ return var@10 -> ⊥ : isize ; } -About to evaluate statement: (var@0).0 := move var@5 + [Debug] eval_operand: - ctx: @@ -11808,6 +13113,13 @@ 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>(move tl); + return +] + +**Context**: # 2 frame(s) # Frame 0: @@ -11840,11 +13152,14 @@ 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>(move tl) -return + [Debug] +**About to evaluate statement**: [ + (var@0).1 := move var@6 +] + +**Context**: # 2 frame(s) # Frame 0: @@ -11877,7 +13192,7 @@ return var@10 -> ⊥ : isize ; } -About to evaluate statement: (var@0).1 := move var@6 + [Debug] eval_operand: - ctx: @@ -11920,6 +13235,12 @@ move var@6 [Debug] Value to move: test1::List::Nil [Debug] +**About to evaluate statement**: [ + var@9 := move alloc::alloc::box_free>(move tl); + return +] + +**Context**: # 2 frame(s) # Frame 0: @@ -11952,10 +13273,14 @@ test1::List::Nil var@10 -> ⊥ : isize ; } -About to evaluate statement: var@9 := move alloc::alloc::box_free>(move tl) -return + [Debug] +**About to evaluate statement**: [ + var@9 := move alloc::alloc::box_free>(move tl) +] + +**Context**: # 2 frame(s) # Frame 0: @@ -11988,7 +13313,7 @@ return var@10 -> ⊥ : isize ; } -About to evaluate statement: var@9 := move alloc::alloc::box_free>(move tl) + [Debug] eval_non_local_function_call: - fid:CfimAst.BoxFree @@ -11997,6 +13322,11 @@ About to evaluate statement: var@9 := move alloc::alloc::box_free ⊥ : isize ; } -About to evaluate statement: return + [Debug] ctx_pop_frame: # 2 frame(s) @@ -12149,6 +13479,18 @@ 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**: # 1 frame(s) # Frame 0: @@ -12166,16 +13508,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -12193,7 +13533,7 @@ return var@10 -> ⊥ : i32 ; } -About to evaluate statement: hd := copy (var@6).0 + [Debug] eval_operand: - ctx: @@ -12221,6 +13561,17 @@ 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**: # 1 frame(s) # Frame 0: @@ -12238,15 +13589,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -12264,7 +13614,7 @@ return var@10 -> ⊥ : i32 ; } -About to evaluate statement: tl := move (var@6).1 + [Debug] eval_operand: - ctx: @@ -12292,6 +13642,16 @@ 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**: # 1 frame(s) # Frame 0: @@ -12309,14 +13669,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -12334,7 +13694,7 @@ return var@10 -> ⊥ : i32 ; } -About to evaluate statement: var@10 := copy hd + [Debug] eval_operand: - ctx: @@ -12362,6 +13722,15 @@ 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**: # 1 frame(s) # Frame 0: @@ -12379,13 +13748,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -12403,7 +13773,7 @@ return var@10 -> 0: i32 ; } -About to evaluate statement: var@9 := move var@10 == 0: i32 + [Debug] eval_operand: - ctx: @@ -12454,6 +13824,14 @@ move var@10 0: i32 [Debug] +**About to evaluate statement**: [ + var@8 := ¬ move var@9; + assert(¬move var@8); + drop(tl); + return +] + +**Context**: # 1 frame(s) # Frame 0: @@ -12471,12 +13849,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -12494,7 +13874,7 @@ return var@10 -> ⊥ : i32 ; } -About to evaluate statement: var@8 := ¬ move var@9 + [Debug] eval_operand: - ctx: @@ -12522,6 +13902,13 @@ move var@9 [Debug] Value to move: true [Debug] +**About to evaluate statement**: [ + assert(¬move var@8); + drop(tl); + return +] + +**Context**: # 1 frame(s) # Frame 0: @@ -12539,11 +13926,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -12561,7 +13951,7 @@ return var@10 -> ⊥ : i32 ; } -About to evaluate statement: assert(¬move var@8) + [Debug] eval_operand: - ctx: @@ -12589,6 +13979,12 @@ move var@8 [Debug] Value to move: false [Debug] +**About to evaluate statement**: [ + drop(tl); + return +] + +**Context**: # 1 frame(s) # Frame 0: @@ -12606,10 +14002,14 @@ false var@10 -> ⊥ : i32 ; } -About to evaluate statement: drop(tl) -return + [Debug] +**About to evaluate statement**: [ + drop(tl) +] + +**Context**: # 1 frame(s) # Frame 0: @@ -12627,10 +14027,15 @@ return var@10 -> ⊥ : i32 ; } -About to evaluate statement: drop(tl) + [Debug] drop_value: place: tl [Debug] +**About to evaluate statement**: [ + return +] + +**Context**: # 1 frame(s) # Frame 0: @@ -12648,10 +14053,36 @@ 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(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**: # 1 frame(s) # Frame 0: @@ -12677,30 +14108,14 @@ 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(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**: # 1 frame(s) # Frame 0: @@ -12726,7 +14141,7 @@ return var@18 -> ⊥ : i32 ; } -About to evaluate statement: x := 0: i32 + [Debug] eval_operand: - ctx: @@ -12760,6 +14175,31 @@ 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(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**: # 1 frame(s) # Frame 0: @@ -12785,29 +14225,14 @@ 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(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**: # 1 frame(s) # Frame 0: @@ -12833,7 +14258,7 @@ return var@18 -> ⊥ : i32 ; } -About to evaluate statement: y := 0: i32 + [Debug] eval_operand: - ctx: @@ -12867,6 +14292,30 @@ 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(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**: # 1 frame(s) # Frame 0: @@ -12892,28 +14341,14 @@ 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(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**: # 1 frame(s) # Frame 0: @@ -12939,9 +14374,32 @@ 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(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**: # 1 frame(s) # Frame 0: @@ -12967,27 +14425,14 @@ 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(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**: # 1 frame(s) # Frame 0: @@ -13013,9 +14458,31 @@ 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(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**: # 1 frame(s) # Frame 0: @@ -13041,26 +14508,14 @@ 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(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**: # 1 frame(s) # Frame 0: @@ -13086,9 +14541,30 @@ 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(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**: # 1 frame(s) # Frame 0: @@ -13114,25 +14590,14 @@ 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(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**: # 1 frame(s) # Frame 0: @@ -13158,9 +14623,29 @@ return var@18 -> ⊥ : i32 ; } -About to evaluate statement: var@6 := &two-phase *(var@7) + [Debug] +**About to evaluate statement**: [ + z := move get_elem(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**: # 1 frame(s) # Frame 0: @@ -13186,24 +14671,14 @@ About to evaluate statement: var@6 := &two-phase *(var@7) var@18 -> ⊥ : i32 ; } -About to evaluate statement: z := move get_elem(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(true, move var@4, move var@6) +] + +**Context**: # 1 frame(s) # Frame 0: @@ -13229,7 +14704,7 @@ return var@18 -> ⊥ : i32 ; } -About to evaluate statement: z := move get_elem(true, move var@4, move var@6) + [Debug] eval_operand: - ctx: @@ -13337,6 +14812,18 @@ 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**: # 2 frame(s) # Frame 0: @@ -13371,16 +14858,14 @@ 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**: # 2 frame(s) # Frame 0: @@ -13415,7 +14900,7 @@ return var@4 -> ⊥ : bool ; } -About to evaluate statement: var@4 := copy b + [Debug] eval_operand: - ctx: @@ -13460,6 +14945,17 @@ 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**: # 2 frame(s) # Frame 0: @@ -13494,15 +14990,19 @@ 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**: # 2 frame(s) # Frame 0: @@ -13537,12 +15037,7 @@ 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: @@ -13587,6 +15082,11 @@ move var@4 [Debug] Value to move: true [Debug] +**About to evaluate statement**: [ + var@0 := &mut *(x) +] + +**Context**: # 2 frame(s) # Frame 0: @@ -13621,9 +15121,14 @@ true var@4 -> ⊥ : bool ; } -About to evaluate statement: var@0 := &mut *(x) + [Debug] +**About to evaluate statement**: [ + return +] + +**Context**: # 2 frame(s) # Frame 0: @@ -13658,7 +15163,7 @@ About to evaluate statement: var@0 := &mut *(x) var@4 -> ⊥ : bool ; } -About to evaluate statement: return + [Debug] ctx_pop_frame: # 2 frame(s) @@ -13778,6 +15283,25 @@ 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**: # 1 frame(s) # Frame 0: @@ -13803,23 +15327,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -13845,7 +15360,7 @@ return var@18 -> ⊥ : i32 ; } -About to evaluate statement: var@8 := copy *(z) + [Debug] eval_operand: - ctx: @@ -13881,6 +15396,24 @@ 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**: # 1 frame(s) # Frame 0: @@ -13906,22 +15439,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -13947,7 +15472,7 @@ return var@18 -> ⊥ : i32 ; } -About to evaluate statement: *(z) := copy var@8 + 1: i32 + [Debug] eval_operand: - ctx: @@ -14014,6 +15539,23 @@ 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**: # 1 frame(s) # Frame 0: @@ -14039,21 +15581,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -14079,7 +15614,7 @@ return var@18 -> ⊥ : i32 ; } -About to evaluate statement: var@12 := copy *(z) + [Debug] eval_operand: - ctx: @@ -14115,6 +15650,22 @@ 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**: # 1 frame(s) # Frame 0: @@ -14140,20 +15691,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -14179,7 +15724,7 @@ return var@18 -> ⊥ : i32 ; } -About to evaluate statement: var@11 := move var@12 == 1: i32 + [Debug] eval_operand: - ctx: @@ -14246,6 +15791,21 @@ 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**: # 1 frame(s) # Frame 0: @@ -14271,19 +15831,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -14309,7 +15864,7 @@ return var@18 -> ⊥ : i32 ; } -About to evaluate statement: var@10 := ¬ move var@11 + [Debug] eval_operand: - ctx: @@ -14345,6 +15900,20 @@ 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**: # 1 frame(s) # Frame 0: @@ -14370,18 +15939,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -14407,7 +15972,7 @@ return var@18 -> ⊥ : i32 ; } -About to evaluate statement: assert(¬move var@10) + [Debug] eval_operand: - ctx: @@ -14443,6 +16008,19 @@ 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**: # 1 frame(s) # Frame 0: @@ -14468,17 +16046,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -14504,7 +16079,7 @@ return var@18 -> ⊥ : i32 ; } -About to evaluate statement: var@15 := copy x + [Debug] eval_operand: - ctx: @@ -14540,6 +16115,18 @@ 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**: # 1 frame(s) # Frame 0: @@ -14565,16 +16152,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -14600,7 +16185,7 @@ return var@18 -> ⊥ : i32 ; } -About to evaluate statement: var@14 := move var@15 == 1: i32 + [Debug] eval_operand: - ctx: @@ -14667,6 +16252,17 @@ 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**: # 1 frame(s) # Frame 0: @@ -14692,15 +16288,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -14726,7 +16321,7 @@ return var@18 -> ⊥ : i32 ; } -About to evaluate statement: var@13 := ¬ move var@14 + [Debug] eval_operand: - ctx: @@ -14762,6 +16357,16 @@ 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**: # 1 frame(s) # Frame 0: @@ -14787,14 +16392,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -14820,7 +16425,7 @@ return var@18 -> ⊥ : i32 ; } -About to evaluate statement: assert(¬move var@13) + [Debug] eval_operand: - ctx: @@ -14856,6 +16461,15 @@ 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**: # 1 frame(s) # Frame 0: @@ -14881,13 +16495,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -14913,7 +16528,7 @@ return var@18 -> ⊥ : i32 ; } -About to evaluate statement: var@18 := copy y + [Debug] eval_operand: - ctx: @@ -14949,6 +16564,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -14974,12 +16597,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -15005,7 +16630,7 @@ return var@18 -> 0: i32 ; } -About to evaluate statement: var@17 := move var@18 == 0: i32 + [Debug] eval_operand: - ctx: @@ -15072,6 +16697,13 @@ move var@18 0: i32 [Debug] +**About to evaluate statement**: [ + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: # 1 frame(s) # Frame 0: @@ -15097,11 +16729,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -15127,7 +16762,7 @@ return var@18 -> ⊥ : i32 ; } -About to evaluate statement: var@16 := ¬ move var@17 + [Debug] eval_operand: - ctx: @@ -15163,6 +16798,12 @@ move var@17 [Debug] Value to move: true [Debug] +**About to evaluate statement**: [ + assert(¬move var@16); + return +] + +**Context**: # 1 frame(s) # Frame 0: @@ -15188,10 +16829,14 @@ true var@18 -> ⊥ : i32 ; } -About to evaluate statement: assert(¬move var@16) -return + [Debug] +**About to evaluate statement**: [ + assert(¬move var@16) +] + +**Context**: # 1 frame(s) # Frame 0: @@ -15217,7 +16862,7 @@ return var@18 -> ⊥ : i32 ; } -About to evaluate statement: assert(¬move var@16) + [Debug] eval_operand: - ctx: @@ -15253,6 +16898,11 @@ move var@16 [Debug] Value to move: false [Debug] +**About to evaluate statement**: [ + return +] + +**Context**: # 1 frame(s) # Frame 0: @@ -15278,10 +16928,28 @@ 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(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**: # 1 frame(s) # Frame 0: @@ -15299,22 +16967,14 @@ 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(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**: # 1 frame(s) # Frame 0: @@ -15332,7 +16992,7 @@ return var@10 -> ⊥ : &'_ mut (u32) ; } -About to evaluate statement: x := 0: u32 + [Debug] eval_operand: - ctx: @@ -15358,6 +17018,23 @@ 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(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**: # 1 frame(s) # Frame 0: @@ -15375,21 +17052,14 @@ 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(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**: # 1 frame(s) # Frame 0: @@ -15407,9 +17077,25 @@ 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(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**: # 1 frame(s) # Frame 0: @@ -15427,20 +17113,14 @@ 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(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**: # 1 frame(s) # Frame 0: @@ -15458,7 +17138,7 @@ return var@10 -> ⊥ : &'_ mut (u32) ; } -About to evaluate statement: var@4 := move px + [Debug] eval_operand: - ctx: @@ -15486,6 +17166,21 @@ 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(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**: # 1 frame(s) # Frame 0: @@ -15503,19 +17198,14 @@ 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(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**: # 1 frame(s) # Frame 0: @@ -15533,7 +17223,7 @@ return var@10 -> ⊥ : &'_ mut (u32) ; } -About to evaluate statement: (p).0 := move var@4 + [Debug] eval_operand: - ctx: @@ -15567,6 +17257,20 @@ 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(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**: # 1 frame(s) # Frame 0: @@ -15584,18 +17288,14 @@ 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(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**: # 1 frame(s) # Frame 0: @@ -15613,7 +17313,7 @@ return var@10 -> ⊥ : &'_ mut (u32) ; } -About to evaluate statement: (p).1 := 1: u32 + [Debug] eval_operand: - ctx: @@ -15639,6 +17339,19 @@ 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(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**: # 1 frame(s) # Frame 0: @@ -15656,17 +17369,14 @@ 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(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**: # 1 frame(s) # Frame 0: @@ -15684,9 +17394,21 @@ 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(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**: # 1 frame(s) # Frame 0: @@ -15704,16 +17426,14 @@ 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(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**: # 1 frame(s) # Frame 0: @@ -15731,9 +17451,20 @@ return var@10 -> ⊥ : &'_ mut (u32) ; } -About to evaluate statement: var@7 := &two-phase *(pp0) + [Debug] +**About to evaluate statement**: [ + pp1 := move id_mut_pair(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**: # 1 frame(s) # Frame 0: @@ -15751,15 +17482,14 @@ About to evaluate statement: var@7 := &two-phase *(pp0) var@10 -> ⊥ : &'_ mut (u32) ; } -About to evaluate statement: pp1 := move id_mut_pair(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(move var@7) +] + +**Context**: # 1 frame(s) # Frame 0: @@ -15777,7 +17507,7 @@ return var@10 -> ⊥ : &'_ mut (u32) ; } -About to evaluate statement: pp1 := move id_mut_pair(move var@7) + [Debug] eval_operand: - ctx: @@ -15832,6 +17562,13 @@ 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**: # 2 frame(s) # Frame 0: @@ -15856,11 +17593,14 @@ 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**: # 2 frame(s) # Frame 0: @@ -15885,9 +17625,15 @@ 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**: # 2 frame(s) # Frame 0: @@ -15912,10 +17658,14 @@ 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**: # 2 frame(s) # Frame 0: @@ -15940,9 +17690,14 @@ 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**: # 2 frame(s) # Frame 0: @@ -15967,7 +17722,7 @@ About to evaluate statement: var@0 := &mut *(var@2) var@2 -> &mut@3 (⌊mut@4⌋) ; } -About to evaluate statement: return + [Debug] ctx_pop_frame: # 2 frame(s) @@ -16055,6 +17810,16 @@ 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**: # 1 frame(s) # Frame 0: @@ -16072,14 +17837,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -16097,7 +17862,7 @@ return var@10 -> ⊥ : &'_ mut (u32) ; } -About to evaluate statement: y := 2: u32 + [Debug] eval_operand: - ctx: @@ -16123,6 +17888,15 @@ 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**: # 1 frame(s) # Frame 0: @@ -16140,13 +17914,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -16164,9 +17939,17 @@ 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**: # 1 frame(s) # Frame 0: @@ -16184,12 +17967,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -16207,9 +17992,16 @@ 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**: # 1 frame(s) # Frame 0: @@ -16227,11 +18019,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -16249,7 +18044,7 @@ return var@10 -> &mut@5 (⌊mut@6⌋) ; } -About to evaluate statement: *((pp1).0) := move var@9 + [Debug] eval_operand: - ctx: @@ -16277,6 +18072,12 @@ move var@9 [Debug] Value to move: &mut@6 (2: u32) [Debug] +**About to evaluate statement**: [ + *((pp1).1) := 3: u32; + return +] + +**Context**: # 1 frame(s) # Frame 0: @@ -16294,10 +18095,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -16315,7 +18120,7 @@ return var@10 -> &mut@5 (⌊mut@6⌋) ; } -About to evaluate statement: *((pp1).1) := 3: u32 + [Debug] eval_operand: - ctx: @@ -16341,6 +18146,11 @@ About to evaluate statement: *((pp1).1) := 3: u32 3: u32 [Debug] +**About to evaluate statement**: [ + return +] + +**Context**: # 1 frame(s) # Frame 0: @@ -16358,10 +18168,16 @@ 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**: # 1 frame(s) # Frame 0: @@ -16369,10 +18185,14 @@ 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**: # 1 frame(s) # Frame 0: @@ -16380,7 +18200,7 @@ return var@0 -> ⊥ : char ; } -About to evaluate statement: var@0 := a + [Debug] eval_operand: - ctx: @@ -16396,6 +18216,11 @@ About to evaluate statement: var@0 := a a [Debug] +**About to evaluate statement**: [ + return +] + +**Context**: # 1 frame(s) # Frame 0: @@ -16403,5 +18228,16678 @@ 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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + var@3 -> ⊥ : u32 ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : (u32, bool) ; +} + + + +[Debug] +**About to evaluate statement**: [ + var@3 := copy x +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + var@3 -> ⊥ : u32 ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : (u32, bool) ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + var@3 -> ⊥ : u32 ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : (u32, bool) ; +} + + +- op: +copy x + +[Debug] Value to copy: +proj_comp {} (s@0 : u32) +[Debug] +**About to evaluate statement**: [ + var@4 := copy y; + var@0 := copy var@3 + copy var@4; + return +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + var@3 -> proj_comp {} (s@0 : u32) ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : (u32, bool) ; +} + + + +[Debug] +**About to evaluate statement**: [ + var@4 := copy y +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + var@3 -> proj_comp {} (s@0 : u32) ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : (u32, bool) ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + var@3 -> proj_comp {} (s@0 : u32) ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : (u32, bool) ; +} + + +- op: +copy y + +[Debug] Value to copy: +proj_comp {} (s@1 : u32) +[Debug] +**About to evaluate statement**: [ + var@0 := copy var@3 + copy var@4; + return +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + var@3 -> proj_comp {} (s@0 : u32) ; + var@4 -> proj_comp {} (s@1 : u32) ; + var@5 -> ⊥ : (u32, bool) ; +} + + + +[Debug] +**About to evaluate statement**: [ + var@0 := copy var@3 + copy var@4 +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + var@3 -> proj_comp {} (s@0 : u32) ; + var@4 -> proj_comp {} (s@1 : u32) ; + var@5 -> ⊥ : (u32, bool) ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + var@3 -> proj_comp {} (s@0 : u32) ; + var@4 -> proj_comp {} (s@1 : u32) ; + var@5 -> ⊥ : (u32, bool) ; +} + + +- op: +copy var@3 + +[Debug] Value to copy: +proj_comp {} (s@0 : u32) +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + var@3 -> proj_comp {} (s@0 : u32) ; + var@4 -> proj_comp {} (s@1 : u32) ; + var@5 -> ⊥ : (u32, bool) ; +} + + +- op: +copy var@4 + +[Debug] Value to copy: +proj_comp {} (s@1 : u32) +[Debug] +**About to evaluate statement**: [ + return +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> proj_comp {} (s@2 : u32) ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + var@3 -> proj_comp {} (s@0 : u32) ; + var@4 -> proj_comp {} (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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + var@3 -> ⊥ : u32 ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : (u32, bool) ; +} + + + +[Debug] +**About to evaluate statement**: [ + var@3 := copy x +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + var@3 -> ⊥ : u32 ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : (u32, bool) ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + var@3 -> ⊥ : u32 ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : (u32, bool) ; +} + + +- op: +copy x + +[Debug] Value to copy: +proj_comp {} (s@0 : u32) +[Debug] +**About to evaluate statement**: [ + var@4 := copy y; + var@0 := copy var@3 - copy var@4; + return +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + var@3 -> proj_comp {} (s@0 : u32) ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : (u32, bool) ; +} + + + +[Debug] +**About to evaluate statement**: [ + var@4 := copy y +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + var@3 -> proj_comp {} (s@0 : u32) ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : (u32, bool) ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + var@3 -> proj_comp {} (s@0 : u32) ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : (u32, bool) ; +} + + +- op: +copy y + +[Debug] Value to copy: +proj_comp {} (s@1 : u32) +[Debug] +**About to evaluate statement**: [ + var@0 := copy var@3 - copy var@4; + return +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + var@3 -> proj_comp {} (s@0 : u32) ; + var@4 -> proj_comp {} (s@1 : u32) ; + var@5 -> ⊥ : (u32, bool) ; +} + + + +[Debug] +**About to evaluate statement**: [ + var@0 := copy var@3 - copy var@4 +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + var@3 -> proj_comp {} (s@0 : u32) ; + var@4 -> proj_comp {} (s@1 : u32) ; + var@5 -> ⊥ : (u32, bool) ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + var@3 -> proj_comp {} (s@0 : u32) ; + var@4 -> proj_comp {} (s@1 : u32) ; + var@5 -> ⊥ : (u32, bool) ; +} + + +- op: +copy var@3 + +[Debug] Value to copy: +proj_comp {} (s@0 : u32) +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + var@3 -> proj_comp {} (s@0 : u32) ; + var@4 -> proj_comp {} (s@1 : u32) ; + var@5 -> ⊥ : (u32, bool) ; +} + + +- op: +copy var@4 + +[Debug] Value to copy: +proj_comp {} (s@1 : u32) +[Debug] +**About to evaluate statement**: [ + return +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> proj_comp {} (s@2 : u32) ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + var@3 -> proj_comp {} (s@0 : u32) ; + var@4 -> proj_comp {} (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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + var@3 -> ⊥ : u32 ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : bool ; +} + + + +[Debug] +**About to evaluate statement**: [ + var@3 := copy x +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + var@3 -> ⊥ : u32 ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : bool ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + var@3 -> ⊥ : u32 ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : bool ; +} + + +- op: +copy x + +[Debug] Value to copy: +proj_comp {} (s@0 : u32) +[Debug] +**About to evaluate statement**: [ + var@4 := copy y; + var@0 := move var@3 / move var@4; + return +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + var@3 -> proj_comp {} (s@0 : u32) ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : bool ; +} + + + +[Debug] +**About to evaluate statement**: [ + var@4 := copy y +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + var@3 -> proj_comp {} (s@0 : u32) ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : bool ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + var@3 -> proj_comp {} (s@0 : u32) ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : bool ; +} + + +- op: +copy y + +[Debug] Value to copy: +proj_comp {} (s@1 : u32) +[Debug] +**About to evaluate statement**: [ + var@0 := move var@3 / move var@4; + return +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + var@3 -> proj_comp {} (s@0 : u32) ; + var@4 -> proj_comp {} (s@1 : u32) ; + var@5 -> ⊥ : bool ; +} + + + +[Debug] +**About to evaluate statement**: [ + var@0 := move var@3 / move var@4 +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + var@3 -> proj_comp {} (s@0 : u32) ; + var@4 -> proj_comp {} (s@1 : u32) ; + var@5 -> ⊥ : bool ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + var@3 -> proj_comp {} (s@0 : u32) ; + var@4 -> proj_comp {} (s@1 : u32) ; + var@5 -> ⊥ : bool ; +} + + +- op: +move var@3 + +[Debug] Value to move: +proj_comp {} (s@0 : u32) +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + var@3 -> ⊥ : u32 ; + var@4 -> proj_comp {} (s@1 : u32) ; + var@5 -> ⊥ : bool ; +} + + +- op: +move var@4 + +[Debug] Value to move: +proj_comp {} (s@1 : u32) +[Debug] +**About to evaluate statement**: [ + return +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> proj_comp {} (s@2 : u32) ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + var@3 -> ⊥ : u32 ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : bool ; +} + + + +[Debug] +**About to evaluate statement**: [ + var@3 := copy x +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + var@3 -> ⊥ : u32 ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : bool ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + var@3 -> ⊥ : u32 ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : bool ; +} + + +- op: +copy x + +[Debug] Value to copy: +proj_comp {} (s@0 : u32) +[Debug] +**About to evaluate statement**: [ + var@4 := copy y; + var@0 := move var@3 % move var@4; + return +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + var@3 -> proj_comp {} (s@0 : u32) ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : bool ; +} + + + +[Debug] +**About to evaluate statement**: [ + var@4 := copy y +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + var@3 -> proj_comp {} (s@0 : u32) ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : bool ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + var@3 -> proj_comp {} (s@0 : u32) ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : bool ; +} + + +- op: +copy y + +[Debug] Value to copy: +proj_comp {} (s@1 : u32) +[Debug] +**About to evaluate statement**: [ + var@0 := move var@3 % move var@4; + return +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + var@3 -> proj_comp {} (s@0 : u32) ; + var@4 -> proj_comp {} (s@1 : u32) ; + var@5 -> ⊥ : bool ; +} + + + +[Debug] +**About to evaluate statement**: [ + var@0 := move var@3 % move var@4 +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + var@3 -> proj_comp {} (s@0 : u32) ; + var@4 -> proj_comp {} (s@1 : u32) ; + var@5 -> ⊥ : bool ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + var@3 -> proj_comp {} (s@0 : u32) ; + var@4 -> proj_comp {} (s@1 : u32) ; + var@5 -> ⊥ : bool ; +} + + +- op: +move var@3 + +[Debug] Value to move: +proj_comp {} (s@0 : u32) +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + var@3 -> ⊥ : u32 ; + var@4 -> proj_comp {} (s@1 : u32) ; + var@5 -> ⊥ : bool ; +} + + +- op: +move var@4 + +[Debug] Value to move: +proj_comp {} (s@1 : u32) +[Debug] +**About to evaluate statement**: [ + return +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> proj_comp {} (s@2 : u32) ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⊥ : u32 ; + y -> ⊥ : u32 ; + z -> ⊥ : u32 ; + p -> ⊥ : test1::Pair ; + var@5 -> ⊥ : u32 ; + s -> ⊥ : test1::Sum ; + o -> ⊥ : test1::One ; + e0 -> ⊥ : test1::EmptyEnum ; + e1 -> ⊥ : test1::EmptyEnum ; + enum0 -> ⊥ : test1::Enum ; +} + + + +[Debug] +**About to evaluate statement**: [ + x := 23: u32 +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⊥ : u32 ; + y -> ⊥ : u32 ; + z -> ⊥ : u32 ; + p -> ⊥ : test1::Pair ; + var@5 -> ⊥ : u32 ; + s -> ⊥ : test1::Sum ; + o -> ⊥ : test1::One ; + e0 -> ⊥ : test1::EmptyEnum ; + e1 -> ⊥ : test1::EmptyEnum ; + enum0 -> ⊥ : test1::Enum ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⊥ : u32 ; + y -> ⊥ : u32 ; + z -> ⊥ : u32 ; + p -> ⊥ : test1::Pair ; + var@5 -> ⊥ : u32 ; + s -> ⊥ : test1::Sum ; + o -> ⊥ : test1::One ; + 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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 23: u32 ; + y -> ⊥ : u32 ; + z -> ⊥ : u32 ; + p -> ⊥ : test1::Pair ; + var@5 -> ⊥ : u32 ; + s -> ⊥ : test1::Sum ; + o -> ⊥ : test1::One ; + e0 -> ⊥ : test1::EmptyEnum ; + e1 -> ⊥ : test1::EmptyEnum ; + enum0 -> ⊥ : test1::Enum ; +} + + + +[Debug] +**About to evaluate statement**: [ + y := 44: u32 +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 23: u32 ; + y -> ⊥ : u32 ; + z -> ⊥ : u32 ; + p -> ⊥ : test1::Pair ; + var@5 -> ⊥ : u32 ; + s -> ⊥ : test1::Sum ; + o -> ⊥ : test1::One ; + e0 -> ⊥ : test1::EmptyEnum ; + e1 -> ⊥ : test1::EmptyEnum ; + enum0 -> ⊥ : test1::Enum ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 23: u32 ; + y -> ⊥ : u32 ; + z -> ⊥ : u32 ; + p -> ⊥ : test1::Pair ; + var@5 -> ⊥ : u32 ; + s -> ⊥ : test1::Sum ; + o -> ⊥ : test1::One ; + 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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 23: u32 ; + y -> 44: u32 ; + z -> ⊥ : u32 ; + p -> ⊥ : test1::Pair ; + var@5 -> ⊥ : u32 ; + s -> ⊥ : test1::Sum ; + o -> ⊥ : test1::One ; + e0 -> ⊥ : test1::EmptyEnum ; + e1 -> ⊥ : test1::EmptyEnum ; + enum0 -> ⊥ : test1::Enum ; +} + + + +[Debug] +**About to evaluate statement**: [ + z := 67: u32 +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 23: u32 ; + y -> 44: u32 ; + z -> ⊥ : u32 ; + p -> ⊥ : test1::Pair ; + var@5 -> ⊥ : u32 ; + s -> ⊥ : test1::Sum ; + o -> ⊥ : test1::One ; + e0 -> ⊥ : test1::EmptyEnum ; + e1 -> ⊥ : test1::EmptyEnum ; + enum0 -> ⊥ : test1::Enum ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 23: u32 ; + y -> 44: u32 ; + z -> ⊥ : u32 ; + p -> ⊥ : test1::Pair ; + var@5 -> ⊥ : u32 ; + s -> ⊥ : test1::Sum ; + o -> ⊥ : test1::One ; + 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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 23: u32 ; + y -> 44: u32 ; + z -> 67: u32 ; + p -> ⊥ : test1::Pair ; + var@5 -> ⊥ : u32 ; + s -> ⊥ : test1::Sum ; + o -> ⊥ : test1::One ; + e0 -> ⊥ : test1::EmptyEnum ; + e1 -> ⊥ : test1::EmptyEnum ; + enum0 -> ⊥ : test1::Enum ; +} + + + +[Debug] +**About to evaluate statement**: [ + var@5 := copy x +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 23: u32 ; + y -> 44: u32 ; + z -> 67: u32 ; + p -> ⊥ : test1::Pair ; + var@5 -> ⊥ : u32 ; + s -> ⊥ : test1::Sum ; + o -> ⊥ : test1::One ; + e0 -> ⊥ : test1::EmptyEnum ; + e1 -> ⊥ : test1::EmptyEnum ; + enum0 -> ⊥ : test1::Enum ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 23: u32 ; + y -> 44: u32 ; + z -> 67: u32 ; + p -> ⊥ : test1::Pair ; + var@5 -> ⊥ : u32 ; + s -> ⊥ : test1::Sum ; + o -> ⊥ : test1::One ; + 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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 23: u32 ; + y -> 44: u32 ; + z -> 67: u32 ; + p -> ⊥ : test1::Pair ; + var@5 -> 23: u32 ; + s -> ⊥ : test1::Sum ; + o -> ⊥ : test1::One ; + e0 -> ⊥ : test1::EmptyEnum ; + e1 -> ⊥ : test1::EmptyEnum ; + enum0 -> ⊥ : test1::Enum ; +} + + + +[Debug] +**About to evaluate statement**: [ + (p).x := move var@5 +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 23: u32 ; + y -> 44: u32 ; + z -> 67: u32 ; + p -> ⊥ : test1::Pair ; + var@5 -> 23: u32 ; + s -> ⊥ : test1::Sum ; + o -> ⊥ : test1::One ; + e0 -> ⊥ : test1::EmptyEnum ; + e1 -> ⊥ : test1::EmptyEnum ; + enum0 -> ⊥ : test1::Enum ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 23: u32 ; + y -> 44: u32 ; + z -> 67: u32 ; + p -> ⊥ : test1::Pair ; + var@5 -> 23: u32 ; + s -> ⊥ : test1::Sum ; + o -> ⊥ : test1::One ; + 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**: +# 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 ; + o -> ⊥ : test1::One ; + e0 -> ⊥ : test1::EmptyEnum ; + e1 -> ⊥ : test1::EmptyEnum ; + enum0 -> ⊥ : test1::Enum ; +} + + + +[Debug] +**About to evaluate statement**: [ + (p).y := 67: u32 +] + +**Context**: +# 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 ; + o -> ⊥ : test1::One ; + e0 -> ⊥ : test1::EmptyEnum ; + e1 -> ⊥ : test1::EmptyEnum ; + enum0 -> ⊥ : test1::Enum ; +} + + + +[Debug] eval_operand: +- ctx: +# 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 ; + o -> ⊥ : test1::One ; + 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**: +# 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 ; + o -> ⊥ : test1::One ; + e0 -> ⊥ : test1::EmptyEnum ; + e1 -> ⊥ : test1::EmptyEnum ; + enum0 -> ⊥ : test1::Enum ; +} + + + +[Debug] +**About to evaluate statement**: [ + (s as test1::Sum::Right).0 := true +] + +**Context**: +# 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 ; + o -> ⊥ : test1::One ; + e0 -> ⊥ : test1::EmptyEnum ; + e1 -> ⊥ : test1::EmptyEnum ; + enum0 -> ⊥ : test1::Enum ; +} + + + +[Debug] eval_operand: +- ctx: +# 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 ; + o -> ⊥ : test1::One ; + 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**: +# 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 ; + e0 -> ⊥ : test1::EmptyEnum ; + e1 -> ⊥ : test1::EmptyEnum ; + enum0 -> ⊥ : test1::Enum ; +} + + + +[Debug] +**About to evaluate statement**: [ + set_discriminant(s, 1) +] + +**Context**: +# 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 ; + 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**: +# 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 ; + e0 -> ⊥ : test1::EmptyEnum ; + e1 -> ⊥ : test1::EmptyEnum ; + enum0 -> ⊥ : test1::Enum ; +} + + + +[Debug] +**About to evaluate statement**: [ + (o as test1::One::One).0 := 3: u64 +] + +**Context**: +# 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 ; + e0 -> ⊥ : test1::EmptyEnum ; + e1 -> ⊥ : test1::EmptyEnum ; + enum0 -> ⊥ : test1::Enum ; +} + + + +[Debug] eval_operand: +- ctx: +# 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 ; + 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**: +# 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**: +# 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**: +# 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**: +# 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**: +# 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**: +# 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**: +# 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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + var@3 -> ⊥ : bool ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : u32 ; +} + + + +[Debug] +**About to evaluate statement**: [ + var@4 := copy x +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + var@3 -> ⊥ : bool ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : u32 ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + var@3 -> ⊥ : bool ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : u32 ; +} + + +- op: +copy x + +[Debug] Value to copy: +proj_comp {} (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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + var@3 -> ⊥ : bool ; + var@4 -> proj_comp {} (s@0 : u32) ; + var@5 -> ⊥ : u32 ; +} + + + +[Debug] +**About to evaluate statement**: [ + var@5 := copy y +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + var@3 -> ⊥ : bool ; + var@4 -> proj_comp {} (s@0 : u32) ; + var@5 -> ⊥ : u32 ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + var@3 -> ⊥ : bool ; + var@4 -> proj_comp {} (s@0 : u32) ; + var@5 -> ⊥ : u32 ; +} + + +- op: +copy y + +[Debug] Value to copy: +proj_comp {} (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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + var@3 -> ⊥ : bool ; + var@4 -> proj_comp {} (s@0 : u32) ; + var@5 -> proj_comp {} (s@1 : u32) ; +} + + + +[Debug] +**About to evaluate statement**: [ + var@3 := move var@4 >= move var@5 +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + var@3 -> ⊥ : bool ; + var@4 -> proj_comp {} (s@0 : u32) ; + var@5 -> proj_comp {} (s@1 : u32) ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + var@3 -> ⊥ : bool ; + var@4 -> proj_comp {} (s@0 : u32) ; + var@5 -> proj_comp {} (s@1 : u32) ; +} + + +- op: +move var@4 + +[Debug] Value to move: +proj_comp {} (s@0 : u32) +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + var@3 -> ⊥ : bool ; + var@4 -> ⊥ : u32 ; + var@5 -> proj_comp {} (s@1 : u32) ; +} + + +- op: +move var@5 + +[Debug] Value to move: +proj_comp {} (s@1 : u32) +[Debug] +**About to evaluate statement**: [ + if (move var@3) { + var@0 := copy x + } + else { + var@0 := copy y + }; + return +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + var@3 -> proj_comp {} (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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + var@3 -> proj_comp {} (s@2 : bool) ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : u32 ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + var@3 -> ⊥ : bool ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : u32 ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + var@3 -> ⊥ : bool ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : u32 ; +} + + +- op: +copy x + +[Debug] Value to copy: +proj_comp {} (s@0 : u32) +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + var@3 -> ⊥ : bool ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : u32 ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : u32 ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + var@3 -> ⊥ : bool ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : u32 ; +} + + +- op: +copy y + +[Debug] Value to copy: +proj_comp {} (s@1 : u32) +[Debug] +**About to evaluate statement**: [ + return +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> proj_comp {} (s@0 : u32) ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + var@3 -> ⊥ : bool ; + var@4 -> ⊥ : u32 ; + var@5 -> ⊥ : u32 ; +} + + + +[Debug] +**About to evaluate statement**: [ + return +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> proj_comp {} (s@1 : u32) ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (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**: +# 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**: +# 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: +# 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: +# 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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> proj_comp {} (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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> proj_comp {} (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: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> proj_comp {} (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: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> proj_comp {} (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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (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: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (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: +proj_comp {} (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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + z -> ⊥ : u32 ; + var@4 -> proj_comp {} (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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + z -> ⊥ : u32 ; + var@4 -> proj_comp {} (s@0 : u32) ; + var@5 -> ⊥ : u32 ; + var@6 -> ⊥ : (u32, bool) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : u32 ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + z -> ⊥ : u32 ; + var@4 -> proj_comp {} (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: +proj_comp {} (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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + z -> ⊥ : u32 ; + var@4 -> proj_comp {} (s@0 : u32) ; + var@5 -> proj_comp {} (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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + z -> ⊥ : u32 ; + var@4 -> proj_comp {} (s@0 : u32) ; + var@5 -> proj_comp {} (s@1 : u32) ; + var@6 -> ⊥ : (u32, bool) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : u32 ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + z -> ⊥ : u32 ; + var@4 -> proj_comp {} (s@0 : u32) ; + var@5 -> proj_comp {} (s@1 : u32) ; + var@6 -> ⊥ : (u32, bool) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : u32 ; +} + + +- op: +copy var@4 + +[Debug] Value to copy: +proj_comp {} (s@0 : u32) +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + z -> ⊥ : u32 ; + var@4 -> proj_comp {} (s@0 : u32) ; + var@5 -> proj_comp {} (s@1 : u32) ; + var@6 -> ⊥ : (u32, bool) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : u32 ; +} + + +- op: +copy var@5 + +[Debug] Value to copy: +proj_comp {} (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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + z -> proj_comp {} (s@2 : u32) ; + var@4 -> proj_comp {} (s@0 : u32) ; + var@5 -> proj_comp {} (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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + z -> proj_comp {} (s@2 : u32) ; + var@4 -> proj_comp {} (s@0 : u32) ; + var@5 -> proj_comp {} (s@1 : u32) ; + var@6 -> ⊥ : (u32, bool) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : u32 ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + z -> proj_comp {} (s@2 : u32) ; + var@4 -> proj_comp {} (s@0 : u32) ; + var@5 -> proj_comp {} (s@1 : u32) ; + var@6 -> ⊥ : (u32, bool) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : u32 ; +} + + +- op: +copy z + +[Debug] Value to copy: +proj_comp {} (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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + z -> proj_comp {} (s@2 : u32) ; + var@4 -> proj_comp {} (s@0 : u32) ; + var@5 -> proj_comp {} (s@1 : u32) ; + var@6 -> ⊥ : (u32, bool) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> proj_comp {} (s@2 : u32) ; +} + + + +[Debug] +**About to evaluate statement**: [ + var@8 := move var@9 == 15: u32 +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + z -> proj_comp {} (s@2 : u32) ; + var@4 -> proj_comp {} (s@0 : u32) ; + var@5 -> proj_comp {} (s@1 : u32) ; + var@6 -> ⊥ : (u32, bool) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> proj_comp {} (s@2 : u32) ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + z -> proj_comp {} (s@2 : u32) ; + var@4 -> proj_comp {} (s@0 : u32) ; + var@5 -> proj_comp {} (s@1 : u32) ; + var@6 -> ⊥ : (u32, bool) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> proj_comp {} (s@2 : u32) ; +} + + +- op: +move var@9 + +[Debug] Value to move: +proj_comp {} (s@2 : u32) +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + z -> proj_comp {} (s@2 : u32) ; + var@4 -> proj_comp {} (s@0 : u32) ; + var@5 -> proj_comp {} (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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + z -> proj_comp {} (s@2 : u32) ; + var@4 -> proj_comp {} (s@0 : u32) ; + var@5 -> proj_comp {} (s@1 : u32) ; + var@6 -> ⊥ : (u32, bool) ; + var@7 -> ⊥ : bool ; + var@8 -> proj_comp {} (s@3 : bool) ; + var@9 -> ⊥ : u32 ; +} + + + +[Debug] +**About to evaluate statement**: [ + var@7 := ¬ move var@8 +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + z -> proj_comp {} (s@2 : u32) ; + var@4 -> proj_comp {} (s@0 : u32) ; + var@5 -> proj_comp {} (s@1 : u32) ; + var@6 -> ⊥ : (u32, bool) ; + var@7 -> ⊥ : bool ; + var@8 -> proj_comp {} (s@3 : bool) ; + var@9 -> ⊥ : u32 ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + z -> proj_comp {} (s@2 : u32) ; + var@4 -> proj_comp {} (s@0 : u32) ; + var@5 -> proj_comp {} (s@1 : u32) ; + var@6 -> ⊥ : (u32, bool) ; + var@7 -> ⊥ : bool ; + var@8 -> proj_comp {} (s@3 : bool) ; + var@9 -> ⊥ : u32 ; +} + + +- op: +move var@8 + +[Debug] Value to move: +proj_comp {} (s@3 : bool) +[Debug] +**About to evaluate statement**: [ + assert(¬move var@7); + return +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + z -> proj_comp {} (s@2 : u32) ; + var@4 -> proj_comp {} (s@0 : u32) ; + var@5 -> proj_comp {} (s@1 : u32) ; + var@6 -> ⊥ : (u32, bool) ; + var@7 -> proj_comp {} (s@4 : bool) ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : u32 ; +} + + + +[Debug] +**About to evaluate statement**: [ + assert(¬move var@7) +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + z -> proj_comp {} (s@2 : u32) ; + var@4 -> proj_comp {} (s@0 : u32) ; + var@5 -> proj_comp {} (s@1 : u32) ; + var@6 -> ⊥ : (u32, bool) ; + var@7 -> proj_comp {} (s@4 : bool) ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : u32 ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + z -> proj_comp {} (s@2 : u32) ; + var@4 -> proj_comp {} (s@0 : u32) ; + var@5 -> proj_comp {} (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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> proj_comp {} (s@0 : u32) ; + y -> proj_comp {} (s@1 : u32) ; + z -> proj_comp {} (s@2 : u32) ; + var@4 -> proj_comp {} (s@0 : u32) ; + var@5 -> proj_comp {} (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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : i32 ; + x -> proj_comp {} (s@0 : i32) ; + var@2 -> ⊥ : i32 ; + var@3 -> ⊥ : bool ; +} + + + +[Debug] +**About to evaluate statement**: [ + var@2 := copy x +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : i32 ; + x -> proj_comp {} (s@0 : i32) ; + var@2 -> ⊥ : i32 ; + var@3 -> ⊥ : bool ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : i32 ; + x -> proj_comp {} (s@0 : i32) ; + var@2 -> ⊥ : i32 ; + var@3 -> ⊥ : bool ; +} + + +- op: +copy x + +[Debug] Value to copy: +proj_comp {} (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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : i32 ; + x -> proj_comp {} (s@0 : i32) ; + var@2 -> proj_comp {} (s@0 : i32) ; + var@3 -> ⊥ : bool ; +} + + + +[Debug] +**About to evaluate statement**: [ + var@3 := copy var@2 == -2147483648: i32 +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : i32 ; + x -> proj_comp {} (s@0 : i32) ; + var@2 -> proj_comp {} (s@0 : i32) ; + var@3 -> ⊥ : bool ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : i32 ; + x -> proj_comp {} (s@0 : i32) ; + var@2 -> proj_comp {} (s@0 : i32) ; + var@3 -> ⊥ : bool ; +} + + +- op: +copy var@2 + +[Debug] Value to copy: +proj_comp {} (s@0 : i32) +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : i32 ; + x -> proj_comp {} (s@0 : i32) ; + var@2 -> proj_comp {} (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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : i32 ; + x -> proj_comp {} (s@0 : i32) ; + var@2 -> proj_comp {} (s@0 : i32) ; + var@3 -> proj_comp {} (s@1 : bool) ; +} + + + +[Debug] +**About to evaluate statement**: [ + assert(¬move var@3) +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : i32 ; + x -> proj_comp {} (s@0 : i32) ; + var@2 -> proj_comp {} (s@0 : i32) ; + var@3 -> proj_comp {} (s@1 : bool) ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : i32 ; + x -> proj_comp {} (s@0 : i32) ; + var@2 -> proj_comp {} (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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : i32 ; + x -> proj_comp {} (s@0 : i32) ; + var@2 -> proj_comp {} (s@0 : i32) ; + var@3 -> ⊥ : bool ; +} + + + +[Debug] +**About to evaluate statement**: [ + var@0 := - move var@2 +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : i32 ; + x -> proj_comp {} (s@0 : i32) ; + var@2 -> proj_comp {} (s@0 : i32) ; + var@3 -> ⊥ : bool ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : i32 ; + x -> proj_comp {} (s@0 : i32) ; + var@2 -> proj_comp {} (s@0 : i32) ; + var@3 -> ⊥ : bool ; +} + + +- op: +move var@2 + +[Debug] Value to move: +proj_comp {} (s@0 : i32) +[Debug] +**About to evaluate statement**: [ + return +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> proj_comp {} (s@2 : i32) ; + x -> proj_comp {} (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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⊥ : i32 ; + y -> ⊥ : i32 ; +} + + + +[Debug] +**About to evaluate statement**: [ + x := 3: i32 +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⊥ : i32 ; + y -> ⊥ : i32 ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⊥ : i32 ; + y -> ⊥ : i32 ; +} + + +- op: +3: i32 + +[Debug] +**About to evaluate statement**: [ + y := -3: i32; + return +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 3: i32 ; + y -> ⊥ : i32 ; +} + + + +[Debug] +**About to evaluate statement**: [ + y := -3: i32 +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 3: i32 ; + y -> ⊥ : i32 ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 3: i32 ; + y -> ⊥ : i32 ; +} + + +- op: +-3: i32 + +[Debug] +**About to evaluate statement**: [ + return +] + +**Context**: +# 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**: +# 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**: +# 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: +# 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**: +# 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**: +# 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**: +# 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**: +# 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**: +# 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**: +# 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: +# 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**: +# 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**: +# 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: +# 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**: +# 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**: +# 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: +# 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: +# 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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 1: i32 ; + px -> ⊥ : &'_ mut (i32) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@4 -> ⊥ : bool ; + var@5 -> proj_comp {} (s@0 : bool) ; + var@6 -> ⊥ : i32 ; +} + + + +[Debug] +**About to evaluate statement**: [ + var@4 := ¬ move var@5 +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 1: i32 ; + px -> ⊥ : &'_ mut (i32) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@4 -> ⊥ : bool ; + var@5 -> proj_comp {} (s@0 : bool) ; + var@6 -> ⊥ : i32 ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 1: i32 ; + px -> ⊥ : &'_ mut (i32) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@4 -> ⊥ : bool ; + var@5 -> proj_comp {} (s@0 : bool) ; + var@6 -> ⊥ : i32 ; +} + + +- op: +move var@5 + +[Debug] Value to move: +proj_comp {} (s@0 : bool) +[Debug] +**About to evaluate statement**: [ + assert(¬move var@4); + return +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 1: i32 ; + px -> ⊥ : &'_ mut (i32) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@4 -> proj_comp {} (s@1 : bool) ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : i32 ; +} + + + +[Debug] +**About to evaluate statement**: [ + assert(¬move var@4) +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> 1: i32 ; + px -> ⊥ : &'_ mut (i32) ; + ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ; + var@4 -> proj_comp {} (s@1 : bool) ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : i32 ; +} + + + +[Debug] eval_operand: +- ctx: +# 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**: +# 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**: +# 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**: +# 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: +# 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**: +# 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**: +# 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: +# 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**: +# 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**: +# 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**: +# 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**: +# 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**: +# 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**: +# 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**: +# 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**: +# 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**: +# 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**: +# 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: +# 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**: +# 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**: +# 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: +# 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**: +# 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**: +# 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: +# 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**: +# 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**: +# 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: +# 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: +# 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**: +# 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 -> proj_comp {} (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**: +# 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 -> proj_comp {} (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: +# 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 -> proj_comp {} (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: +proj_comp {} (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**: +# 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 -> proj_comp {} (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**: +# 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 -> proj_comp {} (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: +# 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**: +# 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**: +# 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: +# 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**: +# 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**: +# 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: +# 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: +# 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**: +# 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 -> proj_comp {} (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**: +# 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 -> proj_comp {} (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: +# 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 -> proj_comp {} (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: +proj_comp {} (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**: +# 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 -> proj_comp {} (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**: +# 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 -> proj_comp {} (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: +# 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**: +# 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**: +# 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: +# 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**: +# 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**: +# 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: +# 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: +# 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**: +# 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 -> proj_comp {} (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**: +# 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 -> proj_comp {} (s@4 : bool) ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[Debug] eval_operand: +- ctx: +# 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 -> proj_comp {} (s@4 : bool) ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + +- op: +move var@14 + +[Debug] Value to move: +proj_comp {} (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**: +# 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 -> proj_comp {} (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**: +# 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 -> proj_comp {} (s@5 : bool) ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[Debug] eval_operand: +- ctx: +# 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**: +# 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**: +# 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: +# 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**: +# 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**: +# 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: +# 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: +# 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**: +# 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 -> proj_comp {} (s@6 : bool) ; + var@18 -> ⊥ : i32 ; +} + + + +[Debug] +**About to evaluate statement**: [ + var@16 := ¬ move var@17 +] + +**Context**: +# 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 -> proj_comp {} (s@6 : bool) ; + var@18 -> ⊥ : i32 ; +} + + + +[Debug] eval_operand: +- ctx: +# 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 -> proj_comp {} (s@6 : bool) ; + var@18 -> ⊥ : i32 ; +} + + +- op: +move var@17 + +[Debug] Value to move: +proj_comp {} (s@6 : bool) +[Debug] +**About to evaluate statement**: [ + assert(¬move var@16); + return +] + +**Context**: +# 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 -> proj_comp {} (s@7 : bool) ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[Debug] +**About to evaluate statement**: [ + assert(¬move var@16) +] + +**Context**: +# 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 -> proj_comp {} (s@7 : bool) ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[Debug] eval_operand: +- ctx: +# 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**: +# 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>::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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List ; + var@2 -> ⊥ : std::boxed::Box> ; + var@3 -> ⊥ : test1::List ; +} + + + +[Debug] +**About to evaluate statement**: [ + set_discriminant(var@3, 1) +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List ; + var@2 -> ⊥ : std::boxed::Box> ; + var@3 -> ⊥ : test1::List ; +} + + + +[Debug] +**About to evaluate statement**: [ + var@2 := move alloc::boxed::Box>::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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List ; + var@2 -> ⊥ : std::boxed::Box> ; + var@3 -> test1::List::Nil ; +} + + + +[Debug] +**About to evaluate statement**: [ + var@2 := move alloc::boxed::Box>::new(move var@3) +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List ; + var@2 -> ⊥ : std::boxed::Box> ; + var@3 -> test1::List::Nil ; +} + + + +[Debug] eval_non_local_function_call: +- fid:CfimAst.BoxNew +- type_params: [test1::List] +- args: [move var@3] +- dest: var@2 +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List ; + var@2 -> ⊥ : std::boxed::Box> ; + 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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List ; + var@2 -> proj_comp {} (s@0 : std::boxed::Box>) ; + var@3 -> ⊥ : test1::List ; +} + + + +[Debug] +**About to evaluate statement**: [ + (l as test1::List::Cons).0 := 0: i32 +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List ; + var@2 -> proj_comp {} (s@0 : std::boxed::Box>) ; + var@3 -> ⊥ : test1::List ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List ; + var@2 -> proj_comp {} (s@0 : std::boxed::Box>) ; + var@3 -> ⊥ : test1::List ; +} + + +- 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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> test1::List::Cons { 0 = 0: i32; 1 = ⊥ : std::boxed::Box>; } ; + var@2 -> proj_comp {} (s@0 : std::boxed::Box>) ; + var@3 -> ⊥ : test1::List ; +} + + + +[Debug] +**About to evaluate statement**: [ + (l as test1::List::Cons).1 := move var@2 +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> test1::List::Cons { 0 = 0: i32; 1 = ⊥ : std::boxed::Box>; } ; + var@2 -> proj_comp {} (s@0 : std::boxed::Box>) ; + var@3 -> ⊥ : test1::List ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> test1::List::Cons { 0 = 0: i32; 1 = ⊥ : std::boxed::Box>; } ; + var@2 -> proj_comp {} (s@0 : std::boxed::Box>) ; + var@3 -> ⊥ : test1::List ; +} + + +- op: +move var@2 + +[Debug] Value to move: +proj_comp {} (s@0 : std::boxed::Box>) +[Debug] +**About to evaluate statement**: [ + set_discriminant(l, 0); + drop(l); + return +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> test1::List::Cons { 0 = 0: i32; 1 = proj_comp {} (s@0 : std::boxed::Box>); } ; + var@2 -> ⊥ : std::boxed::Box> ; + var@3 -> ⊥ : test1::List ; +} + + + +[Debug] +**About to evaluate statement**: [ + set_discriminant(l, 0) +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> test1::List::Cons { 0 = 0: i32; 1 = proj_comp {} (s@0 : std::boxed::Box>); } ; + var@2 -> ⊥ : std::boxed::Box> ; + var@3 -> ⊥ : test1::List ; +} + + + +[Debug] +**About to evaluate statement**: [ + drop(l); + return +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> test1::List::Cons { 0 = 0: i32; 1 = proj_comp {} (s@0 : std::boxed::Box>); } ; + var@2 -> ⊥ : std::boxed::Box> ; + var@3 -> ⊥ : test1::List ; +} + + + +[Debug] +**About to evaluate statement**: [ + drop(l) +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> test1::List::Cons { 0 = 0: i32; 1 = proj_comp {} (s@0 : std::boxed::Box>); } ; + var@2 -> ⊥ : std::boxed::Box> ; + var@3 -> ⊥ : test1::List ; +} + + + +[Debug] drop_value: place: l +[Debug] +**About to evaluate statement**: [ + return +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List ; + var@2 -> ⊥ : std::boxed::Box> ; + var@3 -> ⊥ : test1::List ; +} + + + +[Debug] test_function_symbolic: test_box1 +[Debug] +**About to evaluate statement**: [ + b := move alloc::boxed::Box::new(0: i32); + var@3 := &two-phase b; + x := move core::ops::deref::DerefMut::deref_mut(move var@3); + *(x) := 1: i32; + var@5 := &b; + x := move core::ops::deref::Deref>::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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + b -> ⊥ : std::boxed::Box ; + x -> ⊥ : &'_ mut (i32) ; + var@3 -> ⊥ : &'_ mut (std::boxed::Box) ; + x -> ⊥ : &'_ (i32) ; + var@5 -> ⊥ : &'_ (std::boxed::Box) ; + var@6 -> ⊥ : bool ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : i32 ; +} + + + +[Debug] +**About to evaluate statement**: [ + b := move alloc::boxed::Box::new(0: i32) +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + b -> ⊥ : std::boxed::Box ; + x -> ⊥ : &'_ mut (i32) ; + var@3 -> ⊥ : &'_ mut (std::boxed::Box) ; + x -> ⊥ : &'_ (i32) ; + var@5 -> ⊥ : &'_ (std::boxed::Box) ; + 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: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + b -> ⊥ : std::boxed::Box ; + x -> ⊥ : &'_ mut (i32) ; + var@3 -> ⊥ : &'_ mut (std::boxed::Box) ; + x -> ⊥ : &'_ (i32) ; + var@5 -> ⊥ : &'_ (std::boxed::Box) ; + 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::deref_mut(move var@3); + *(x) := 1: i32; + var@5 := &b; + x := move core::ops::deref::Deref>::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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + b -> proj_comp {} (s@0 : std::boxed::Box) ; + x -> ⊥ : &'_ mut (i32) ; + var@3 -> ⊥ : &'_ mut (std::boxed::Box) ; + x -> ⊥ : &'_ (i32) ; + var@5 -> ⊥ : &'_ (std::boxed::Box) ; + var@6 -> ⊥ : bool ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : i32 ; +} + + + +[Debug] +**About to evaluate statement**: [ + var@3 := &two-phase b +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + b -> proj_comp {} (s@0 : std::boxed::Box) ; + x -> ⊥ : &'_ mut (i32) ; + var@3 -> ⊥ : &'_ mut (std::boxed::Box) ; + x -> ⊥ : &'_ (i32) ; + var@5 -> ⊥ : &'_ (std::boxed::Box) ; + var@6 -> ⊥ : bool ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : i32 ; +} + + + +[Debug] +**About to evaluate statement**: [ + x := move core::ops::deref::DerefMut::deref_mut(move var@3); + *(x) := 1: i32; + var@5 := &b; + x := move core::ops::deref::Deref>::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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + b -> @shared_loan({0}, proj_comp {} (s@0 : std::boxed::Box)) ; + x -> ⊥ : &'_ mut (i32) ; + var@3 -> ⌊inactivated_mut@0⌋ ; + x -> ⊥ : &'_ (i32) ; + var@5 -> ⊥ : &'_ (std::boxed::Box) ; + var@6 -> ⊥ : bool ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : i32 ; +} + + + +[Debug] +**About to evaluate statement**: [ + x := move core::ops::deref::DerefMut::deref_mut(move var@3) +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + b -> @shared_loan({0}, proj_comp {} (s@0 : std::boxed::Box)) ; + x -> ⊥ : &'_ mut (i32) ; + var@3 -> ⌊inactivated_mut@0⌋ ; + x -> ⊥ : &'_ (i32) ; + var@5 -> ⊥ : &'_ (std::boxed::Box) ; + 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: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + b -> @shared_loan({0}, proj_comp {} (s@0 : std::boxed::Box)) ; + x -> ⊥ : &'_ mut (i32) ; + var@3 -> ⌊inactivated_mut@0⌋ ; + x -> ⊥ : &'_ (i32) ; + var@5 -> ⊥ : &'_ (std::boxed::Box) ; + 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.svalue = + { Values.sv_id = 0; + sv_ty = + (Types.Adt ((Types.Assumed Types.Box), [], + [(Types.Integer Types.I32)])) + }; + rset_ended = {} }); + ty = + (Types.Adt ((Types.Assumed Types.Box), [], [(Types.Integer Types.I32)])) } +[Debug] Value to move: +&mut@0 (proj_comp {} (s@0 : std::boxed::Box)) +[Debug] +**About to evaluate statement**: [ + *(x) := 1: i32; + var@5 := &b; + x := move core::ops::deref::Deref>::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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + b -> ⌊mut@0⌋ ; + x -> proj_comp {} (s@1 : &r@0 mut (i32)) ; + var@3 -> ⊥ : &'_ mut (std::boxed::Box) ; + x -> ⊥ : &'_ (i32) ; + var@5 -> ⊥ : &'_ (std::boxed::Box) ; + var@6 -> ⊥ : bool ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : i32 ; + abs@0{parents={}}{regions={0}} { + &mut@0 (proj_borrows (s@0 : std::boxed::Box <: std::boxed::Box)), + proj_loans (s@1 : &r@0 mut (i32)) + } +} + + + +[Debug] +**About to evaluate statement**: [ + *(x) := 1: i32 +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + b -> ⌊mut@0⌋ ; + x -> proj_comp {} (s@1 : &r@0 mut (i32)) ; + var@3 -> ⊥ : &'_ mut (std::boxed::Box) ; + x -> ⊥ : &'_ (i32) ; + var@5 -> ⊥ : &'_ (std::boxed::Box) ; + var@6 -> ⊥ : bool ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : i32 ; + abs@0{parents={}}{regions={0}} { + &mut@0 (proj_borrows (s@0 : std::boxed::Box <: std::boxed::Box)), + proj_loans (s@1 : &r@0 mut (i32)) + } +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + b -> ⌊mut@0⌋ ; + x -> proj_comp {} (s@1 : &r@0 mut (i32)) ; + var@3 -> ⊥ : &'_ mut (std::boxed::Box) ; + x -> ⊥ : &'_ (i32) ; + var@5 -> ⊥ : &'_ (std::boxed::Box) ; + var@6 -> ⊥ : bool ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : i32 ; + abs@0{parents={}}{regions={0}} { + &mut@0 (proj_borrows (s@0 : std::boxed::Box <: std::boxed::Box)), + 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>::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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + b -> ⌊mut@0⌋ ; + x -> &mut@1 (1: i32) ; + var@3 -> ⊥ : &'_ mut (std::boxed::Box) ; + x -> ⊥ : &'_ (i32) ; + var@5 -> ⊥ : &'_ (std::boxed::Box) ; + var@6 -> ⊥ : bool ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : i32 ; + abs@0{parents={}}{regions={0}} { + &mut@0 (proj_borrows (s@0 : std::boxed::Box <: std::boxed::Box)), + ⌊mut@1, proj_loans (s@2 : i32)⌋ + } +} + + + +[Debug] +**About to evaluate statement**: [ + var@5 := &b +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + b -> ⌊mut@0⌋ ; + x -> &mut@1 (1: i32) ; + var@3 -> ⊥ : &'_ mut (std::boxed::Box) ; + x -> ⊥ : &'_ (i32) ; + var@5 -> ⊥ : &'_ (std::boxed::Box) ; + var@6 -> ⊥ : bool ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : i32 ; + abs@0{parents={}}{regions={0}} { + &mut@0 (proj_borrows (s@0 : std::boxed::Box <: std::boxed::Box)), + ⌊mut@1, proj_loans (s@2 : i32)⌋ + } +} + + + +[Debug] +**About to evaluate statement**: [ + x := move core::ops::deref::Deref>::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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + b -> @shared_loan({2}, proj_comp {0} (s@3 : std::boxed::Box)) ; + x -> ⊥ : &'_ mut (i32) ; + var@3 -> ⊥ : &'_ mut (std::boxed::Box) ; + 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>::deref(move var@5) +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + b -> @shared_loan({2}, proj_comp {0} (s@3 : std::boxed::Box)) ; + x -> ⊥ : &'_ mut (i32) ; + var@3 -> ⊥ : &'_ mut (std::boxed::Box) ; + 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: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + b -> @shared_loan({2}, proj_comp {0} (s@3 : std::boxed::Box)) ; + x -> ⊥ : &'_ mut (i32) ; + var@3 -> ⊥ : &'_ mut (std::boxed::Box) ; + 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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + b -> @shared_loan({2}, proj_comp {0} (s@3 : std::boxed::Box)) ; + x -> ⊥ : &'_ mut (i32) ; + var@3 -> ⊥ : &'_ mut (std::boxed::Box) ; + x -> proj_comp {} (s@4 : &r@1 (i32)) ; + var@5 -> ⊥ : &'_ (std::boxed::Box) ; + 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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + b -> @shared_loan({2}, proj_comp {0} (s@3 : std::boxed::Box)) ; + x -> ⊥ : &'_ mut (i32) ; + var@3 -> ⊥ : &'_ mut (std::boxed::Box) ; + x -> proj_comp {} (s@4 : &r@1 (i32)) ; + var@5 -> ⊥ : &'_ (std::boxed::Box) ; + 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: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + b -> @shared_loan({2}, proj_comp {0} (s@3 : std::boxed::Box)) ; + x -> ⊥ : &'_ mut (i32) ; + var@3 -> ⊥ : &'_ mut (std::boxed::Box) ; + x -> proj_comp {} (s@4 : &r@1 (i32)) ; + var@5 -> ⊥ : &'_ (std::boxed::Box) ; + 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: +proj_comp {} (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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + b -> @shared_loan({2}, proj_comp {0} (s@3 : std::boxed::Box)) ; + x -> ⊥ : &'_ mut (i32) ; + var@3 -> ⊥ : &'_ mut (std::boxed::Box) ; + x -> ⌊shared@3⌋ ; + var@5 -> ⊥ : &'_ (std::boxed::Box) ; + var@6 -> ⊥ : bool ; + var@7 -> ⊥ : bool ; + var@8 -> proj_comp {} (s@5 : i32) ; + abs@1{parents={}}{regions={1}} { + ⌊shared@2⌋, + @shared_loan({3}, proj_comp {} (s@5 : i32), proj_loans (s@5 : i32)) + } +} + + + +[Debug] +**About to evaluate statement**: [ + var@7 := move var@8 == 1: i32 +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + b -> @shared_loan({2}, proj_comp {0} (s@3 : std::boxed::Box)) ; + x -> ⊥ : &'_ mut (i32) ; + var@3 -> ⊥ : &'_ mut (std::boxed::Box) ; + x -> ⌊shared@3⌋ ; + var@5 -> ⊥ : &'_ (std::boxed::Box) ; + var@6 -> ⊥ : bool ; + var@7 -> ⊥ : bool ; + var@8 -> proj_comp {} (s@5 : i32) ; + abs@1{parents={}}{regions={1}} { + ⌊shared@2⌋, + @shared_loan({3}, proj_comp {} (s@5 : i32), proj_loans (s@5 : i32)) + } +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + b -> @shared_loan({2}, proj_comp {0} (s@3 : std::boxed::Box)) ; + x -> ⊥ : &'_ mut (i32) ; + var@3 -> ⊥ : &'_ mut (std::boxed::Box) ; + x -> ⌊shared@3⌋ ; + var@5 -> ⊥ : &'_ (std::boxed::Box) ; + var@6 -> ⊥ : bool ; + var@7 -> ⊥ : bool ; + var@8 -> proj_comp {} (s@5 : i32) ; + abs@1{parents={}}{regions={1}} { + ⌊shared@2⌋, + @shared_loan({3}, proj_comp {} (s@5 : i32), proj_loans (s@5 : i32)) + } +} + + +- op: +move var@8 + +[Debug] Value to move: +proj_comp {} (s@5 : i32) +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + b -> @shared_loan({2}, proj_comp {0} (s@3 : std::boxed::Box)) ; + x -> ⊥ : &'_ mut (i32) ; + var@3 -> ⊥ : &'_ mut (std::boxed::Box) ; + x -> ⌊shared@3⌋ ; + var@5 -> ⊥ : &'_ (std::boxed::Box) ; + var@6 -> ⊥ : bool ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : i32 ; + abs@1{parents={}}{regions={1}} { + ⌊shared@2⌋, + @shared_loan({3}, proj_comp {} (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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + b -> @shared_loan({2}, proj_comp {0} (s@3 : std::boxed::Box)) ; + x -> ⊥ : &'_ mut (i32) ; + var@3 -> ⊥ : &'_ mut (std::boxed::Box) ; + x -> ⌊shared@3⌋ ; + var@5 -> ⊥ : &'_ (std::boxed::Box) ; + var@6 -> ⊥ : bool ; + var@7 -> proj_comp {} (s@6 : bool) ; + var@8 -> ⊥ : i32 ; + abs@1{parents={}}{regions={1}} { + ⌊shared@2⌋, + @shared_loan({3}, proj_comp {} (s@5 : i32), proj_loans (s@5 : i32)) + } +} + + + +[Debug] +**About to evaluate statement**: [ + var@6 := ¬ move var@7 +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + b -> @shared_loan({2}, proj_comp {0} (s@3 : std::boxed::Box)) ; + x -> ⊥ : &'_ mut (i32) ; + var@3 -> ⊥ : &'_ mut (std::boxed::Box) ; + x -> ⌊shared@3⌋ ; + var@5 -> ⊥ : &'_ (std::boxed::Box) ; + var@6 -> ⊥ : bool ; + var@7 -> proj_comp {} (s@6 : bool) ; + var@8 -> ⊥ : i32 ; + abs@1{parents={}}{regions={1}} { + ⌊shared@2⌋, + @shared_loan({3}, proj_comp {} (s@5 : i32), proj_loans (s@5 : i32)) + } +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + b -> @shared_loan({2}, proj_comp {0} (s@3 : std::boxed::Box)) ; + x -> ⊥ : &'_ mut (i32) ; + var@3 -> ⊥ : &'_ mut (std::boxed::Box) ; + x -> ⌊shared@3⌋ ; + var@5 -> ⊥ : &'_ (std::boxed::Box) ; + var@6 -> ⊥ : bool ; + var@7 -> proj_comp {} (s@6 : bool) ; + var@8 -> ⊥ : i32 ; + abs@1{parents={}}{regions={1}} { + ⌊shared@2⌋, + @shared_loan({3}, proj_comp {} (s@5 : i32), proj_loans (s@5 : i32)) + } +} + + +- op: +move var@7 + +[Debug] Value to move: +proj_comp {} (s@6 : bool) +[Debug] +**About to evaluate statement**: [ + assert(¬move var@6); + drop(b); + return +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + b -> @shared_loan({2}, proj_comp {0} (s@3 : std::boxed::Box)) ; + x -> ⊥ : &'_ mut (i32) ; + var@3 -> ⊥ : &'_ mut (std::boxed::Box) ; + x -> ⌊shared@3⌋ ; + var@5 -> ⊥ : &'_ (std::boxed::Box) ; + var@6 -> proj_comp {} (s@7 : bool) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : i32 ; + abs@1{parents={}}{regions={1}} { + ⌊shared@2⌋, + @shared_loan({3}, proj_comp {} (s@5 : i32), proj_loans (s@5 : i32)) + } +} + + + +[Debug] +**About to evaluate statement**: [ + assert(¬move var@6) +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + b -> @shared_loan({2}, proj_comp {0} (s@3 : std::boxed::Box)) ; + x -> ⊥ : &'_ mut (i32) ; + var@3 -> ⊥ : &'_ mut (std::boxed::Box) ; + x -> ⌊shared@3⌋ ; + var@5 -> ⊥ : &'_ (std::boxed::Box) ; + var@6 -> proj_comp {} (s@7 : bool) ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : i32 ; + abs@1{parents={}}{regions={1}} { + ⌊shared@2⌋, + @shared_loan({3}, proj_comp {} (s@5 : i32), proj_loans (s@5 : i32)) + } +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + b -> @shared_loan({2}, proj_comp {0} (s@3 : std::boxed::Box)) ; + x -> ⊥ : &'_ mut (i32) ; + var@3 -> ⊥ : &'_ mut (std::boxed::Box) ; + x -> ⌊shared@3⌋ ; + var@5 -> ⊥ : &'_ (std::boxed::Box) ; + var@6 -> true ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : i32 ; + abs@1{parents={}}{regions={1}} { + ⌊shared@2⌋, + @shared_loan({3}, proj_comp {} (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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + b -> @shared_loan({2}, proj_comp {0} (s@3 : std::boxed::Box)) ; + x -> ⊥ : &'_ mut (i32) ; + var@3 -> ⊥ : &'_ mut (std::boxed::Box) ; + x -> ⌊shared@3⌋ ; + var@5 -> ⊥ : &'_ (std::boxed::Box) ; + var@6 -> ⊥ : bool ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : i32 ; + abs@1{parents={}}{regions={1}} { + ⌊shared@2⌋, + @shared_loan({3}, proj_comp {} (s@5 : i32), proj_loans (s@5 : i32)) + } +} + + + +[Debug] +**About to evaluate statement**: [ + drop(b) +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + b -> @shared_loan({2}, proj_comp {0} (s@3 : std::boxed::Box)) ; + x -> ⊥ : &'_ mut (i32) ; + var@3 -> ⊥ : &'_ mut (std::boxed::Box) ; + x -> ⌊shared@3⌋ ; + var@5 -> ⊥ : &'_ (std::boxed::Box) ; + var@6 -> ⊥ : bool ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : i32 ; + abs@1{parents={}}{regions={1}} { + ⌊shared@2⌋, + @shared_loan({3}, proj_comp {} (s@5 : i32), proj_loans (s@5 : i32)) + } +} + + + +[Debug] drop_value: place: b +[Debug] +**About to evaluate statement**: [ + return +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + b -> ⊥ : std::boxed::Box ; + x -> ⊥ : &'_ mut (i32) ; + var@3 -> ⊥ : &'_ mut (std::boxed::Box) ; + x -> ⊥ : &'_ (i32) ; + var@5 -> ⊥ : &'_ (std::boxed::Box) ; + 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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : i32 ; + x -> proj_comp {} (s@0 : i32) ; +} + + + +[Debug] +**About to evaluate statement**: [ + var@0 := copy x +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : i32 ; + x -> proj_comp {} (s@0 : i32) ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : i32 ; + x -> proj_comp {} (s@0 : i32) ; +} + + +- op: +copy x + +[Debug] Value to copy: +proj_comp {} (s@0 : i32) +[Debug] +**About to evaluate statement**: [ + return +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> proj_comp {} (s@0 : i32) ; + x -> proj_comp {} (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**: +# 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**: +# 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: +# 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**: +# 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**: +# 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**: +# 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**: +# 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: +# 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**: +# 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**: +# 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: +# 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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> @shared_loan({0}, 0: i32) ; + px -> ⌊shared@0⌋ ; + y -> proj_comp {} (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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> @shared_loan({0}, 0: i32) ; + px -> ⌊shared@0⌋ ; + y -> proj_comp {} (s@0 : i32) ; + var@4 -> ⊥ : i32 ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : bool ; + var@7 -> ⊥ : i32 ; + var@8 -> ⊥ : i32 ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> @shared_loan({0}, 0: i32) ; + px -> ⌊shared@0⌋ ; + y -> proj_comp {} (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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> @shared_loan({0}, 0: i32) ; + px -> ⌊shared@0⌋ ; + y -> proj_comp {} (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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> @shared_loan({0}, 0: i32) ; + px -> ⌊shared@0⌋ ; + y -> proj_comp {} (s@0 : i32) ; + var@4 -> ⊥ : i32 ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : bool ; + var@7 -> 0: i32 ; + var@8 -> ⊥ : i32 ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> @shared_loan({0}, 0: i32) ; + px -> ⌊shared@0⌋ ; + y -> proj_comp {} (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: +proj_comp {} (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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> @shared_loan({0}, 0: i32) ; + px -> ⌊shared@0⌋ ; + y -> proj_comp {} (s@0 : i32) ; + var@4 -> ⊥ : i32 ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : bool ; + var@7 -> 0: i32 ; + var@8 -> proj_comp {} (s@0 : i32) ; +} + + + +[Debug] +**About to evaluate statement**: [ + var@6 := move var@7 == move var@8 +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> @shared_loan({0}, 0: i32) ; + px -> ⌊shared@0⌋ ; + y -> proj_comp {} (s@0 : i32) ; + var@4 -> ⊥ : i32 ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : bool ; + var@7 -> 0: i32 ; + var@8 -> proj_comp {} (s@0 : i32) ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> @shared_loan({0}, 0: i32) ; + px -> ⌊shared@0⌋ ; + y -> proj_comp {} (s@0 : i32) ; + var@4 -> ⊥ : i32 ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : bool ; + var@7 -> 0: i32 ; + var@8 -> proj_comp {} (s@0 : i32) ; +} + + +- op: +move var@7 + +[Debug] Value to move: +0: i32 +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> @shared_loan({0}, 0: i32) ; + px -> ⌊shared@0⌋ ; + y -> proj_comp {} (s@0 : i32) ; + var@4 -> ⊥ : i32 ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : bool ; + var@7 -> ⊥ : i32 ; + var@8 -> proj_comp {} (s@0 : i32) ; +} + + +- op: +move var@8 + +[Debug] Value to move: +proj_comp {} (s@0 : i32) +[Debug] +**About to evaluate statement**: [ + var@5 := ¬ move var@6; + assert(¬move var@5); + return +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> @shared_loan({0}, 0: i32) ; + px -> ⌊shared@0⌋ ; + y -> proj_comp {} (s@0 : i32) ; + var@4 -> ⊥ : i32 ; + var@5 -> ⊥ : bool ; + var@6 -> proj_comp {} (s@1 : bool) ; + var@7 -> ⊥ : i32 ; + var@8 -> ⊥ : i32 ; +} + + + +[Debug] +**About to evaluate statement**: [ + var@5 := ¬ move var@6 +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> @shared_loan({0}, 0: i32) ; + px -> ⌊shared@0⌋ ; + y -> proj_comp {} (s@0 : i32) ; + var@4 -> ⊥ : i32 ; + var@5 -> ⊥ : bool ; + var@6 -> proj_comp {} (s@1 : bool) ; + var@7 -> ⊥ : i32 ; + var@8 -> ⊥ : i32 ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> @shared_loan({0}, 0: i32) ; + px -> ⌊shared@0⌋ ; + y -> proj_comp {} (s@0 : i32) ; + var@4 -> ⊥ : i32 ; + var@5 -> ⊥ : bool ; + var@6 -> proj_comp {} (s@1 : bool) ; + var@7 -> ⊥ : i32 ; + var@8 -> ⊥ : i32 ; +} + + +- op: +move var@6 + +[Debug] Value to move: +proj_comp {} (s@1 : bool) +[Debug] +**About to evaluate statement**: [ + assert(¬move var@5); + return +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> @shared_loan({0}, 0: i32) ; + px -> ⌊shared@0⌋ ; + y -> proj_comp {} (s@0 : i32) ; + var@4 -> ⊥ : i32 ; + var@5 -> proj_comp {} (s@2 : bool) ; + var@6 -> ⊥ : bool ; + var@7 -> ⊥ : i32 ; + var@8 -> ⊥ : i32 ; +} + + + +[Debug] +**About to evaluate statement**: [ + assert(¬move var@5) +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> @shared_loan({0}, 0: i32) ; + px -> ⌊shared@0⌋ ; + y -> proj_comp {} (s@0 : i32) ; + var@4 -> ⊥ : i32 ; + var@5 -> proj_comp {} (s@2 : bool) ; + var@6 -> ⊥ : bool ; + var@7 -> ⊥ : i32 ; + var@8 -> ⊥ : i32 ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> @shared_loan({0}, 0: i32) ; + px -> ⌊shared@0⌋ ; + y -> proj_comp {} (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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> @shared_loan({0}, 0: i32) ; + px -> ⌊shared@0⌋ ; + y -> proj_comp {} (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**: +# 1 frame(s) + +# Frame 0: +{ + abs@0{parents={}}{regions={0}} { + proj_loans (s@0 : &r@0 (test1::List)) + } + var@0 -> ⊥ : bool ; + l -> proj_comp {} (s@0 : &r@0 (test1::List)) ; + var@2 -> ⊥ : isize ; +} + + + +[Debug] +**About to evaluate statement**: [ + var@2 := discriminant(*(l)) +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + abs@0{parents={}}{regions={0}} { + proj_loans (s@0 : &r@0 (test1::List)) + } + var@0 -> ⊥ : bool ; + l -> proj_comp {} (s@0 : &r@0 (test1::List)) ; + 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**: +# 1 frame(s) + +# Frame 0: +{ + abs@0{parents={}}{regions={0}} { + @shared_loan({0}, test1::List::Cons { 0 = proj_comp {} (s@2 : T); 1 = proj_comp {} (s@3 : std::boxed::Box>); }, test1::List::Cons { 0 = proj_loans (s@2 : T); 1 = proj_loans (s@3 : std::boxed::Box>); }) + } + 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**: +# 1 frame(s) + +# Frame 0: +{ + abs@0{parents={}}{regions={0}} { + @shared_loan({0}, test1::List::Cons { 0 = proj_comp {} (s@2 : T); 1 = proj_comp {} (s@3 : std::boxed::Box>); }, test1::List::Cons { 0 = proj_loans (s@2 : T); 1 = proj_loans (s@3 : std::boxed::Box>); }) + } + var@0 -> ⊥ : bool ; + l -> ⌊shared@0⌋ ; + var@2 -> 0: isize ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + abs@0{parents={}}{regions={0}} { + @shared_loan({0}, test1::List::Cons { 0 = proj_comp {} (s@2 : T); 1 = proj_comp {} (s@3 : std::boxed::Box>); }, test1::List::Cons { 0 = proj_loans (s@2 : T); 1 = proj_loans (s@3 : std::boxed::Box>); }) + } + 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**: +# 1 frame(s) + +# Frame 0: +{ + abs@0{parents={}}{regions={0}} { + @shared_loan({0}, test1::List::Cons { 0 = proj_comp {} (s@2 : T); 1 = proj_comp {} (s@3 : std::boxed::Box>); }, test1::List::Cons { 0 = proj_loans (s@2 : T); 1 = proj_loans (s@3 : std::boxed::Box>); }) + } + var@0 -> ⊥ : bool ; + l -> ⌊shared@0⌋ ; + var@2 -> ⊥ : isize ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + abs@0{parents={}}{regions={0}} { + @shared_loan({0}, test1::List::Cons { 0 = proj_comp {} (s@2 : T); 1 = proj_comp {} (s@3 : std::boxed::Box>); }, test1::List::Cons { 0 = proj_loans (s@2 : T); 1 = proj_loans (s@3 : std::boxed::Box>); }) + } + var@0 -> ⊥ : bool ; + l -> ⌊shared@0⌋ ; + var@2 -> ⊥ : isize ; +} + + +- op: +true + +[Debug] +**About to evaluate statement**: [ + return +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + abs@0{parents={}}{regions={0}} { + @shared_loan({0}, test1::List::Cons { 0 = proj_comp {} (s@2 : T); 1 = proj_comp {} (s@3 : std::boxed::Box>); }, test1::List::Cons { 0 = proj_loans (s@2 : T); 1 = proj_loans (s@3 : std::boxed::Box>); }) + } + 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**: +# 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**: +# 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: +# 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**: +# 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: +# 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**: +# 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>::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(move var@6); + var@4 := ¬ move var@5; + assert(¬move var@4); + drop(l); + return +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List ; + var@2 -> ⊥ : std::boxed::Box> ; + var@3 -> ⊥ : test1::List ; + var@4 -> ⊥ : bool ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : &'_ (test1::List) ; + var@7 -> ⊥ : &'_ (test1::List) ; +} + + + +[Debug] +**About to evaluate statement**: [ + set_discriminant(var@3, 1) +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List ; + var@2 -> ⊥ : std::boxed::Box> ; + var@3 -> ⊥ : test1::List ; + var@4 -> ⊥ : bool ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : &'_ (test1::List) ; + var@7 -> ⊥ : &'_ (test1::List) ; +} + + + +[Debug] +**About to evaluate statement**: [ + var@2 := move alloc::boxed::Box>::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(move var@6); + var@4 := ¬ move var@5; + assert(¬move var@4); + drop(l); + return +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List ; + var@2 -> ⊥ : std::boxed::Box> ; + var@3 -> test1::List::Nil ; + var@4 -> ⊥ : bool ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : &'_ (test1::List) ; + var@7 -> ⊥ : &'_ (test1::List) ; +} + + + +[Debug] +**About to evaluate statement**: [ + var@2 := move alloc::boxed::Box>::new(move var@3) +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List ; + var@2 -> ⊥ : std::boxed::Box> ; + var@3 -> test1::List::Nil ; + var@4 -> ⊥ : bool ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : &'_ (test1::List) ; + var@7 -> ⊥ : &'_ (test1::List) ; +} + + + +[Debug] eval_non_local_function_call: +- fid:CfimAst.BoxNew +- type_params: [test1::List] +- args: [move var@3] +- dest: var@2 +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List ; + var@2 -> ⊥ : std::boxed::Box> ; + var@3 -> test1::List::Nil ; + var@4 -> ⊥ : bool ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : &'_ (test1::List) ; + var@7 -> ⊥ : &'_ (test1::List) ; +} + + +- 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(move var@6); + var@4 := ¬ move var@5; + assert(¬move var@4); + drop(l); + return +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List ; + var@2 -> proj_comp {} (s@0 : std::boxed::Box>) ; + var@3 -> ⊥ : test1::List ; + var@4 -> ⊥ : bool ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : &'_ (test1::List) ; + var@7 -> ⊥ : &'_ (test1::List) ; +} + + + +[Debug] +**About to evaluate statement**: [ + (l as test1::List::Cons).0 := 0: i32 +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List ; + var@2 -> proj_comp {} (s@0 : std::boxed::Box>) ; + var@3 -> ⊥ : test1::List ; + var@4 -> ⊥ : bool ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : &'_ (test1::List) ; + var@7 -> ⊥ : &'_ (test1::List) ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List ; + var@2 -> proj_comp {} (s@0 : std::boxed::Box>) ; + var@3 -> ⊥ : test1::List ; + var@4 -> ⊥ : bool ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : &'_ (test1::List) ; + var@7 -> ⊥ : &'_ (test1::List) ; +} + + +- 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(move var@6); + var@4 := ¬ move var@5; + assert(¬move var@4); + drop(l); + return +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> test1::List::Cons { 0 = 0: i32; 1 = ⊥ : std::boxed::Box>; } ; + var@2 -> proj_comp {} (s@0 : std::boxed::Box>) ; + var@3 -> ⊥ : test1::List ; + var@4 -> ⊥ : bool ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : &'_ (test1::List) ; + var@7 -> ⊥ : &'_ (test1::List) ; +} + + + +[Debug] +**About to evaluate statement**: [ + (l as test1::List::Cons).1 := move var@2 +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> test1::List::Cons { 0 = 0: i32; 1 = ⊥ : std::boxed::Box>; } ; + var@2 -> proj_comp {} (s@0 : std::boxed::Box>) ; + var@3 -> ⊥ : test1::List ; + var@4 -> ⊥ : bool ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : &'_ (test1::List) ; + var@7 -> ⊥ : &'_ (test1::List) ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> test1::List::Cons { 0 = 0: i32; 1 = ⊥ : std::boxed::Box>; } ; + var@2 -> proj_comp {} (s@0 : std::boxed::Box>) ; + var@3 -> ⊥ : test1::List ; + var@4 -> ⊥ : bool ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : &'_ (test1::List) ; + var@7 -> ⊥ : &'_ (test1::List) ; +} + + +- op: +move var@2 + +[Debug] Value to move: +proj_comp {} (s@0 : std::boxed::Box>) +[Debug] +**About to evaluate statement**: [ + set_discriminant(l, 0); + var@7 := &l; + var@6 := copy var@7; + var@5 := move is_cons(move var@6); + var@4 := ¬ move var@5; + assert(¬move var@4); + drop(l); + return +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> test1::List::Cons { 0 = 0: i32; 1 = proj_comp {} (s@0 : std::boxed::Box>); } ; + var@2 -> ⊥ : std::boxed::Box> ; + var@3 -> ⊥ : test1::List ; + var@4 -> ⊥ : bool ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : &'_ (test1::List) ; + var@7 -> ⊥ : &'_ (test1::List) ; +} + + + +[Debug] +**About to evaluate statement**: [ + set_discriminant(l, 0) +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> test1::List::Cons { 0 = 0: i32; 1 = proj_comp {} (s@0 : std::boxed::Box>); } ; + var@2 -> ⊥ : std::boxed::Box> ; + var@3 -> ⊥ : test1::List ; + var@4 -> ⊥ : bool ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : &'_ (test1::List) ; + var@7 -> ⊥ : &'_ (test1::List) ; +} + + + +[Debug] +**About to evaluate statement**: [ + var@7 := &l; + var@6 := copy var@7; + var@5 := move is_cons(move var@6); + var@4 := ¬ move var@5; + assert(¬move var@4); + drop(l); + return +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> test1::List::Cons { 0 = 0: i32; 1 = proj_comp {} (s@0 : std::boxed::Box>); } ; + var@2 -> ⊥ : std::boxed::Box> ; + var@3 -> ⊥ : test1::List ; + var@4 -> ⊥ : bool ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : &'_ (test1::List) ; + var@7 -> ⊥ : &'_ (test1::List) ; +} + + + +[Debug] +**About to evaluate statement**: [ + var@7 := &l +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> test1::List::Cons { 0 = 0: i32; 1 = proj_comp {} (s@0 : std::boxed::Box>); } ; + var@2 -> ⊥ : std::boxed::Box> ; + var@3 -> ⊥ : test1::List ; + var@4 -> ⊥ : bool ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : &'_ (test1::List) ; + var@7 -> ⊥ : &'_ (test1::List) ; +} + + + +[Debug] +**About to evaluate statement**: [ + var@6 := copy var@7; + var@5 := move is_cons(move var@6); + var@4 := ¬ move var@5; + assert(¬move var@4); + drop(l); + return +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> @shared_loan({0}, test1::List::Cons { 0 = 0: i32; 1 = proj_comp {} (s@0 : std::boxed::Box>); }) ; + var@2 -> ⊥ : std::boxed::Box> ; + var@3 -> ⊥ : test1::List ; + var@4 -> ⊥ : bool ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : &'_ (test1::List) ; + var@7 -> ⌊shared@0⌋ ; +} + + + +[Debug] +**About to evaluate statement**: [ + var@6 := copy var@7 +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> @shared_loan({0}, test1::List::Cons { 0 = 0: i32; 1 = proj_comp {} (s@0 : std::boxed::Box>); }) ; + var@2 -> ⊥ : std::boxed::Box> ; + var@3 -> ⊥ : test1::List ; + var@4 -> ⊥ : bool ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : &'_ (test1::List) ; + var@7 -> ⌊shared@0⌋ ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> @shared_loan({0}, test1::List::Cons { 0 = 0: i32; 1 = proj_comp {} (s@0 : std::boxed::Box>); }) ; + var@2 -> ⊥ : std::boxed::Box> ; + var@3 -> ⊥ : test1::List ; + var@4 -> ⊥ : bool ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : &'_ (test1::List) ; + var@7 -> ⌊shared@0⌋ ; +} + + +- op: +copy var@7 + +[Debug] Value to copy: +⌊shared@0⌋ +[Debug] +**About to evaluate statement**: [ + var@5 := move is_cons(move var@6); + var@4 := ¬ move var@5; + assert(¬move var@4); + drop(l); + return +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> @shared_loan({0, 1}, test1::List::Cons { 0 = 0: i32; 1 = proj_comp {} (s@0 : std::boxed::Box>); }) ; + var@2 -> ⊥ : std::boxed::Box> ; + var@3 -> ⊥ : test1::List ; + var@4 -> ⊥ : bool ; + var@5 -> ⊥ : bool ; + var@6 -> ⌊shared@1⌋ ; + var@7 -> ⌊shared@0⌋ ; +} + + + +[Debug] +**About to evaluate statement**: [ + var@5 := move is_cons(move var@6) +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> @shared_loan({0, 1}, test1::List::Cons { 0 = 0: i32; 1 = proj_comp {} (s@0 : std::boxed::Box>); }) ; + var@2 -> ⊥ : std::boxed::Box> ; + var@3 -> ⊥ : test1::List ; + var@4 -> ⊥ : bool ; + var@5 -> ⊥ : bool ; + var@6 -> ⌊shared@1⌋ ; + var@7 -> ⌊shared@0⌋ ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> @shared_loan({0, 1}, test1::List::Cons { 0 = 0: i32; 1 = proj_comp {} (s@0 : std::boxed::Box>); }) ; + var@2 -> ⊥ : std::boxed::Box> ; + var@3 -> ⊥ : test1::List ; + 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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> @shared_loan({0, 1}, test1::List::Cons { 0 = 0: i32; 1 = proj_comp {} (s@0 : std::boxed::Box>); }) ; + var@2 -> ⊥ : std::boxed::Box> ; + var@3 -> ⊥ : test1::List ; + var@4 -> ⊥ : bool ; + var@5 -> proj_comp {} (s@1 : bool) ; + var@6 -> ⊥ : &'_ (test1::List) ; + 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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> @shared_loan({0, 1}, test1::List::Cons { 0 = 0: i32; 1 = proj_comp {} (s@0 : std::boxed::Box>); }) ; + var@2 -> ⊥ : std::boxed::Box> ; + var@3 -> ⊥ : test1::List ; + var@4 -> ⊥ : bool ; + var@5 -> proj_comp {} (s@1 : bool) ; + var@6 -> ⊥ : &'_ (test1::List) ; + var@7 -> ⌊shared@0⌋ ; + abs@0{parents={}}{regions={0}} { + ⌊shared@1⌋, + proj_loans (s@1 : bool) + } +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> @shared_loan({0, 1}, test1::List::Cons { 0 = 0: i32; 1 = proj_comp {} (s@0 : std::boxed::Box>); }) ; + var@2 -> ⊥ : std::boxed::Box> ; + var@3 -> ⊥ : test1::List ; + var@4 -> ⊥ : bool ; + var@5 -> proj_comp {} (s@1 : bool) ; + var@6 -> ⊥ : &'_ (test1::List) ; + var@7 -> ⌊shared@0⌋ ; + abs@0{parents={}}{regions={0}} { + ⌊shared@1⌋, + proj_loans (s@1 : bool) + } +} + + +- op: +move var@5 + +[Debug] Value to move: +proj_comp {} (s@1 : bool) +[Debug] +**About to evaluate statement**: [ + assert(¬move var@4); + drop(l); + return +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> @shared_loan({0, 1}, test1::List::Cons { 0 = 0: i32; 1 = proj_comp {} (s@0 : std::boxed::Box>); }) ; + var@2 -> ⊥ : std::boxed::Box> ; + var@3 -> ⊥ : test1::List ; + var@4 -> proj_comp {} (s@2 : bool) ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : &'_ (test1::List) ; + 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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> @shared_loan({0, 1}, test1::List::Cons { 0 = 0: i32; 1 = proj_comp {} (s@0 : std::boxed::Box>); }) ; + var@2 -> ⊥ : std::boxed::Box> ; + var@3 -> ⊥ : test1::List ; + var@4 -> proj_comp {} (s@2 : bool) ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : &'_ (test1::List) ; + var@7 -> ⌊shared@0⌋ ; + abs@0{parents={}}{regions={0}} { + ⌊shared@1⌋, + proj_loans (s@1 : bool) + } +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> @shared_loan({0, 1}, test1::List::Cons { 0 = 0: i32; 1 = proj_comp {} (s@0 : std::boxed::Box>); }) ; + var@2 -> ⊥ : std::boxed::Box> ; + var@3 -> ⊥ : test1::List ; + var@4 -> true ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : &'_ (test1::List) ; + 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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> @shared_loan({0, 1}, test1::List::Cons { 0 = 0: i32; 1 = proj_comp {} (s@0 : std::boxed::Box>); }) ; + var@2 -> ⊥ : std::boxed::Box> ; + var@3 -> ⊥ : test1::List ; + var@4 -> ⊥ : bool ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : &'_ (test1::List) ; + var@7 -> ⌊shared@0⌋ ; + abs@0{parents={}}{regions={0}} { + ⌊shared@1⌋, + proj_loans (s@1 : bool) + } +} + + + +[Debug] +**About to evaluate statement**: [ + drop(l) +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> @shared_loan({0, 1}, test1::List::Cons { 0 = 0: i32; 1 = proj_comp {} (s@0 : std::boxed::Box>); }) ; + var@2 -> ⊥ : std::boxed::Box> ; + var@3 -> ⊥ : test1::List ; + var@4 -> ⊥ : bool ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : &'_ (test1::List) ; + 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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List ; + var@2 -> ⊥ : std::boxed::Box> ; + var@3 -> ⊥ : test1::List ; + var@4 -> ⊥ : bool ; + var@5 -> ⊥ : bool ; + var@6 -> ⊥ : &'_ (test1::List) ; + var@7 -> ⊥ : &'_ (test1::List) ; +} + + + +[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>(move tl); + return + } + _ => { + panic + } + } +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List) ; + l -> proj_comp {} (s@0 : test1::List) ; + var@2 -> ⊥ : isize ; + hd -> ⊥ : T ; + tl -> ⊥ : std::boxed::Box> ; + var@5 -> ⊥ : T ; + var@6 -> ⊥ : test1::List ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : () ; + var@10 -> ⊥ : isize ; +} + + + +[Debug] +**About to evaluate statement**: [ + var@8 := false +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List) ; + l -> proj_comp {} (s@0 : test1::List) ; + var@2 -> ⊥ : isize ; + hd -> ⊥ : T ; + tl -> ⊥ : std::boxed::Box> ; + var@5 -> ⊥ : T ; + var@6 -> ⊥ : test1::List ; + var@7 -> ⊥ : bool ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : () ; + var@10 -> ⊥ : isize ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List) ; + l -> proj_comp {} (s@0 : test1::List) ; + var@2 -> ⊥ : isize ; + hd -> ⊥ : T ; + tl -> ⊥ : std::boxed::Box> ; + var@5 -> ⊥ : T ; + var@6 -> ⊥ : test1::List ; + 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>(move tl); + return + } + _ => { + panic + } + } +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List) ; + l -> proj_comp {} (s@0 : test1::List) ; + var@2 -> ⊥ : isize ; + hd -> ⊥ : T ; + tl -> ⊥ : std::boxed::Box> ; + var@5 -> ⊥ : T ; + var@6 -> ⊥ : test1::List ; + var@7 -> ⊥ : bool ; + var@8 -> false ; + var@9 -> ⊥ : () ; + var@10 -> ⊥ : isize ; +} + + + +[Debug] +**About to evaluate statement**: [ + var@7 := false +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List) ; + l -> proj_comp {} (s@0 : test1::List) ; + var@2 -> ⊥ : isize ; + hd -> ⊥ : T ; + tl -> ⊥ : std::boxed::Box> ; + var@5 -> ⊥ : T ; + var@6 -> ⊥ : test1::List ; + var@7 -> ⊥ : bool ; + var@8 -> false ; + var@9 -> ⊥ : () ; + var@10 -> ⊥ : isize ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List) ; + l -> proj_comp {} (s@0 : test1::List) ; + var@2 -> ⊥ : isize ; + hd -> ⊥ : T ; + tl -> ⊥ : std::boxed::Box> ; + var@5 -> ⊥ : T ; + var@6 -> ⊥ : test1::List ; + 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>(move tl); + return + } + _ => { + panic + } + } +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List) ; + l -> proj_comp {} (s@0 : test1::List) ; + var@2 -> ⊥ : isize ; + hd -> ⊥ : T ; + tl -> ⊥ : std::boxed::Box> ; + var@5 -> ⊥ : T ; + var@6 -> ⊥ : test1::List ; + var@7 -> false ; + var@8 -> false ; + var@9 -> ⊥ : () ; + var@10 -> ⊥ : isize ; +} + + + +[Debug] +**About to evaluate statement**: [ + var@7 := true +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List) ; + l -> proj_comp {} (s@0 : test1::List) ; + var@2 -> ⊥ : isize ; + hd -> ⊥ : T ; + tl -> ⊥ : std::boxed::Box> ; + var@5 -> ⊥ : T ; + var@6 -> ⊥ : test1::List ; + var@7 -> false ; + var@8 -> false ; + var@9 -> ⊥ : () ; + var@10 -> ⊥ : isize ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List) ; + l -> proj_comp {} (s@0 : test1::List) ; + var@2 -> ⊥ : isize ; + hd -> ⊥ : T ; + tl -> ⊥ : std::boxed::Box> ; + var@5 -> ⊥ : T ; + var@6 -> ⊥ : test1::List ; + 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>(move tl); + return + } + _ => { + panic + } + } +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List) ; + l -> proj_comp {} (s@0 : test1::List) ; + var@2 -> ⊥ : isize ; + hd -> ⊥ : T ; + tl -> ⊥ : std::boxed::Box> ; + var@5 -> ⊥ : T ; + var@6 -> ⊥ : test1::List ; + var@7 -> true ; + var@8 -> false ; + var@9 -> ⊥ : () ; + var@10 -> ⊥ : isize ; +} + + + +[Debug] +**About to evaluate statement**: [ + var@8 := true +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List) ; + l -> proj_comp {} (s@0 : test1::List) ; + var@2 -> ⊥ : isize ; + hd -> ⊥ : T ; + tl -> ⊥ : std::boxed::Box> ; + var@5 -> ⊥ : T ; + var@6 -> ⊥ : test1::List ; + var@7 -> true ; + var@8 -> false ; + var@9 -> ⊥ : () ; + var@10 -> ⊥ : isize ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List) ; + l -> proj_comp {} (s@0 : test1::List) ; + var@2 -> ⊥ : isize ; + hd -> ⊥ : T ; + tl -> ⊥ : std::boxed::Box> ; + var@5 -> ⊥ : T ; + var@6 -> ⊥ : test1::List ; + 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>(move tl); + return + } + _ => { + panic + } + } +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List) ; + l -> proj_comp {} (s@0 : test1::List) ; + var@2 -> ⊥ : isize ; + hd -> ⊥ : T ; + tl -> ⊥ : std::boxed::Box> ; + var@5 -> ⊥ : T ; + var@6 -> ⊥ : test1::List ; + var@7 -> true ; + var@8 -> true ; + var@9 -> ⊥ : () ; + var@10 -> ⊥ : isize ; +} + + + +[Debug] +**About to evaluate statement**: [ + var@2 := discriminant(l) +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List) ; + l -> proj_comp {} (s@0 : test1::List) ; + var@2 -> ⊥ : isize ; + hd -> ⊥ : T ; + tl -> ⊥ : std::boxed::Box> ; + var@5 -> ⊥ : T ; + var@6 -> ⊥ : test1::List ; + 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>(move tl); + return + } + _ => { + panic + } + } +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List) ; + l -> test1::List::Cons { 0 = proj_comp {} (s@1 : T); 1 = proj_comp {} (s@2 : std::boxed::Box>); } ; + var@2 -> 0: isize ; + hd -> ⊥ : T ; + tl -> ⊥ : std::boxed::Box> ; + var@5 -> ⊥ : T ; + var@6 -> ⊥ : test1::List ; + var@7 -> true ; + var@8 -> true ; + var@9 -> ⊥ : () ; + var@10 -> ⊥ : isize ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List) ; + l -> test1::List::Cons { 0 = proj_comp {} (s@1 : T); 1 = proj_comp {} (s@2 : std::boxed::Box>); } ; + var@2 -> 0: isize ; + hd -> ⊥ : T ; + tl -> ⊥ : std::boxed::Box> ; + var@5 -> ⊥ : T ; + var@6 -> ⊥ : test1::List ; + 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>(move tl); + return +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List) ; + l -> test1::List::Cons { 0 = proj_comp {} (s@1 : T); 1 = proj_comp {} (s@2 : std::boxed::Box>); } ; + var@2 -> ⊥ : isize ; + hd -> ⊥ : T ; + tl -> ⊥ : std::boxed::Box> ; + var@5 -> ⊥ : T ; + var@6 -> ⊥ : test1::List ; + var@7 -> true ; + var@8 -> true ; + var@9 -> ⊥ : () ; + var@10 -> ⊥ : isize ; +} + + + +[Debug] +**About to evaluate statement**: [ + var@8 := false +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List) ; + l -> test1::List::Cons { 0 = proj_comp {} (s@1 : T); 1 = proj_comp {} (s@2 : std::boxed::Box>); } ; + var@2 -> ⊥ : isize ; + hd -> ⊥ : T ; + tl -> ⊥ : std::boxed::Box> ; + var@5 -> ⊥ : T ; + var@6 -> ⊥ : test1::List ; + var@7 -> true ; + var@8 -> true ; + var@9 -> ⊥ : () ; + var@10 -> ⊥ : isize ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List) ; + l -> test1::List::Cons { 0 = proj_comp {} (s@1 : T); 1 = proj_comp {} (s@2 : std::boxed::Box>); } ; + var@2 -> ⊥ : isize ; + hd -> ⊥ : T ; + tl -> ⊥ : std::boxed::Box> ; + var@5 -> ⊥ : T ; + var@6 -> ⊥ : test1::List ; + 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>(move tl); + return +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List) ; + l -> test1::List::Cons { 0 = proj_comp {} (s@1 : T); 1 = proj_comp {} (s@2 : std::boxed::Box>); } ; + var@2 -> ⊥ : isize ; + hd -> ⊥ : T ; + tl -> ⊥ : std::boxed::Box> ; + var@5 -> ⊥ : T ; + var@6 -> ⊥ : test1::List ; + 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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List) ; + l -> test1::List::Cons { 0 = proj_comp {} (s@1 : T); 1 = proj_comp {} (s@2 : std::boxed::Box>); } ; + var@2 -> ⊥ : isize ; + hd -> ⊥ : T ; + tl -> ⊥ : std::boxed::Box> ; + var@5 -> ⊥ : T ; + var@6 -> ⊥ : test1::List ; + var@7 -> true ; + var@8 -> false ; + var@9 -> ⊥ : () ; + var@10 -> ⊥ : isize ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List) ; + l -> test1::List::Cons { 0 = proj_comp {} (s@1 : T); 1 = proj_comp {} (s@2 : std::boxed::Box>); } ; + var@2 -> ⊥ : isize ; + hd -> ⊥ : T ; + tl -> ⊥ : std::boxed::Box> ; + var@5 -> ⊥ : T ; + var@6 -> ⊥ : test1::List ; + var@7 -> true ; + var@8 -> false ; + var@9 -> ⊥ : () ; + var@10 -> ⊥ : isize ; +} + + +- op: +move (l as test1::List::Cons).0 + +[Debug] Value to move: +proj_comp {} (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>(move tl); + return +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List) ; + l -> test1::List::Cons { 0 = ⊥ : T; 1 = proj_comp {} (s@2 : std::boxed::Box>); } ; + var@2 -> ⊥ : isize ; + hd -> proj_comp {} (s@1 : T) ; + tl -> ⊥ : std::boxed::Box> ; + var@5 -> ⊥ : T ; + var@6 -> ⊥ : test1::List ; + var@7 -> true ; + var@8 -> false ; + var@9 -> ⊥ : () ; + var@10 -> ⊥ : isize ; +} + + + +[Debug] +**About to evaluate statement**: [ + var@7 := false +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List) ; + l -> test1::List::Cons { 0 = ⊥ : T; 1 = proj_comp {} (s@2 : std::boxed::Box>); } ; + var@2 -> ⊥ : isize ; + hd -> proj_comp {} (s@1 : T) ; + tl -> ⊥ : std::boxed::Box> ; + var@5 -> ⊥ : T ; + var@6 -> ⊥ : test1::List ; + var@7 -> true ; + var@8 -> false ; + var@9 -> ⊥ : () ; + var@10 -> ⊥ : isize ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List) ; + l -> test1::List::Cons { 0 = ⊥ : T; 1 = proj_comp {} (s@2 : std::boxed::Box>); } ; + var@2 -> ⊥ : isize ; + hd -> proj_comp {} (s@1 : T) ; + tl -> ⊥ : std::boxed::Box> ; + var@5 -> ⊥ : T ; + var@6 -> ⊥ : test1::List ; + 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>(move tl); + return +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List) ; + l -> test1::List::Cons { 0 = ⊥ : T; 1 = proj_comp {} (s@2 : std::boxed::Box>); } ; + var@2 -> ⊥ : isize ; + hd -> proj_comp {} (s@1 : T) ; + tl -> ⊥ : std::boxed::Box> ; + var@5 -> ⊥ : T ; + var@6 -> ⊥ : test1::List ; + 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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List) ; + l -> test1::List::Cons { 0 = ⊥ : T; 1 = proj_comp {} (s@2 : std::boxed::Box>); } ; + var@2 -> ⊥ : isize ; + hd -> proj_comp {} (s@1 : T) ; + tl -> ⊥ : std::boxed::Box> ; + var@5 -> ⊥ : T ; + var@6 -> ⊥ : test1::List ; + var@7 -> false ; + var@8 -> false ; + var@9 -> ⊥ : () ; + var@10 -> ⊥ : isize ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List) ; + l -> test1::List::Cons { 0 = ⊥ : T; 1 = proj_comp {} (s@2 : std::boxed::Box>); } ; + var@2 -> ⊥ : isize ; + hd -> proj_comp {} (s@1 : T) ; + tl -> ⊥ : std::boxed::Box> ; + var@5 -> ⊥ : T ; + var@6 -> ⊥ : test1::List ; + var@7 -> false ; + var@8 -> false ; + var@9 -> ⊥ : () ; + var@10 -> ⊥ : isize ; +} + + +- op: +move (l as test1::List::Cons).1 + +[Debug] Value to move: +proj_comp {} (s@2 : std::boxed::Box>) +[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>(move tl); + return +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List) ; + l -> test1::List::Cons { 0 = ⊥ : T; 1 = ⊥ : std::boxed::Box>; } ; + var@2 -> ⊥ : isize ; + hd -> proj_comp {} (s@1 : T) ; + tl -> proj_comp {} (s@2 : std::boxed::Box>) ; + var@5 -> ⊥ : T ; + var@6 -> ⊥ : test1::List ; + var@7 -> false ; + var@8 -> false ; + var@9 -> ⊥ : () ; + var@10 -> ⊥ : isize ; +} + + + +[Debug] +**About to evaluate statement**: [ + var@5 := move hd +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List) ; + l -> test1::List::Cons { 0 = ⊥ : T; 1 = ⊥ : std::boxed::Box>; } ; + var@2 -> ⊥ : isize ; + hd -> proj_comp {} (s@1 : T) ; + tl -> proj_comp {} (s@2 : std::boxed::Box>) ; + var@5 -> ⊥ : T ; + var@6 -> ⊥ : test1::List ; + var@7 -> false ; + var@8 -> false ; + var@9 -> ⊥ : () ; + var@10 -> ⊥ : isize ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List) ; + l -> test1::List::Cons { 0 = ⊥ : T; 1 = ⊥ : std::boxed::Box>; } ; + var@2 -> ⊥ : isize ; + hd -> proj_comp {} (s@1 : T) ; + tl -> proj_comp {} (s@2 : std::boxed::Box>) ; + var@5 -> ⊥ : T ; + var@6 -> ⊥ : test1::List ; + var@7 -> false ; + var@8 -> false ; + var@9 -> ⊥ : () ; + var@10 -> ⊥ : isize ; +} + + +- op: +move hd + +[Debug] Value to move: +proj_comp {} (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>(move tl); + return +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List) ; + l -> test1::List::Cons { 0 = ⊥ : T; 1 = ⊥ : std::boxed::Box>; } ; + var@2 -> ⊥ : isize ; + hd -> ⊥ : T ; + tl -> proj_comp {} (s@2 : std::boxed::Box>) ; + var@5 -> proj_comp {} (s@1 : T) ; + var@6 -> ⊥ : test1::List ; + var@7 -> false ; + var@8 -> false ; + var@9 -> ⊥ : () ; + var@10 -> ⊥ : isize ; +} + + + +[Debug] +**About to evaluate statement**: [ + var@6 := move deref_box(tl) +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List) ; + l -> test1::List::Cons { 0 = ⊥ : T; 1 = ⊥ : std::boxed::Box>; } ; + var@2 -> ⊥ : isize ; + hd -> ⊥ : T ; + tl -> proj_comp {} (s@2 : std::boxed::Box>) ; + var@5 -> proj_comp {} (s@1 : T) ; + var@6 -> ⊥ : test1::List ; + var@7 -> false ; + var@8 -> false ; + var@9 -> ⊥ : () ; + var@10 -> ⊥ : isize ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List) ; + l -> test1::List::Cons { 0 = ⊥ : T; 1 = ⊥ : std::boxed::Box>; } ; + var@2 -> ⊥ : isize ; + hd -> ⊥ : T ; + tl -> proj_comp {} (s@2 : std::boxed::Box>) ; + var@5 -> proj_comp {} (s@1 : T) ; + var@6 -> ⊥ : test1::List ; + var@7 -> false ; + var@8 -> false ; + var@9 -> ⊥ : () ; + var@10 -> ⊥ : isize ; +} + + +- op: +move deref_box(tl) + +[Debug] Value to move: +proj_comp {} (s@3 : test1::List) +[Debug] +**About to evaluate statement**: [ + (var@0).0 := move var@5; + (var@0).1 := move var@6; + var@9 := move alloc::alloc::box_free>(move tl); + return +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List) ; + l -> test1::List::Cons { 0 = ⊥ : T; 1 = ⊥ : std::boxed::Box>; } ; + var@2 -> ⊥ : isize ; + hd -> ⊥ : T ; + tl -> @Box(⊥ : test1::List) ; + var@5 -> proj_comp {} (s@1 : T) ; + var@6 -> proj_comp {} (s@3 : test1::List) ; + var@7 -> false ; + var@8 -> false ; + var@9 -> ⊥ : () ; + var@10 -> ⊥ : isize ; +} + + + +[Debug] +**About to evaluate statement**: [ + (var@0).0 := move var@5 +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List) ; + l -> test1::List::Cons { 0 = ⊥ : T; 1 = ⊥ : std::boxed::Box>; } ; + var@2 -> ⊥ : isize ; + hd -> ⊥ : T ; + tl -> @Box(⊥ : test1::List) ; + var@5 -> proj_comp {} (s@1 : T) ; + var@6 -> proj_comp {} (s@3 : test1::List) ; + var@7 -> false ; + var@8 -> false ; + var@9 -> ⊥ : () ; + var@10 -> ⊥ : isize ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List) ; + l -> test1::List::Cons { 0 = ⊥ : T; 1 = ⊥ : std::boxed::Box>; } ; + var@2 -> ⊥ : isize ; + hd -> ⊥ : T ; + tl -> @Box(⊥ : test1::List) ; + var@5 -> proj_comp {} (s@1 : T) ; + var@6 -> proj_comp {} (s@3 : test1::List) ; + var@7 -> false ; + var@8 -> false ; + var@9 -> ⊥ : () ; + var@10 -> ⊥ : isize ; +} + + +- op: +move var@5 + +[Debug] Value to move: +proj_comp {} (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>(move tl); + return +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> (proj_comp {} (s@1 : T), ⊥ : test1::List) ; + l -> test1::List::Cons { 0 = ⊥ : T; 1 = ⊥ : std::boxed::Box>; } ; + var@2 -> ⊥ : isize ; + hd -> ⊥ : T ; + tl -> @Box(⊥ : test1::List) ; + var@5 -> ⊥ : T ; + var@6 -> proj_comp {} (s@3 : test1::List) ; + var@7 -> false ; + var@8 -> false ; + var@9 -> ⊥ : () ; + var@10 -> ⊥ : isize ; +} + + + +[Debug] +**About to evaluate statement**: [ + (var@0).1 := move var@6 +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> (proj_comp {} (s@1 : T), ⊥ : test1::List) ; + l -> test1::List::Cons { 0 = ⊥ : T; 1 = ⊥ : std::boxed::Box>; } ; + var@2 -> ⊥ : isize ; + hd -> ⊥ : T ; + tl -> @Box(⊥ : test1::List) ; + var@5 -> ⊥ : T ; + var@6 -> proj_comp {} (s@3 : test1::List) ; + var@7 -> false ; + var@8 -> false ; + var@9 -> ⊥ : () ; + var@10 -> ⊥ : isize ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> (proj_comp {} (s@1 : T), ⊥ : test1::List) ; + l -> test1::List::Cons { 0 = ⊥ : T; 1 = ⊥ : std::boxed::Box>; } ; + var@2 -> ⊥ : isize ; + hd -> ⊥ : T ; + tl -> @Box(⊥ : test1::List) ; + var@5 -> ⊥ : T ; + var@6 -> proj_comp {} (s@3 : test1::List) ; + var@7 -> false ; + var@8 -> false ; + var@9 -> ⊥ : () ; + var@10 -> ⊥ : isize ; +} + + +- op: +move var@6 + +[Debug] Value to move: +proj_comp {} (s@3 : test1::List) +[Debug] +**About to evaluate statement**: [ + var@9 := move alloc::alloc::box_free>(move tl); + return +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> (proj_comp {} (s@1 : T), proj_comp {} (s@3 : test1::List)) ; + l -> test1::List::Cons { 0 = ⊥ : T; 1 = ⊥ : std::boxed::Box>; } ; + var@2 -> ⊥ : isize ; + hd -> ⊥ : T ; + tl -> @Box(⊥ : test1::List) ; + var@5 -> ⊥ : T ; + var@6 -> ⊥ : test1::List ; + var@7 -> false ; + var@8 -> false ; + var@9 -> ⊥ : () ; + var@10 -> ⊥ : isize ; +} + + + +[Debug] +**About to evaluate statement**: [ + var@9 := move alloc::alloc::box_free>(move tl) +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> (proj_comp {} (s@1 : T), proj_comp {} (s@3 : test1::List)) ; + l -> test1::List::Cons { 0 = ⊥ : T; 1 = ⊥ : std::boxed::Box>; } ; + var@2 -> ⊥ : isize ; + hd -> ⊥ : T ; + tl -> @Box(⊥ : test1::List) ; + var@5 -> ⊥ : T ; + var@6 -> ⊥ : test1::List ; + var@7 -> false ; + var@8 -> false ; + var@9 -> ⊥ : () ; + var@10 -> ⊥ : isize ; +} + + + +[Debug] eval_non_local_function_call: +- fid:CfimAst.BoxFree +- type_params: [test1::List] +- args: [move tl] +- dest: var@9 +[Debug] drop_value: place: tl +[Debug] +**About to evaluate statement**: [ + return +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> (proj_comp {} (s@1 : T), proj_comp {} (s@3 : test1::List)) ; + l -> test1::List::Cons { 0 = ⊥ : T; 1 = ⊥ : std::boxed::Box>; } ; + var@2 -> ⊥ : isize ; + hd -> ⊥ : T ; + tl -> ⊥ : std::boxed::Box> ; + var@5 -> ⊥ : T ; + var@6 -> ⊥ : test1::List ; + 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>(move tl); + return + } + _ => { + panic + } + } +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List) ; + l -> test1::List::Nil ; + var@2 -> 1: isize ; + hd -> ⊥ : T ; + tl -> ⊥ : std::boxed::Box> ; + var@5 -> ⊥ : T ; + var@6 -> ⊥ : test1::List ; + var@7 -> true ; + var@8 -> true ; + var@9 -> ⊥ : () ; + var@10 -> ⊥ : isize ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List) ; + l -> test1::List::Nil ; + var@2 -> 1: isize ; + hd -> ⊥ : T ; + tl -> ⊥ : std::boxed::Box> ; + var@5 -> ⊥ : T ; + var@6 -> ⊥ : test1::List ; + 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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : (T, test1::List) ; + l -> test1::List::Nil ; + var@2 -> ⊥ : isize ; + hd -> ⊥ : T ; + tl -> ⊥ : std::boxed::Box> ; + var@5 -> ⊥ : T ; + var@6 -> ⊥ : test1::List ; + 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>::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(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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List ; + var@2 -> ⊥ : std::boxed::Box> ; + var@3 -> ⊥ : test1::List ; + hd -> ⊥ : i32 ; + tl -> ⊥ : test1::List ; + var@6 -> ⊥ : (i32, test1::List) ; + var@7 -> ⊥ : test1::List ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : bool ; + var@10 -> ⊥ : i32 ; +} + + + +[Debug] +**About to evaluate statement**: [ + set_discriminant(var@3, 1) +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List ; + var@2 -> ⊥ : std::boxed::Box> ; + var@3 -> ⊥ : test1::List ; + hd -> ⊥ : i32 ; + tl -> ⊥ : test1::List ; + var@6 -> ⊥ : (i32, test1::List) ; + var@7 -> ⊥ : test1::List ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : bool ; + var@10 -> ⊥ : i32 ; +} + + + +[Debug] +**About to evaluate statement**: [ + var@2 := move alloc::boxed::Box>::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(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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List ; + var@2 -> ⊥ : std::boxed::Box> ; + var@3 -> test1::List::Nil ; + hd -> ⊥ : i32 ; + tl -> ⊥ : test1::List ; + var@6 -> ⊥ : (i32, test1::List) ; + var@7 -> ⊥ : test1::List ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : bool ; + var@10 -> ⊥ : i32 ; +} + + + +[Debug] +**About to evaluate statement**: [ + var@2 := move alloc::boxed::Box>::new(move var@3) +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List ; + var@2 -> ⊥ : std::boxed::Box> ; + var@3 -> test1::List::Nil ; + hd -> ⊥ : i32 ; + tl -> ⊥ : test1::List ; + var@6 -> ⊥ : (i32, test1::List) ; + var@7 -> ⊥ : test1::List ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : bool ; + var@10 -> ⊥ : i32 ; +} + + + +[Debug] eval_non_local_function_call: +- fid:CfimAst.BoxNew +- type_params: [test1::List] +- args: [move var@3] +- dest: var@2 +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List ; + var@2 -> ⊥ : std::boxed::Box> ; + var@3 -> test1::List::Nil ; + hd -> ⊥ : i32 ; + tl -> ⊥ : test1::List ; + var@6 -> ⊥ : (i32, test1::List) ; + var@7 -> ⊥ : test1::List ; + 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(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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List ; + var@2 -> proj_comp {} (s@0 : std::boxed::Box>) ; + var@3 -> ⊥ : test1::List ; + hd -> ⊥ : i32 ; + tl -> ⊥ : test1::List ; + var@6 -> ⊥ : (i32, test1::List) ; + var@7 -> ⊥ : test1::List ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : bool ; + var@10 -> ⊥ : i32 ; +} + + + +[Debug] +**About to evaluate statement**: [ + (l as test1::List::Cons).0 := 0: i32 +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List ; + var@2 -> proj_comp {} (s@0 : std::boxed::Box>) ; + var@3 -> ⊥ : test1::List ; + hd -> ⊥ : i32 ; + tl -> ⊥ : test1::List ; + var@6 -> ⊥ : (i32, test1::List) ; + var@7 -> ⊥ : test1::List ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : bool ; + var@10 -> ⊥ : i32 ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List ; + var@2 -> proj_comp {} (s@0 : std::boxed::Box>) ; + var@3 -> ⊥ : test1::List ; + hd -> ⊥ : i32 ; + tl -> ⊥ : test1::List ; + var@6 -> ⊥ : (i32, test1::List) ; + var@7 -> ⊥ : test1::List ; + 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(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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> test1::List::Cons { 0 = 0: i32; 1 = ⊥ : std::boxed::Box>; } ; + var@2 -> proj_comp {} (s@0 : std::boxed::Box>) ; + var@3 -> ⊥ : test1::List ; + hd -> ⊥ : i32 ; + tl -> ⊥ : test1::List ; + var@6 -> ⊥ : (i32, test1::List) ; + var@7 -> ⊥ : test1::List ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : bool ; + var@10 -> ⊥ : i32 ; +} + + + +[Debug] +**About to evaluate statement**: [ + (l as test1::List::Cons).1 := move var@2 +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> test1::List::Cons { 0 = 0: i32; 1 = ⊥ : std::boxed::Box>; } ; + var@2 -> proj_comp {} (s@0 : std::boxed::Box>) ; + var@3 -> ⊥ : test1::List ; + hd -> ⊥ : i32 ; + tl -> ⊥ : test1::List ; + var@6 -> ⊥ : (i32, test1::List) ; + var@7 -> ⊥ : test1::List ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : bool ; + var@10 -> ⊥ : i32 ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> test1::List::Cons { 0 = 0: i32; 1 = ⊥ : std::boxed::Box>; } ; + var@2 -> proj_comp {} (s@0 : std::boxed::Box>) ; + var@3 -> ⊥ : test1::List ; + hd -> ⊥ : i32 ; + tl -> ⊥ : test1::List ; + var@6 -> ⊥ : (i32, test1::List) ; + var@7 -> ⊥ : test1::List ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : bool ; + var@10 -> ⊥ : i32 ; +} + + +- op: +move var@2 + +[Debug] Value to move: +proj_comp {} (s@0 : std::boxed::Box>) +[Debug] +**About to evaluate statement**: [ + set_discriminant(l, 0); + var@7 := move l; + var@6 := move split_list(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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> test1::List::Cons { 0 = 0: i32; 1 = proj_comp {} (s@0 : std::boxed::Box>); } ; + var@2 -> ⊥ : std::boxed::Box> ; + var@3 -> ⊥ : test1::List ; + hd -> ⊥ : i32 ; + tl -> ⊥ : test1::List ; + var@6 -> ⊥ : (i32, test1::List) ; + var@7 -> ⊥ : test1::List ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : bool ; + var@10 -> ⊥ : i32 ; +} + + + +[Debug] +**About to evaluate statement**: [ + set_discriminant(l, 0) +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> test1::List::Cons { 0 = 0: i32; 1 = proj_comp {} (s@0 : std::boxed::Box>); } ; + var@2 -> ⊥ : std::boxed::Box> ; + var@3 -> ⊥ : test1::List ; + hd -> ⊥ : i32 ; + tl -> ⊥ : test1::List ; + var@6 -> ⊥ : (i32, test1::List) ; + var@7 -> ⊥ : test1::List ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : bool ; + var@10 -> ⊥ : i32 ; +} + + + +[Debug] +**About to evaluate statement**: [ + var@7 := move l; + var@6 := move split_list(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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> test1::List::Cons { 0 = 0: i32; 1 = proj_comp {} (s@0 : std::boxed::Box>); } ; + var@2 -> ⊥ : std::boxed::Box> ; + var@3 -> ⊥ : test1::List ; + hd -> ⊥ : i32 ; + tl -> ⊥ : test1::List ; + var@6 -> ⊥ : (i32, test1::List) ; + var@7 -> ⊥ : test1::List ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : bool ; + var@10 -> ⊥ : i32 ; +} + + + +[Debug] +**About to evaluate statement**: [ + var@7 := move l +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> test1::List::Cons { 0 = 0: i32; 1 = proj_comp {} (s@0 : std::boxed::Box>); } ; + var@2 -> ⊥ : std::boxed::Box> ; + var@3 -> ⊥ : test1::List ; + hd -> ⊥ : i32 ; + tl -> ⊥ : test1::List ; + var@6 -> ⊥ : (i32, test1::List) ; + var@7 -> ⊥ : test1::List ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : bool ; + var@10 -> ⊥ : i32 ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> test1::List::Cons { 0 = 0: i32; 1 = proj_comp {} (s@0 : std::boxed::Box>); } ; + var@2 -> ⊥ : std::boxed::Box> ; + var@3 -> ⊥ : test1::List ; + hd -> ⊥ : i32 ; + tl -> ⊥ : test1::List ; + var@6 -> ⊥ : (i32, test1::List) ; + var@7 -> ⊥ : test1::List ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : bool ; + var@10 -> ⊥ : i32 ; +} + + +- op: +move l + +[Debug] Value to move: +test1::List::Cons { 0 = 0: i32; 1 = proj_comp {} (s@0 : std::boxed::Box>); } +[Debug] +**About to evaluate statement**: [ + var@6 := move split_list(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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List ; + var@2 -> ⊥ : std::boxed::Box> ; + var@3 -> ⊥ : test1::List ; + hd -> ⊥ : i32 ; + tl -> ⊥ : test1::List ; + var@6 -> ⊥ : (i32, test1::List) ; + var@7 -> test1::List::Cons { 0 = 0: i32; 1 = proj_comp {} (s@0 : std::boxed::Box>); } ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : bool ; + var@10 -> ⊥ : i32 ; +} + + + +[Debug] +**About to evaluate statement**: [ + var@6 := move split_list(move var@7) +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List ; + var@2 -> ⊥ : std::boxed::Box> ; + var@3 -> ⊥ : test1::List ; + hd -> ⊥ : i32 ; + tl -> ⊥ : test1::List ; + var@6 -> ⊥ : (i32, test1::List) ; + var@7 -> test1::List::Cons { 0 = 0: i32; 1 = proj_comp {} (s@0 : std::boxed::Box>); } ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : bool ; + var@10 -> ⊥ : i32 ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List ; + var@2 -> ⊥ : std::boxed::Box> ; + var@3 -> ⊥ : test1::List ; + hd -> ⊥ : i32 ; + tl -> ⊥ : test1::List ; + var@6 -> ⊥ : (i32, test1::List) ; + var@7 -> test1::List::Cons { 0 = 0: i32; 1 = proj_comp {} (s@0 : std::boxed::Box>); } ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : bool ; + var@10 -> ⊥ : i32 ; +} + + +- op: +move var@7 + +[Debug] Value to move: +test1::List::Cons { 0 = 0: i32; 1 = proj_comp {} (s@0 : std::boxed::Box>); } +[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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List ; + var@2 -> ⊥ : std::boxed::Box> ; + var@3 -> ⊥ : test1::List ; + hd -> ⊥ : i32 ; + tl -> ⊥ : test1::List ; + var@6 -> proj_comp {} (s@1 : (i32, test1::List)) ; + var@7 -> ⊥ : test1::List ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : bool ; + var@10 -> ⊥ : i32 ; +} + + + +[Debug] +**About to evaluate statement**: [ + hd := copy (var@6).0 +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List ; + var@2 -> ⊥ : std::boxed::Box> ; + var@3 -> ⊥ : test1::List ; + hd -> ⊥ : i32 ; + tl -> ⊥ : test1::List ; + var@6 -> proj_comp {} (s@1 : (i32, test1::List)) ; + var@7 -> ⊥ : test1::List ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : bool ; + var@10 -> ⊥ : i32 ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List ; + var@2 -> ⊥ : std::boxed::Box> ; + var@3 -> ⊥ : test1::List ; + hd -> ⊥ : i32 ; + tl -> ⊥ : test1::List ; + var@6 -> proj_comp {} (s@1 : (i32, test1::List)) ; + var@7 -> ⊥ : test1::List ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : bool ; + var@10 -> ⊥ : i32 ; +} + + +- op: +copy (var@6).0 + +[Debug] Value to copy: +proj_comp {} (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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List ; + var@2 -> ⊥ : std::boxed::Box> ; + var@3 -> ⊥ : test1::List ; + hd -> proj_comp {} (s@2 : i32) ; + tl -> ⊥ : test1::List ; + var@6 -> (proj_comp {} (s@2 : i32), proj_comp {} (s@3 : test1::List)) ; + var@7 -> ⊥ : test1::List ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : bool ; + var@10 -> ⊥ : i32 ; +} + + + +[Debug] +**About to evaluate statement**: [ + tl := move (var@6).1 +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List ; + var@2 -> ⊥ : std::boxed::Box> ; + var@3 -> ⊥ : test1::List ; + hd -> proj_comp {} (s@2 : i32) ; + tl -> ⊥ : test1::List ; + var@6 -> (proj_comp {} (s@2 : i32), proj_comp {} (s@3 : test1::List)) ; + var@7 -> ⊥ : test1::List ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : bool ; + var@10 -> ⊥ : i32 ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List ; + var@2 -> ⊥ : std::boxed::Box> ; + var@3 -> ⊥ : test1::List ; + hd -> proj_comp {} (s@2 : i32) ; + tl -> ⊥ : test1::List ; + var@6 -> (proj_comp {} (s@2 : i32), proj_comp {} (s@3 : test1::List)) ; + var@7 -> ⊥ : test1::List ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : bool ; + var@10 -> ⊥ : i32 ; +} + + +- op: +move (var@6).1 + +[Debug] Value to move: +proj_comp {} (s@3 : test1::List) +[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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List ; + var@2 -> ⊥ : std::boxed::Box> ; + var@3 -> ⊥ : test1::List ; + hd -> proj_comp {} (s@2 : i32) ; + tl -> proj_comp {} (s@3 : test1::List) ; + var@6 -> (proj_comp {} (s@2 : i32), ⊥ : test1::List) ; + var@7 -> ⊥ : test1::List ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : bool ; + var@10 -> ⊥ : i32 ; +} + + + +[Debug] +**About to evaluate statement**: [ + var@10 := copy hd +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List ; + var@2 -> ⊥ : std::boxed::Box> ; + var@3 -> ⊥ : test1::List ; + hd -> proj_comp {} (s@2 : i32) ; + tl -> proj_comp {} (s@3 : test1::List) ; + var@6 -> (proj_comp {} (s@2 : i32), ⊥ : test1::List) ; + var@7 -> ⊥ : test1::List ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : bool ; + var@10 -> ⊥ : i32 ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List ; + var@2 -> ⊥ : std::boxed::Box> ; + var@3 -> ⊥ : test1::List ; + hd -> proj_comp {} (s@2 : i32) ; + tl -> proj_comp {} (s@3 : test1::List) ; + var@6 -> (proj_comp {} (s@2 : i32), ⊥ : test1::List) ; + var@7 -> ⊥ : test1::List ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : bool ; + var@10 -> ⊥ : i32 ; +} + + +- op: +copy hd + +[Debug] Value to copy: +proj_comp {} (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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List ; + var@2 -> ⊥ : std::boxed::Box> ; + var@3 -> ⊥ : test1::List ; + hd -> proj_comp {} (s@2 : i32) ; + tl -> proj_comp {} (s@3 : test1::List) ; + var@6 -> (proj_comp {} (s@2 : i32), ⊥ : test1::List) ; + var@7 -> ⊥ : test1::List ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : bool ; + var@10 -> proj_comp {} (s@2 : i32) ; +} + + + +[Debug] +**About to evaluate statement**: [ + var@9 := move var@10 == 0: i32 +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List ; + var@2 -> ⊥ : std::boxed::Box> ; + var@3 -> ⊥ : test1::List ; + hd -> proj_comp {} (s@2 : i32) ; + tl -> proj_comp {} (s@3 : test1::List) ; + var@6 -> (proj_comp {} (s@2 : i32), ⊥ : test1::List) ; + var@7 -> ⊥ : test1::List ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : bool ; + var@10 -> proj_comp {} (s@2 : i32) ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List ; + var@2 -> ⊥ : std::boxed::Box> ; + var@3 -> ⊥ : test1::List ; + hd -> proj_comp {} (s@2 : i32) ; + tl -> proj_comp {} (s@3 : test1::List) ; + var@6 -> (proj_comp {} (s@2 : i32), ⊥ : test1::List) ; + var@7 -> ⊥ : test1::List ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : bool ; + var@10 -> proj_comp {} (s@2 : i32) ; +} + + +- op: +move var@10 + +[Debug] Value to move: +proj_comp {} (s@2 : i32) +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List ; + var@2 -> ⊥ : std::boxed::Box> ; + var@3 -> ⊥ : test1::List ; + hd -> proj_comp {} (s@2 : i32) ; + tl -> proj_comp {} (s@3 : test1::List) ; + var@6 -> (proj_comp {} (s@2 : i32), ⊥ : test1::List) ; + var@7 -> ⊥ : test1::List ; + 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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List ; + var@2 -> ⊥ : std::boxed::Box> ; + var@3 -> ⊥ : test1::List ; + hd -> proj_comp {} (s@2 : i32) ; + tl -> proj_comp {} (s@3 : test1::List) ; + var@6 -> (proj_comp {} (s@2 : i32), ⊥ : test1::List) ; + var@7 -> ⊥ : test1::List ; + var@8 -> ⊥ : bool ; + var@9 -> proj_comp {} (s@4 : bool) ; + var@10 -> ⊥ : i32 ; +} + + + +[Debug] +**About to evaluate statement**: [ + var@8 := ¬ move var@9 +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List ; + var@2 -> ⊥ : std::boxed::Box> ; + var@3 -> ⊥ : test1::List ; + hd -> proj_comp {} (s@2 : i32) ; + tl -> proj_comp {} (s@3 : test1::List) ; + var@6 -> (proj_comp {} (s@2 : i32), ⊥ : test1::List) ; + var@7 -> ⊥ : test1::List ; + var@8 -> ⊥ : bool ; + var@9 -> proj_comp {} (s@4 : bool) ; + var@10 -> ⊥ : i32 ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List ; + var@2 -> ⊥ : std::boxed::Box> ; + var@3 -> ⊥ : test1::List ; + hd -> proj_comp {} (s@2 : i32) ; + tl -> proj_comp {} (s@3 : test1::List) ; + var@6 -> (proj_comp {} (s@2 : i32), ⊥ : test1::List) ; + var@7 -> ⊥ : test1::List ; + var@8 -> ⊥ : bool ; + var@9 -> proj_comp {} (s@4 : bool) ; + var@10 -> ⊥ : i32 ; +} + + +- op: +move var@9 + +[Debug] Value to move: +proj_comp {} (s@4 : bool) +[Debug] +**About to evaluate statement**: [ + assert(¬move var@8); + drop(tl); + return +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List ; + var@2 -> ⊥ : std::boxed::Box> ; + var@3 -> ⊥ : test1::List ; + hd -> proj_comp {} (s@2 : i32) ; + tl -> proj_comp {} (s@3 : test1::List) ; + var@6 -> (proj_comp {} (s@2 : i32), ⊥ : test1::List) ; + var@7 -> ⊥ : test1::List ; + var@8 -> proj_comp {} (s@5 : bool) ; + var@9 -> ⊥ : bool ; + var@10 -> ⊥ : i32 ; +} + + + +[Debug] +**About to evaluate statement**: [ + assert(¬move var@8) +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List ; + var@2 -> ⊥ : std::boxed::Box> ; + var@3 -> ⊥ : test1::List ; + hd -> proj_comp {} (s@2 : i32) ; + tl -> proj_comp {} (s@3 : test1::List) ; + var@6 -> (proj_comp {} (s@2 : i32), ⊥ : test1::List) ; + var@7 -> ⊥ : test1::List ; + var@8 -> proj_comp {} (s@5 : bool) ; + var@9 -> ⊥ : bool ; + var@10 -> ⊥ : i32 ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List ; + var@2 -> ⊥ : std::boxed::Box> ; + var@3 -> ⊥ : test1::List ; + hd -> proj_comp {} (s@2 : i32) ; + tl -> proj_comp {} (s@3 : test1::List) ; + var@6 -> (proj_comp {} (s@2 : i32), ⊥ : test1::List) ; + var@7 -> ⊥ : test1::List ; + 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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List ; + var@2 -> ⊥ : std::boxed::Box> ; + var@3 -> ⊥ : test1::List ; + hd -> proj_comp {} (s@2 : i32) ; + tl -> proj_comp {} (s@3 : test1::List) ; + var@6 -> (proj_comp {} (s@2 : i32), ⊥ : test1::List) ; + var@7 -> ⊥ : test1::List ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : bool ; + var@10 -> ⊥ : i32 ; +} + + + +[Debug] +**About to evaluate statement**: [ + drop(tl) +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List ; + var@2 -> ⊥ : std::boxed::Box> ; + var@3 -> ⊥ : test1::List ; + hd -> proj_comp {} (s@2 : i32) ; + tl -> proj_comp {} (s@3 : test1::List) ; + var@6 -> (proj_comp {} (s@2 : i32), ⊥ : test1::List) ; + var@7 -> ⊥ : test1::List ; + var@8 -> ⊥ : bool ; + var@9 -> ⊥ : bool ; + var@10 -> ⊥ : i32 ; +} + + + +[Debug] drop_value: place: tl +[Debug] +**About to evaluate statement**: [ + return +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + l -> ⊥ : test1::List ; + var@2 -> ⊥ : std::boxed::Box> ; + var@3 -> ⊥ : test1::List ; + hd -> proj_comp {} (s@2 : i32) ; + tl -> ⊥ : test1::List ; + var@6 -> (proj_comp {} (s@2 : i32), ⊥ : test1::List) ; + var@7 -> ⊥ : test1::List ; + 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**: +# 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 -> proj_comp {} (s@0 : bool) ; + x -> proj_comp {} (s@1 : &r@0 mut (T)) ; + y -> proj_comp {} (s@2 : &r@0 mut (T)) ; + var@4 -> ⊥ : bool ; +} + + + +[Debug] +**About to evaluate statement**: [ + var@4 := copy b +] + +**Context**: +# 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 -> proj_comp {} (s@0 : bool) ; + x -> proj_comp {} (s@1 : &r@0 mut (T)) ; + y -> proj_comp {} (s@2 : &r@0 mut (T)) ; + var@4 -> ⊥ : bool ; +} + + + +[Debug] eval_operand: +- ctx: +# 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 -> proj_comp {} (s@0 : bool) ; + x -> proj_comp {} (s@1 : &r@0 mut (T)) ; + y -> proj_comp {} (s@2 : &r@0 mut (T)) ; + var@4 -> ⊥ : bool ; +} + + +- op: +copy b + +[Debug] Value to copy: +proj_comp {} (s@0 : bool) +[Debug] +**About to evaluate statement**: [ + if (move var@4) { + var@0 := &mut *(x) + } + else { + var@0 := move y + }; + return +] + +**Context**: +# 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 -> proj_comp {} (s@0 : bool) ; + x -> proj_comp {} (s@1 : &r@0 mut (T)) ; + y -> proj_comp {} (s@2 : &r@0 mut (T)) ; + var@4 -> proj_comp {} (s@0 : bool) ; +} + + + +[Debug] +**About to evaluate statement**: [ + if (move var@4) { + var@0 := &mut *(x) + } + else { + var@0 := move y + } +] + +**Context**: +# 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 -> proj_comp {} (s@0 : bool) ; + x -> proj_comp {} (s@1 : &r@0 mut (T)) ; + y -> proj_comp {} (s@2 : &r@0 mut (T)) ; + var@4 -> proj_comp {} (s@0 : bool) ; +} + + + +[Debug] eval_operand: +- ctx: +# 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 -> proj_comp {} (s@1 : &r@0 mut (T)) ; + y -> proj_comp {} (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**: +# 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 -> proj_comp {} (s@1 : &r@0 mut (T)) ; + y -> proj_comp {} (s@2 : &r@0 mut (T)) ; + var@4 -> ⊥ : bool ; +} + + + +[Debug] eval_operand: +- ctx: +# 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 -> proj_comp {} (s@1 : &r@0 mut (T)) ; + y -> proj_comp {} (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**: +# 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 -> proj_comp {} (s@1 : &r@0 mut (T)) ; + y -> proj_comp {} (s@2 : &r@0 mut (T)) ; + var@4 -> ⊥ : bool ; +} + + + +[Debug] eval_operand: +- ctx: +# 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 -> proj_comp {} (s@1 : &r@0 mut (T)) ; + y -> proj_comp {} (s@2 : &r@0 mut (T)) ; + var@4 -> ⊥ : bool ; +} + + +- op: +move y + +[Debug] Value to move: +proj_comp {} (s@2 : &r@0 mut (T)) +[Debug] +**About to evaluate statement**: [ + return +] + +**Context**: +# 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 (proj_comp {} (s@3 : T)) ; + b -> true ; + x -> &mut@0 (⌊mut@1⌋) ; + y -> proj_comp {} (s@2 : &r@0 mut (T)) ; + var@4 -> ⊥ : bool ; +} + + + +[Debug] +**About to evaluate statement**: [ + return +] + +**Context**: +# 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 -> proj_comp {} (s@2 : &r@0 mut (T)) ; + b -> false ; + x -> proj_comp {} (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(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**: +# 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**: +# 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: +# 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(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**: +# 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**: +# 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: +# 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(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**: +# 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**: +# 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(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**: +# 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**: +# 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(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**: +# 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**: +# 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(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**: +# 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**: +# 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(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**: +# 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(true, move var@4, move var@6) +] + +**Context**: +# 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: +# 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: +# 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: +# 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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + y -> ⌊mut@2⌋ ; + z -> proj_comp {} (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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + y -> ⌊mut@2⌋ ; + z -> proj_comp {} (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: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + y -> ⌊mut@2⌋ ; + z -> proj_comp {} (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: +proj_comp {} (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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + y -> ⌊mut@2⌋ ; + z -> &mut@4 (proj_comp {} (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 -> proj_comp {} (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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + y -> ⌊mut@2⌋ ; + z -> &mut@4 (proj_comp {} (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 -> proj_comp {} (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: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + y -> ⌊mut@2⌋ ; + z -> &mut@4 (proj_comp {} (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 -> proj_comp {} (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: +proj_comp {} (s@1 : i32) +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + y -> ⌊mut@2⌋ ; + z -> &mut@4 (proj_comp {} (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 -> proj_comp {} (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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + y -> ⌊mut@2⌋ ; + z -> &mut@4 (proj_comp {} (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 -> proj_comp {} (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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + y -> ⌊mut@2⌋ ; + z -> &mut@4 (proj_comp {} (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 -> proj_comp {} (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: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + y -> ⌊mut@2⌋ ; + z -> &mut@4 (proj_comp {} (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 -> proj_comp {} (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: +proj_comp {} (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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + y -> ⌊mut@2⌋ ; + z -> &mut@4 (proj_comp {} (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 -> proj_comp {} (s@1 : i32) ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> proj_comp {} (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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + y -> ⌊mut@2⌋ ; + z -> &mut@4 (proj_comp {} (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 -> proj_comp {} (s@1 : i32) ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> proj_comp {} (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: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + y -> ⌊mut@2⌋ ; + z -> &mut@4 (proj_comp {} (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 -> proj_comp {} (s@1 : i32) ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> proj_comp {} (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: +proj_comp {} (s@2 : i32) +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + y -> ⌊mut@2⌋ ; + z -> &mut@4 (proj_comp {} (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 -> proj_comp {} (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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + y -> ⌊mut@2⌋ ; + z -> &mut@4 (proj_comp {} (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 -> proj_comp {} (s@1 : i32) ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> ⊥ : bool ; + var@11 -> proj_comp {} (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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + y -> ⌊mut@2⌋ ; + z -> &mut@4 (proj_comp {} (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 -> proj_comp {} (s@1 : i32) ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> ⊥ : bool ; + var@11 -> proj_comp {} (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: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + y -> ⌊mut@2⌋ ; + z -> &mut@4 (proj_comp {} (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 -> proj_comp {} (s@1 : i32) ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> ⊥ : bool ; + var@11 -> proj_comp {} (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: +proj_comp {} (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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + y -> ⌊mut@2⌋ ; + z -> &mut@4 (proj_comp {} (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 -> proj_comp {} (s@1 : i32) ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> proj_comp {} (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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + y -> ⌊mut@2⌋ ; + z -> &mut@4 (proj_comp {} (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 -> proj_comp {} (s@1 : i32) ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> proj_comp {} (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: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + y -> ⌊mut@2⌋ ; + z -> &mut@4 (proj_comp {} (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 -> proj_comp {} (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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + y -> ⌊mut@2⌋ ; + z -> &mut@4 (proj_comp {} (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 -> proj_comp {} (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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + y -> ⌊mut@2⌋ ; + z -> &mut@4 (proj_comp {} (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 -> proj_comp {} (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: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> ⌊mut@0⌋ ; + y -> ⌊mut@2⌋ ; + z -> &mut@4 (proj_comp {} (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 -> proj_comp {} (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: +proj_comp {0} (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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> proj_comp {0} (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 (proj_comp {0} (s@6 : i32)) ; + var@8 -> proj_comp {0} (s@1 : i32) ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> proj_comp {0} (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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> proj_comp {0} (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 (proj_comp {0} (s@6 : i32)) ; + var@8 -> proj_comp {0} (s@1 : i32) ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> proj_comp {0} (s@5 : i32) ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> proj_comp {0} (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 (proj_comp {0} (s@6 : i32)) ; + var@8 -> proj_comp {0} (s@1 : i32) ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> ⊥ : bool ; + var@15 -> proj_comp {0} (s@5 : i32) ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + +- op: +move var@15 + +[Debug] Value to move: +proj_comp {0} (s@5 : i32) +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> proj_comp {0} (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 (proj_comp {0} (s@6 : i32)) ; + var@8 -> proj_comp {0} (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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> proj_comp {0} (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 (proj_comp {0} (s@6 : i32)) ; + var@8 -> proj_comp {0} (s@1 : i32) ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> proj_comp {} (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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> proj_comp {0} (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 (proj_comp {0} (s@6 : i32)) ; + var@8 -> proj_comp {0} (s@1 : i32) ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> proj_comp {} (s@7 : bool) ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> proj_comp {0} (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 (proj_comp {0} (s@6 : i32)) ; + var@8 -> proj_comp {0} (s@1 : i32) ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> ⊥ : bool ; + var@14 -> proj_comp {} (s@7 : bool) ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + +- op: +move var@14 + +[Debug] Value to move: +proj_comp {} (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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> proj_comp {0} (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 (proj_comp {0} (s@6 : i32)) ; + var@8 -> proj_comp {0} (s@1 : i32) ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> proj_comp {} (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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> proj_comp {0} (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 (proj_comp {0} (s@6 : i32)) ; + var@8 -> proj_comp {0} (s@1 : i32) ; + var@9 -> ⊥ : (i32, bool) ; + var@10 -> ⊥ : bool ; + var@11 -> ⊥ : bool ; + var@12 -> ⊥ : i32 ; + var@13 -> proj_comp {} (s@8 : bool) ; + var@14 -> ⊥ : bool ; + var@15 -> ⊥ : i32 ; + var@16 -> ⊥ : bool ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> proj_comp {0} (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 (proj_comp {0} (s@6 : i32)) ; + var@8 -> proj_comp {0} (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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> proj_comp {0} (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 (proj_comp {0} (s@6 : i32)) ; + var@8 -> proj_comp {0} (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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> proj_comp {0} (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 (proj_comp {0} (s@6 : i32)) ; + var@8 -> proj_comp {0} (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: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> proj_comp {0} (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 (proj_comp {0} (s@6 : i32)) ; + var@8 -> proj_comp {0} (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: +proj_comp {0} (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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> proj_comp {0} (s@5 : i32) ; + y -> proj_comp {0} (s@6 : i32) ; + z -> ⊥ : &'_ mut (i32) ; + var@4 -> ⊥ : &'_ mut (i32) ; + var@5 -> ⊥ : &'_ mut (i32) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : &'_ mut (i32) ; + var@8 -> proj_comp {0} (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 -> proj_comp {0} (s@6 : i32) ; +} + + + +[Debug] +**About to evaluate statement**: [ + var@17 := move var@18 == 0: i32 +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> proj_comp {0} (s@5 : i32) ; + y -> proj_comp {0} (s@6 : i32) ; + z -> ⊥ : &'_ mut (i32) ; + var@4 -> ⊥ : &'_ mut (i32) ; + var@5 -> ⊥ : &'_ mut (i32) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : &'_ mut (i32) ; + var@8 -> proj_comp {0} (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 -> proj_comp {0} (s@6 : i32) ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> proj_comp {0} (s@5 : i32) ; + y -> proj_comp {0} (s@6 : i32) ; + z -> ⊥ : &'_ mut (i32) ; + var@4 -> ⊥ : &'_ mut (i32) ; + var@5 -> ⊥ : &'_ mut (i32) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : &'_ mut (i32) ; + var@8 -> proj_comp {0} (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 -> proj_comp {0} (s@6 : i32) ; +} + + +- op: +move var@18 + +[Debug] Value to move: +proj_comp {0} (s@6 : i32) +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> proj_comp {0} (s@5 : i32) ; + y -> proj_comp {0} (s@6 : i32) ; + z -> ⊥ : &'_ mut (i32) ; + var@4 -> ⊥ : &'_ mut (i32) ; + var@5 -> ⊥ : &'_ mut (i32) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : &'_ mut (i32) ; + var@8 -> proj_comp {0} (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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> proj_comp {0} (s@5 : i32) ; + y -> proj_comp {0} (s@6 : i32) ; + z -> ⊥ : &'_ mut (i32) ; + var@4 -> ⊥ : &'_ mut (i32) ; + var@5 -> ⊥ : &'_ mut (i32) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : &'_ mut (i32) ; + var@8 -> proj_comp {0} (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 -> proj_comp {} (s@9 : bool) ; + var@18 -> ⊥ : i32 ; +} + + + +[Debug] +**About to evaluate statement**: [ + var@16 := ¬ move var@17 +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> proj_comp {0} (s@5 : i32) ; + y -> proj_comp {0} (s@6 : i32) ; + z -> ⊥ : &'_ mut (i32) ; + var@4 -> ⊥ : &'_ mut (i32) ; + var@5 -> ⊥ : &'_ mut (i32) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : &'_ mut (i32) ; + var@8 -> proj_comp {0} (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 -> proj_comp {} (s@9 : bool) ; + var@18 -> ⊥ : i32 ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> proj_comp {0} (s@5 : i32) ; + y -> proj_comp {0} (s@6 : i32) ; + z -> ⊥ : &'_ mut (i32) ; + var@4 -> ⊥ : &'_ mut (i32) ; + var@5 -> ⊥ : &'_ mut (i32) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : &'_ mut (i32) ; + var@8 -> proj_comp {0} (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 -> proj_comp {} (s@9 : bool) ; + var@18 -> ⊥ : i32 ; +} + + +- op: +move var@17 + +[Debug] Value to move: +proj_comp {} (s@9 : bool) +[Debug] +**About to evaluate statement**: [ + assert(¬move var@16); + return +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> proj_comp {0} (s@5 : i32) ; + y -> proj_comp {0} (s@6 : i32) ; + z -> ⊥ : &'_ mut (i32) ; + var@4 -> ⊥ : &'_ mut (i32) ; + var@5 -> ⊥ : &'_ mut (i32) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : &'_ mut (i32) ; + var@8 -> proj_comp {0} (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 -> proj_comp {} (s@10 : bool) ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[Debug] +**About to evaluate statement**: [ + assert(¬move var@16) +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> proj_comp {0} (s@5 : i32) ; + y -> proj_comp {0} (s@6 : i32) ; + z -> ⊥ : &'_ mut (i32) ; + var@4 -> ⊥ : &'_ mut (i32) ; + var@5 -> ⊥ : &'_ mut (i32) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : &'_ mut (i32) ; + var@8 -> proj_comp {0} (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 -> proj_comp {} (s@10 : bool) ; + var@17 -> ⊥ : bool ; + var@18 -> ⊥ : i32 ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> proj_comp {0} (s@5 : i32) ; + y -> proj_comp {0} (s@6 : i32) ; + z -> ⊥ : &'_ mut (i32) ; + var@4 -> ⊥ : &'_ mut (i32) ; + var@5 -> ⊥ : &'_ mut (i32) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : &'_ mut (i32) ; + var@8 -> proj_comp {0} (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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : () ; + x -> proj_comp {0} (s@5 : i32) ; + y -> proj_comp {0} (s@6 : i32) ; + z -> ⊥ : &'_ mut (i32) ; + var@4 -> ⊥ : &'_ mut (i32) ; + var@5 -> ⊥ : &'_ mut (i32) ; + var@6 -> ⊥ : &'_ mut (i32) ; + var@7 -> ⊥ : &'_ mut (i32) ; + var@8 -> proj_comp {0} (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**: +# 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 -> proj_comp {} (s@0 : &r@0 mut (&r@1 mut (T))) ; + var@2 -> ⊥ : &'_ mut (&'_ mut (T)) ; +} + + + +[Debug] +**About to evaluate statement**: [ + var@2 := &mut *(x) +] + +**Context**: +# 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 -> proj_comp {} (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**: +# 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 (proj_comp {} (s@1 : &r@1 mut (T))) ; +} + + + +[Debug] +**About to evaluate statement**: [ + var@0 := &mut *(var@2) +] + +**Context**: +# 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 (proj_comp {} (s@1 : &r@1 mut (T))) ; +} + + + +[Debug] +**About to evaluate statement**: [ + return +] + +**Context**: +# 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 (proj_comp {} (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**: +# 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 -> proj_comp {} (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**: +# 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 -> proj_comp {} (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**: +# 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 (proj_comp {} (s@1 : (&r@0 mut (T), u32))) ; +} + + + +[Debug] +**About to evaluate statement**: [ + var@0 := &mut *(var@2) +] + +**Context**: +# 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 (proj_comp {} (s@1 : (&r@0 mut (T), u32))) ; +} + + + +[Debug] +**About to evaluate statement**: [ + return +] + +**Context**: +# 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 (proj_comp {} (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(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**: +# 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**: +# 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: +# 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(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**: +# 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**: +# 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(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**: +# 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**: +# 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: +# 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(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**: +# 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**: +# 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: +# 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(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**: +# 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**: +# 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: +# 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(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**: +# 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**: +# 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(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**: +# 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**: +# 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(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**: +# 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(move var@7) +] + +**Context**: +# 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: +# 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 = ; + field_values = + [{ Values.value = + (Values.Borrow + (Values.MutBorrow (, + { 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**: +# 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 -> proj_comp {} (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**: +# 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 -> proj_comp {} (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: +# 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 -> proj_comp {} (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**: +# 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 -> proj_comp {} (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**: +# 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 -> proj_comp {} (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**: +# 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 -> proj_comp {} (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**: +# 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 -> proj_comp {} (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**: +# 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 -> proj_comp {} (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**: +# 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 -> proj_comp {} (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: +# 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 -> proj_comp {} (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**: +# 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), proj_comp {} (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**: +# 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), proj_comp {} (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: +# 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), proj_comp {} (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**: +# 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**: +# 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 -> proj_comp {} (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**: +# 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 -> proj_comp {} (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**: +# 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 (proj_comp {} (s@1 : &r@0 mut ((&r@0 mut (T), u32)))) ; +} + + + +[Debug] +**About to evaluate statement**: [ + var@0 := &mut *(var@2) +] + +**Context**: +# 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 (proj_comp {} (s@1 : &r@0 mut ((&r@0 mut (T), u32)))) ; +} + + + +[Debug] +**About to evaluate statement**: [ + return +] + +**Context**: +# 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 (proj_comp {} (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**: +# 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 -> proj_comp {} (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**: +# 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 -> proj_comp {} (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**: +# 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 (proj_comp {} (s@1 : &r@0 mut (&r@0 mut (u32)))) ; +} + + + +[Debug] +**About to evaluate statement**: [ + var@0 := &mut *(var@2) +] + +**Context**: +# 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 (proj_comp {} (s@1 : &r@0 mut (&r@0 mut (u32)))) ; +} + + + +[Debug] +**About to evaluate statement**: [ + return +] + +**Context**: +# 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 (proj_comp {} (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**: +# 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 -> proj_comp {} (s@0 : &r@0 mut (&r@1 (u32))) ; + _y -> proj_comp {} (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**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : &'_ (u32) ; + x -> proj_comp {} (s@0 : &'static (u32)) ; +} + + + +[Debug] +**About to evaluate statement**: [ + var@0 := copy x +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : &'_ (u32) ; + x -> proj_comp {} (s@0 : &'static (u32)) ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : &'_ (u32) ; + x -> proj_comp {} (s@0 : &'static (u32)) ; +} + + +- op: +copy x + +[Debug] Value to copy: +proj_comp {} (s@0 : &'static (u32)) +[Debug] +**About to evaluate statement**: [ + return +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> proj_comp {} (s@0 : &'static (u32)) ; + x -> proj_comp {} (s@0 : &'static (u32)) ; +} + + + +[Debug] test_function_symbolic: test_char +[Debug] +**About to evaluate statement**: [ + var@0 := a; + return +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : char ; +} + + + +[Debug] +**About to evaluate statement**: [ + var@0 := a +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : char ; +} + + + +[Debug] eval_operand: +- ctx: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : char ; +} + + +- op: +a + +[Debug] +**About to evaluate statement**: [ + return +] + +**Context**: +# 1 frame(s) + +# Frame 0: +{ + var@0 -> a ; +} + + -- cgit v1.2.3