From 8d39d5a50141ba5addac685be2653da7a9f95c8d Mon Sep 17 00:00:00 2001 From: Son Ho Date: Wed, 12 Jan 2022 20:31:23 +0100 Subject: Regenerate the trace --- tests/trace_reference.txt | 43843 +++++++++++++++----------------------------- 1 file changed, 14560 insertions(+), 29283 deletions(-) diff --git a/tests/trace_reference.txt b/tests/trace_reference.txt index 3e0483f8..acf83e51 100644 --- a/tests/trace_reference.txt +++ b/tests/trace_reference.txt @@ -969,88 +969,6 @@ fn id_mut_mut_test1() { return } -fn id_mut_mut_test2() { - var@0 : (); - x : i32; - px : &'_ mut (i32); - ppx : &'_ mut (&'_ mut (i32)); - ppy : &'_ mut (&'_ mut (i32)); - var@5 : &'_ mut (&'_ mut (i32)); - y : i32; - py : &'_ mut (i32); - var@8 : &'_ mut (i32); - var@9 : bool; - var@10 : bool; - var@11 : i32; - var@12 : bool; - var@13 : bool; - var@14 : i32; - var@15 : bool; - var@16 : bool; - var@17 : i32; - - x := 0: i32; - px := &mut x; - ppx := &mut px; - var@5 := &two-phase *(ppx); - ppy := move id_mut_mut(move var@5); - *(*(ppy)) := 1: i32; - y := 2: i32; - py := &mut y; - var@8 := &mut *(py); - *(ppy) := move var@8; - var@11 := copy *(px); - var@10 := move var@11 == 2: i32; - var@9 := ¬ move var@10; - assert(¬move var@9); - *(px) := 3: i32; - var@14 := copy x; - var@13 := move var@14 == 1: i32; - var@12 := ¬ move var@13; - assert(¬move var@12); - var@17 := copy y; - var@16 := move var@17 == 3: i32; - var@15 := ¬ move var@16; - assert(¬move var@15); - return -} - -fn id_mut_mut_test3() { - var@0 : (); - x : i32; - px : &'_ mut (i32); - ppx : &'_ mut (&'_ mut (i32)); - ppy : &'_ mut (&'_ mut (i32)); - var@5 : &'_ mut (&'_ mut (i32)); - ppz : &'_ mut (&'_ mut (i32)); - var@7 : &'_ mut (&'_ mut (i32)); - var@8 : bool; - var@9 : bool; - var@10 : i32; - var@11 : bool; - var@12 : bool; - var@13 : i32; - - x := 0: i32; - px := &mut x; - ppx := &mut px; - var@5 := &two-phase *(ppx); - ppy := move id_mut_mut(move var@5); - *(*(ppy)) := 1: i32; - var@7 := &two-phase *(ppy); - ppz := move id_mut_mut(move var@7); - *(*(ppz)) := 2: i32; - var@10 := copy *(px); - var@9 := move var@10 == 2: i32; - var@8 := ¬ move var@9; - assert(¬move var@8); - var@13 := copy x; - var@12 := move var@13 == 2: i32; - var@11 := ¬ move var@12; - assert(¬move var@11); - return -} - [Debug] test_unit_function: test2 [Debug] **About to evaluate statement**: [ @@ -109595,32 +109513,12 @@ move var@9 -[Debug] test_unit_function: id_mut_mut_test2 +[Debug] test_function_symbolic: add_test [Debug] **About to evaluate statement**: [ - x := 0: i32; - px := &mut x; - ppx := &mut px; - var@5 := &two-phase *(ppx); - ppy := move id_mut_mut(move var@5); - *(*(ppy)) := 1: i32; - y := 2: i32; - py := &mut y; - var@8 := &mut *(py); - *(ppy) := move var@8; - var@11 := copy *(px); - var@10 := move var@11 == 2: i32; - var@9 := ¬ move var@10; - assert(¬move var@9); - *(px) := 3: i32; - var@14 := copy x; - var@13 := move var@14 == 1: i32; - var@12 := ¬ move var@13; - assert(¬move var@12); - var@17 := copy y; - var@16 := move var@17 == 3: i32; - var@15 := ¬ move var@16; - assert(¬move var@15); + var@3 := copy x; + var@4 := copy y; + var@0 := copy var@3 + copy var@4; return ] @@ -109630,31 +109528,19 @@ move var@9 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> ⊥ : i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⊥ : i32 ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; + Some (var@0) -> ⊥ : u32 ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (var@3) -> ⊥ : u32 ; + Some (var@4) -> ⊥ : u32 ; + Some (var@5) -> ⊥ : (u32, bool) ; } [Debug] **About to evaluate statement**: [ - x := 0: i32 + var@3 := copy x ] **Context**: @@ -109663,24 +109549,12 @@ move var@9 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> ⊥ : i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⊥ : i32 ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; + Some (var@0) -> ⊥ : u32 ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (var@3) -> ⊥ : u32 ; + Some (var@4) -> ⊥ : u32 ; + Some (var@5) -> ⊥ : (u32, bool) ; } @@ -109692,54 +109566,22 @@ move var@9 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> ⊥ : i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⊥ : i32 ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; + Some (var@0) -> ⊥ : u32 ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (var@3) -> ⊥ : u32 ; + Some (var@4) -> ⊥ : u32 ; + Some (var@5) -> ⊥ : (u32, bool) ; } - op: -0: i32 +copy x [Debug] **About to evaluate statement**: [ - px := &mut x; - ppx := &mut px; - var@5 := &two-phase *(ppx); - ppy := move id_mut_mut(move var@5); - *(*(ppy)) := 1: i32; - y := 2: i32; - py := &mut y; - var@8 := &mut *(py); - *(ppy) := move var@8; - var@11 := copy *(px); - var@10 := move var@11 == 2: i32; - var@9 := ¬ move var@10; - assert(¬move var@9); - *(px) := 3: i32; - var@14 := copy x; - var@13 := move var@14 == 1: i32; - var@12 := ¬ move var@13; - assert(¬move var@12); - var@17 := copy y; - var@16 := move var@17 == 3: i32; - var@15 := ¬ move var@16; - assert(¬move var@15); + var@4 := copy y; + var@0 := copy var@3 + copy var@4; return ] @@ -109749,31 +109591,19 @@ move var@9 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⊥ : i32 ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; + Some (var@0) -> ⊥ : u32 ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (var@3) -> s@0 : u32 ; + Some (var@4) -> ⊥ : u32 ; + Some (var@5) -> ⊥ : (u32, bool) ; } [Debug] **About to evaluate statement**: [ - px := &mut x + var@4 := copy y ] **Context**: @@ -109782,51 +109612,38 @@ move var@9 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⊥ : i32 ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; + Some (var@0) -> ⊥ : u32 ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (var@3) -> s@0 : u32 ; + Some (var@4) -> ⊥ : u32 ; + Some (var@5) -> ⊥ : (u32, bool) ; +} + + + +[Debug] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + Some (var@0) -> ⊥ : u32 ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (var@3) -> s@0 : u32 ; + Some (var@4) -> ⊥ : u32 ; + Some (var@5) -> ⊥ : (u32, bool) ; } +- op: +copy y [Debug] **About to evaluate statement**: [ - ppx := &mut px; - var@5 := &two-phase *(ppx); - ppy := move id_mut_mut(move var@5); - *(*(ppy)) := 1: i32; - y := 2: i32; - py := &mut y; - var@8 := &mut *(py); - *(ppy) := move var@8; - var@11 := copy *(px); - var@10 := move var@11 == 2: i32; - var@9 := ¬ move var@10; - assert(¬move var@9); - *(px) := 3: i32; - var@14 := copy x; - var@13 := move var@14 == 1: i32; - var@12 := ¬ move var@13; - assert(¬move var@12); - var@17 := copy y; - var@16 := move var@17 == 3: i32; - var@15 := ¬ move var@16; - assert(¬move var@15); + var@0 := copy var@3 + copy var@4; return ] @@ -109836,31 +109653,19 @@ move var@9 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@0 (0: i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⊥ : i32 ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; + Some (var@0) -> ⊥ : u32 ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (var@3) -> s@0 : u32 ; + Some (var@4) -> s@1 : u32 ; + Some (var@5) -> ⊥ : (u32, bool) ; } [Debug] **About to evaluate statement**: [ - ppx := &mut px + var@0 := copy var@3 + copy var@4 ] **Context**: @@ -109869,84 +109674,57 @@ move var@9 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@0 (0: i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⊥ : i32 ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; + Some (var@0) -> ⊥ : u32 ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (var@3) -> s@0 : u32 ; + Some (var@4) -> s@1 : u32 ; + Some (var@5) -> ⊥ : (u32, bool) ; } -[Debug] -**About to evaluate statement**: [ - var@5 := &two-phase *(ppx); - ppy := move id_mut_mut(move var@5); - *(*(ppy)) := 1: i32; - y := 2: i32; - py := &mut y; - var@8 := &mut *(py); - *(ppy) := move var@8; - var@11 := copy *(px); - var@10 := move var@11 == 2: i32; - var@9 := ¬ move var@10; - assert(¬move var@9); - *(px) := 3: i32; - var@14 := copy x; - var@13 := move var@14 == 1: i32; - var@12 := ¬ move var@13; - assert(¬move var@12); - var@17 := copy y; - var@16 := move var@17 == 3: i32; - var@15 := ¬ move var@16; - assert(¬move var@15); - return -] +[Debug] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) -**Context**: +# Frame 0: +{ + Some (var@0) -> ⊥ : u32 ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (var@3) -> s@0 : u32 ; + Some (var@4) -> s@1 : u32 ; + Some (var@5) -> ⊥ : (u32, bool) ; +} + + +- op: +copy var@3 + +[Debug] eval_operand: +- ctx: # Ended regions: {} # 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (&mut@0 (0: i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⊥ : i32 ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; + Some (var@0) -> ⊥ : u32 ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (var@3) -> s@0 : u32 ; + Some (var@4) -> s@1 : u32 ; + Some (var@5) -> ⊥ : (u32, bool) ; } +- op: +copy var@4 [Debug] **About to evaluate statement**: [ - var@5 := &two-phase *(ppx) + return ] **Context**: @@ -109955,49 +109733,22 @@ move var@9 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (&mut@0 (0: i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⊥ : i32 ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; + Some (var@0) -> s@2 : u32 ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (var@3) -> s@0 : u32 ; + Some (var@4) -> s@1 : u32 ; + Some (var@5) -> ⊥ : (u32, bool) ; } +[Debug] test_function_symbolic: subs_test [Debug] **About to evaluate statement**: [ - ppy := move id_mut_mut(move var@5); - *(*(ppy)) := 1: i32; - y := 2: i32; - py := &mut y; - var@8 := &mut *(py); - *(ppy) := move var@8; - var@11 := copy *(px); - var@10 := move var@11 == 2: i32; - var@9 := ¬ move var@10; - assert(¬move var@9); - *(px) := 3: i32; - var@14 := copy x; - var@13 := move var@14 == 1: i32; - var@12 := ¬ move var@13; - assert(¬move var@12); - var@17 := copy y; - var@16 := move var@17 == 3: i32; - var@15 := ¬ move var@16; - assert(¬move var@15); + var@3 := copy x; + var@4 := copy y; + var@0 := copy var@3 - copy var@4; return ] @@ -110007,31 +109758,19 @@ move var@9 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (@shared_loan({2}, &mut@0 (0: i32))) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⌊inactivated_mut@2⌋ ; - Some (y) -> ⊥ : i32 ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; + Some (var@0) -> ⊥ : u32 ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (var@3) -> ⊥ : u32 ; + Some (var@4) -> ⊥ : u32 ; + Some (var@5) -> ⊥ : (u32, bool) ; } [Debug] **About to evaluate statement**: [ - ppy := move id_mut_mut(move var@5) + var@3 := copy x ] **Context**: @@ -110040,30 +109779,16 @@ move var@9 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (@shared_loan({2}, &mut@0 (0: i32))) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⌊inactivated_mut@2⌋ ; - Some (y) -> ⊥ : i32 ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; + Some (var@0) -> ⊥ : u32 ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (var@3) -> ⊥ : u32 ; + Some (var@4) -> ⊥ : u32 ; + Some (var@5) -> ⊥ : (u32, bool) ; } -[Debug] activate_inactivated_mut_borrow: resulting value: -&mut@0 (0: i32) [Debug] eval_operand: - ctx: # Ended regions: {} @@ -110071,192 +109796,161 @@ move var@9 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> &mut@2 (&mut@0 (0: i32)) ; - Some (y) -> ⊥ : i32 ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; + Some (var@0) -> ⊥ : u32 ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (var@3) -> ⊥ : u32 ; + Some (var@4) -> ⊥ : u32 ; + Some (var@5) -> ⊥ : (u32, bool) ; } - op: -move var@5 +copy x [Debug] **About to evaluate statement**: [ - var@2 := &mut *(x); - var@0 := &mut *(var@2); + var@4 := copy y; + var@0 := copy var@3 - copy var@4; return ] **Context**: # Ended regions: {} -# 2 frame(s) +# 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⊥ : i32 ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; -} - -# Frame 1: -{ - Some (var@0) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (x) -> &mut@2 (&mut@0 (0: i32)) ; - Some (var@2) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@0) -> ⊥ : u32 ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (var@3) -> s@0 : u32 ; + Some (var@4) -> ⊥ : u32 ; + Some (var@5) -> ⊥ : (u32, bool) ; } [Debug] **About to evaluate statement**: [ - var@2 := &mut *(x) + var@4 := copy y ] **Context**: # Ended regions: {} -# 2 frame(s) +# 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⊥ : i32 ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; + Some (var@0) -> ⊥ : u32 ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (var@3) -> s@0 : u32 ; + Some (var@4) -> ⊥ : u32 ; + Some (var@5) -> ⊥ : (u32, bool) ; } -# Frame 1: + + +[Debug] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: { - Some (var@0) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (x) -> &mut@2 (&mut@0 (0: i32)) ; - Some (var@2) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@0) -> ⊥ : u32 ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (var@3) -> s@0 : u32 ; + Some (var@4) -> ⊥ : u32 ; + Some (var@5) -> ⊥ : (u32, bool) ; } +- op: +copy y [Debug] **About to evaluate statement**: [ - var@0 := &mut *(var@2); + var@0 := copy var@3 - copy var@4; return ] **Context**: # Ended regions: {} -# 2 frame(s) +# 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⊥ : i32 ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; -} - -# Frame 1: -{ - Some (var@0) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (x) -> &mut@2 (⌊mut@3⌋) ; - Some (var@2) -> &mut@3 (&mut@0 (0: i32)) ; + Some (var@0) -> ⊥ : u32 ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (var@3) -> s@0 : u32 ; + Some (var@4) -> s@1 : u32 ; + Some (var@5) -> ⊥ : (u32, bool) ; } [Debug] **About to evaluate statement**: [ - var@0 := &mut *(var@2) + var@0 := copy var@3 - copy var@4 ] **Context**: # Ended regions: {} -# 2 frame(s) +# 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⊥ : i32 ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; + Some (var@0) -> ⊥ : u32 ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (var@3) -> s@0 : u32 ; + Some (var@4) -> s@1 : u32 ; + Some (var@5) -> ⊥ : (u32, bool) ; } -# Frame 1: + + +[Debug] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: { - Some (var@0) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (x) -> &mut@2 (⌊mut@3⌋) ; - Some (var@2) -> &mut@3 (&mut@0 (0: i32)) ; + Some (var@0) -> ⊥ : u32 ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (var@3) -> s@0 : u32 ; + Some (var@4) -> s@1 : u32 ; + Some (var@5) -> ⊥ : (u32, bool) ; +} + + +- op: +copy var@3 + +[Debug] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + Some (var@0) -> ⊥ : u32 ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (var@3) -> s@0 : u32 ; + Some (var@4) -> s@1 : u32 ; + Some (var@5) -> ⊥ : (u32, bool) ; } +- op: +copy var@4 [Debug] **About to evaluate statement**: [ @@ -110265,130 +109959,89 @@ move var@5 **Context**: # Ended regions: {} -# 2 frame(s) +# 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⊥ : i32 ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; + Some (var@0) -> s@2 : u32 ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (var@3) -> s@0 : u32 ; + Some (var@4) -> s@1 : u32 ; + Some (var@5) -> ⊥ : (u32, bool) ; } -# Frame 1: -{ - Some (var@0) -> &mut@4 (&mut@0 (0: i32)) ; - Some (x) -> &mut@2 (⌊mut@3⌋) ; - Some (var@2) -> &mut@3 (⌊mut@4⌋) ; -} +[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 +] -[Debug] ctx_pop_frame: +**Context**: # Ended regions: {} -# 2 frame(s) +# 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⊥ : i32 ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; + Some (var@0) -> ⊥ : u32 ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (var@3) -> ⊥ : u32 ; + Some (var@4) -> ⊥ : u32 ; + Some (var@5) -> ⊥ : bool ; } -# Frame 1: + + +[Debug] +**About to evaluate statement**: [ + var@3 := copy x +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: { - Some (var@0) -> &mut@4 (&mut@0 (0: i32)) ; - Some (x) -> &mut@2 (⌊mut@3⌋) ; - Some (var@2) -> &mut@3 (⌊mut@4⌋) ; + Some (var@0) -> ⊥ : u32 ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (var@3) -> ⊥ : u32 ; + Some (var@4) -> ⊥ : u32 ; + Some (var@5) -> ⊥ : bool ; } + + [Debug] eval_operand: - ctx: # Ended regions: {} -# 2 frame(s) +# 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⊥ : i32 ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; -} - -# Frame 1: -{ - Some (var@0) -> &mut@4 (&mut@0 (0: i32)) ; - Some (x) -> &mut@2 (⌊mut@3⌋) ; - Some (var@2) -> &mut@3 (⌊mut@4⌋) ; + Some (var@0) -> ⊥ : u32 ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (var@3) -> ⊥ : u32 ; + Some (var@4) -> ⊥ : u32 ; + Some (var@5) -> ⊥ : bool ; } - op: -move var@0 +copy x [Debug] **About to evaluate statement**: [ - *(*(ppy)) := 1: i32; - y := 2: i32; - py := &mut y; - var@8 := &mut *(py); - *(ppy) := move var@8; - var@11 := copy *(px); - var@10 := move var@11 == 2: i32; - var@9 := ¬ move var@10; - assert(¬move var@9); - *(px) := 3: i32; - var@14 := copy x; - var@13 := move var@14 == 1: i32; - var@12 := ¬ move var@13; - assert(¬move var@12); - var@17 := copy y; - var@16 := move var@17 == 3: i32; - var@15 := ¬ move var@16; - assert(¬move var@15); + var@4 := copy y; + var@0 := move var@3 / move var@4; return ] @@ -110398,34 +110051,19 @@ move var@0 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@4 (&mut@0 (0: i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⊥ : i32 ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@2 (⌊mut@3⌋) ; - None -> &mut@3 (⌊mut@4⌋) ; + Some (var@0) -> ⊥ : u32 ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (var@3) -> s@0 : u32 ; + Some (var@4) -> ⊥ : u32 ; + Some (var@5) -> ⊥ : bool ; } [Debug] **About to evaluate statement**: [ - *(*(ppy)) := 1: i32 + var@4 := copy y ] **Context**: @@ -110434,27 +110072,12 @@ move var@0 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@4 (&mut@0 (0: i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⊥ : i32 ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@2 (⌊mut@3⌋) ; - None -> &mut@3 (⌊mut@4⌋) ; + Some (var@0) -> ⊥ : u32 ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (var@3) -> s@0 : u32 ; + Some (var@4) -> ⊥ : u32 ; + Some (var@5) -> ⊥ : bool ; } @@ -110466,52 +110089,21 @@ move var@0 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@4 (&mut@0 (0: i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⊥ : i32 ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@2 (⌊mut@3⌋) ; - None -> &mut@3 (⌊mut@4⌋) ; + Some (var@0) -> ⊥ : u32 ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (var@3) -> s@0 : u32 ; + Some (var@4) -> ⊥ : u32 ; + Some (var@5) -> ⊥ : bool ; } - op: -1: i32 +copy y [Debug] **About to evaluate statement**: [ - y := 2: i32; - py := &mut y; - var@8 := &mut *(py); - *(ppy) := move var@8; - var@11 := copy *(px); - var@10 := move var@11 == 2: i32; - var@9 := ¬ move var@10; - assert(¬move var@9); - *(px) := 3: i32; - var@14 := copy x; - var@13 := move var@14 == 1: i32; - var@12 := ¬ move var@13; - assert(¬move var@12); - var@17 := copy y; - var@16 := move var@17 == 3: i32; - var@15 := ¬ move var@16; - assert(¬move var@15); + var@0 := move var@3 / move var@4; return ] @@ -110521,34 +110113,19 @@ move var@0 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@4 (&mut@0 (1: i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⊥ : i32 ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@2 (⌊mut@3⌋) ; - None -> &mut@3 (⌊mut@4⌋) ; + Some (var@0) -> ⊥ : u32 ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (var@3) -> s@0 : u32 ; + Some (var@4) -> s@1 : u32 ; + Some (var@5) -> ⊥ : bool ; } [Debug] **About to evaluate statement**: [ - y := 2: i32 + var@0 := move var@3 / move var@4 ] **Context**: @@ -110557,27 +110134,12 @@ move var@0 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@4 (&mut@0 (1: i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⊥ : i32 ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@2 (⌊mut@3⌋) ; - None -> &mut@3 (⌊mut@4⌋) ; + Some (var@0) -> ⊥ : u32 ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (var@3) -> s@0 : u32 ; + Some (var@4) -> s@1 : u32 ; + Some (var@5) -> ⊥ : bool ; } @@ -110589,88 +110151,40 @@ move var@0 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@4 (&mut@0 (1: i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⊥ : i32 ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@2 (⌊mut@3⌋) ; - None -> &mut@3 (⌊mut@4⌋) ; + Some (var@0) -> ⊥ : u32 ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (var@3) -> s@0 : u32 ; + Some (var@4) -> s@1 : u32 ; + Some (var@5) -> ⊥ : bool ; } - op: -2: i32 - -[Debug] -**About to evaluate statement**: [ - py := &mut y; - var@8 := &mut *(py); - *(ppy) := move var@8; - var@11 := copy *(px); - var@10 := move var@11 == 2: i32; - var@9 := ¬ move var@10; - assert(¬move var@9); - *(px) := 3: i32; - var@14 := copy x; - var@13 := move var@14 == 1: i32; - var@12 := ¬ move var@13; - assert(¬move var@12); - var@17 := copy y; - var@16 := move var@17 == 3: i32; - var@15 := ¬ move var@16; - assert(¬move var@15); - return -] +move var@3 -**Context**: +[Debug] eval_operand: +- ctx: # Ended regions: {} # 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@4 (&mut@0 (1: i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> 2: i32 ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@2 (⌊mut@3⌋) ; - None -> &mut@3 (⌊mut@4⌋) ; + Some (var@0) -> ⊥ : u32 ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (var@3) -> ⊥ : u32 ; + Some (var@4) -> s@1 : u32 ; + Some (var@5) -> ⊥ : bool ; } +- op: +move var@4 [Debug] **About to evaluate statement**: [ - py := &mut y + return ] **Context**: @@ -110679,48 +110193,22 @@ move var@0 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@4 (&mut@0 (1: i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> 2: i32 ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@2 (⌊mut@3⌋) ; - None -> &mut@3 (⌊mut@4⌋) ; + Some (var@0) -> s@2 : u32 ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (var@3) -> ⊥ : u32 ; + Some (var@4) -> ⊥ : u32 ; + Some (var@5) -> ⊥ : bool ; } +[Debug] test_function_symbolic: rem_test [Debug] **About to evaluate statement**: [ - var@8 := &mut *(py); - *(ppy) := move var@8; - var@11 := copy *(px); - var@10 := move var@11 == 2: i32; - var@9 := ¬ move var@10; - assert(¬move var@9); - *(px) := 3: i32; - var@14 := copy x; - var@13 := move var@14 == 1: i32; - var@12 := ¬ move var@13; - assert(¬move var@12); - var@17 := copy y; - var@16 := move var@17 == 3: i32; - var@15 := ¬ move var@16; - assert(¬move var@15); + var@3 := copy x; + var@4 := copy y; + var@0 := move var@3 % move var@4; return ] @@ -110730,34 +110218,19 @@ move var@0 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@4 (&mut@0 (1: i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (2: i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@2 (⌊mut@3⌋) ; - None -> &mut@3 (⌊mut@4⌋) ; + Some (var@0) -> ⊥ : u32 ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (var@3) -> ⊥ : u32 ; + Some (var@4) -> ⊥ : u32 ; + Some (var@5) -> ⊥ : bool ; } [Debug] **About to evaluate statement**: [ - var@8 := &mut *(py) + var@3 := copy x ] **Context**: @@ -110766,47 +110239,39 @@ move var@0 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@4 (&mut@0 (1: i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (2: i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@2 (⌊mut@3⌋) ; - None -> &mut@3 (⌊mut@4⌋) ; + Some (var@0) -> ⊥ : u32 ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (var@3) -> ⊥ : u32 ; + Some (var@4) -> ⊥ : u32 ; + Some (var@5) -> ⊥ : bool ; +} + + + +[Debug] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + Some (var@0) -> ⊥ : u32 ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (var@3) -> ⊥ : u32 ; + Some (var@4) -> ⊥ : u32 ; + Some (var@5) -> ⊥ : bool ; } +- op: +copy x [Debug] **About to evaluate statement**: [ - *(ppy) := move var@8; - var@11 := copy *(px); - var@10 := move var@11 == 2: i32; - var@9 := ¬ move var@10; - assert(¬move var@9); - *(px) := 3: i32; - var@14 := copy x; - var@13 := move var@14 == 1: i32; - var@12 := ¬ move var@13; - assert(¬move var@12); - var@17 := copy y; - var@16 := move var@17 == 3: i32; - var@15 := ¬ move var@16; - assert(¬move var@15); + var@4 := copy y; + var@0 := move var@3 % move var@4; return ] @@ -110816,34 +110281,19 @@ move var@0 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@4 (&mut@0 (1: i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> &mut@6 (2: i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@2 (⌊mut@3⌋) ; - None -> &mut@3 (⌊mut@4⌋) ; + Some (var@0) -> ⊥ : u32 ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (var@3) -> s@0 : u32 ; + Some (var@4) -> ⊥ : u32 ; + Some (var@5) -> ⊥ : bool ; } [Debug] **About to evaluate statement**: [ - *(ppy) := move var@8 + var@4 := copy y ] **Context**: @@ -110852,27 +110302,12 @@ move var@0 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@4 (&mut@0 (1: i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> &mut@6 (2: i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@2 (⌊mut@3⌋) ; - None -> &mut@3 (⌊mut@4⌋) ; + Some (var@0) -> ⊥ : u32 ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (var@3) -> s@0 : u32 ; + Some (var@4) -> ⊥ : u32 ; + Some (var@5) -> ⊥ : bool ; } @@ -110884,150 +110319,21 @@ move var@0 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@4 (&mut@0 (1: i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> &mut@6 (2: i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@2 (⌊mut@3⌋) ; - None -> &mut@3 (⌊mut@4⌋) ; + Some (var@0) -> ⊥ : u32 ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (var@3) -> s@0 : u32 ; + Some (var@4) -> ⊥ : u32 ; + Some (var@5) -> ⊥ : bool ; } - op: -move var@8 - -[Debug] end borrow: 0: -- original context: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@4 (⊥ : &'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@2 (⌊mut@3⌋) ; - None -> &mut@3 (⌊mut@4⌋) ; - None -> &mut@6 (2: i32) ; - None -> &mut@0 (1: i32) ; -} - -[Debug] give_back: -- bid: 0 -- content: &mut@0 (1: i32) -- context: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@4 (⊥ : &'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@2 (⌊mut@3⌋) ; - None -> &mut@3 (⌊mut@4⌋) ; - None -> &mut@6 (2: i32) ; - None -> ⊥ : &'_ mut (i32) ; -} - - -[Debug] give_back_value: -- bid: 0 -- value: 1: i32 -- context: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@4 (⊥ : &'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@2 (⌊mut@3⌋) ; - None -> &mut@3 (⌊mut@4⌋) ; - None -> &mut@6 (2: i32) ; - None -> ⊥ : &'_ mut (i32) ; -} - +copy y [Debug] **About to evaluate statement**: [ - var@11 := copy *(px); - var@10 := move var@11 == 2: i32; - var@9 := ¬ move var@10; - assert(¬move var@9); - *(px) := 3: i32; - var@14 := copy x; - var@13 := move var@14 == 1: i32; - var@12 := ¬ move var@13; - assert(¬move var@12); - var@17 := copy y; - var@16 := move var@17 == 3: i32; - var@15 := ¬ move var@16; - assert(¬move var@15); + var@0 := move var@3 % move var@4; return ] @@ -111037,34 +110343,19 @@ move var@8 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> 1: i32 ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@4 (&mut@6 (2: i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@2 (⌊mut@3⌋) ; - None -> &mut@3 (⌊mut@4⌋) ; + Some (var@0) -> ⊥ : u32 ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (var@3) -> s@0 : u32 ; + Some (var@4) -> s@1 : u32 ; + Some (var@5) -> ⊥ : bool ; } [Debug] **About to evaluate statement**: [ - var@11 := copy *(px) + var@0 := move var@3 % move var@4 ] **Context**: @@ -111073,27 +110364,12 @@ move var@8 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> 1: i32 ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@4 (&mut@6 (2: i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@2 (⌊mut@3⌋) ; - None -> &mut@3 (⌊mut@4⌋) ; + Some (var@0) -> ⊥ : u32 ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (var@3) -> s@0 : u32 ; + Some (var@4) -> s@1 : u32 ; + Some (var@5) -> ⊥ : bool ; } @@ -111105,524 +110381,246 @@ move var@8 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> 1: i32 ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@4 (&mut@6 (2: i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@2 (⌊mut@3⌋) ; - None -> &mut@3 (⌊mut@4⌋) ; + Some (var@0) -> ⊥ : u32 ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (var@3) -> s@0 : u32 ; + Some (var@4) -> s@1 : u32 ; + Some (var@5) -> ⊥ : bool ; } - op: -copy *(px) +move var@3 -[Debug] end borrow: 1: -- original context: +[Debug] eval_operand: +- ctx: # Ended regions: {} # 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> 1: i32 ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@4 (&mut@6 (2: i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@2 (⌊mut@3⌋) ; - None -> &mut@3 (⌊mut@4⌋) ; + Some (var@0) -> ⊥ : u32 ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (var@3) -> ⊥ : u32 ; + Some (var@4) -> s@1 : u32 ; + Some (var@5) -> ⊥ : bool ; } -[Debug] end borrow: 1: found outer borrows/abs:(InterpreterBorrowsCore.InnerLoans (InterpreterBorrowsCore.Borrow 2)) -[Debug] end borrow: 2: -- original context: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> 1: i32 ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@4 (&mut@6 (2: i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@2 (⌊mut@3⌋) ; - None -> &mut@3 (⌊mut@4⌋) ; -} -[Debug] end borrow: 2: found outer borrows/abs:(InterpreterBorrowsCore.InnerLoans (InterpreterBorrowsCore.Borrow 3)) -[Debug] end borrow: 3: -- original context: -# Ended regions: {} -# 1 frame(s) +- op: +move var@4 -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> 1: i32 ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@4 (&mut@6 (2: i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@2 (⌊mut@3⌋) ; - None -> &mut@3 (⌊mut@4⌋) ; -} +[Debug] +**About to evaluate statement**: [ + return +] -[Debug] end borrow: 3: found outer borrows/abs:(InterpreterBorrowsCore.InnerLoans (InterpreterBorrowsCore.Borrow 4)) -[Debug] end borrow: 4: -- original context: +**Context**: # Ended regions: {} # 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> 1: i32 ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@4 (&mut@6 (2: i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@2 (⌊mut@3⌋) ; - None -> &mut@3 (⌊mut@4⌋) ; + Some (var@0) -> s@2 : u32 ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (var@3) -> ⊥ : u32 ; + Some (var@4) -> ⊥ : u32 ; + Some (var@5) -> ⊥ : bool ; } -[Debug] give_back: -- bid: 4 -- content: &mut@4 (&mut@6 (2: i32)) -- context: -# Ended regions: {} -# 1 frame(s) -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> 1: i32 ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@2 (⌊mut@3⌋) ; - None -> &mut@3 (⌊mut@4⌋) ; -} +[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 +] -[Debug] give_back_value: -- bid: 4 -- value: &mut@6 (2: i32) -- context: +**Context**: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 1: i32 ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@2 (⌊mut@3⌋) ; - None -> &mut@3 (⌊mut@4⌋) ; + Some (x) -> ⊥ : u32 ; + Some (y) -> ⊥ : u32 ; + Some (z) -> ⊥ : u32 ; + Some (p) -> ⊥ : test1::Pair ; + Some (var@5) -> ⊥ : u32 ; + Some (s) -> ⊥ : test1::Sum ; + Some (o) -> ⊥ : test1::One ; + Some (e0) -> ⊥ : test1::EmptyEnum ; + Some (e1) -> ⊥ : test1::EmptyEnum ; + Some (enum0) -> ⊥ : test1::Enum ; } -[Debug] end borrow: 3: -- original context: -# Ended regions: {} -# 1 frame(s) -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> 1: i32 ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@2 (⌊mut@3⌋) ; - None -> &mut@3 (&mut@6 (2: i32)) ; -} +[Debug] +**About to evaluate statement**: [ + x := 23: u32 +] -[Debug] give_back: -- bid: 3 -- content: &mut@3 (&mut@6 (2: i32)) -- context: +**Context**: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 1: i32 ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@2 (⌊mut@3⌋) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (x) -> ⊥ : u32 ; + Some (y) -> ⊥ : u32 ; + Some (z) -> ⊥ : u32 ; + Some (p) -> ⊥ : test1::Pair ; + Some (var@5) -> ⊥ : u32 ; + Some (s) -> ⊥ : test1::Sum ; + Some (o) -> ⊥ : test1::One ; + Some (e0) -> ⊥ : test1::EmptyEnum ; + Some (e1) -> ⊥ : test1::EmptyEnum ; + Some (enum0) -> ⊥ : test1::Enum ; } -[Debug] give_back_value: -- bid: 3 -- value: &mut@6 (2: i32) -- context: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> 1: i32 ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@2 (⌊mut@3⌋) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; -} - -[Debug] end borrow: 2: -- original context: +[Debug] eval_operand: +- ctx: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 1: i32 ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@2 (&mut@6 (2: i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (x) -> ⊥ : u32 ; + Some (y) -> ⊥ : u32 ; + Some (z) -> ⊥ : u32 ; + Some (p) -> ⊥ : test1::Pair ; + Some (var@5) -> ⊥ : u32 ; + Some (s) -> ⊥ : test1::Sum ; + Some (o) -> ⊥ : test1::One ; + Some (e0) -> ⊥ : test1::EmptyEnum ; + Some (e1) -> ⊥ : test1::EmptyEnum ; + Some (enum0) -> ⊥ : test1::Enum ; } -[Debug] give_back: -- bid: 2 -- content: &mut@2 (&mut@6 (2: i32)) -- context: -# Ended regions: {} -# 1 frame(s) -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> 1: i32 ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; -} +- 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 +] -[Debug] give_back_value: -- bid: 2 -- value: &mut@6 (2: i32) -- context: +**Context**: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 1: i32 ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (x) -> 23: u32 ; + Some (y) -> ⊥ : u32 ; + Some (z) -> ⊥ : u32 ; + Some (p) -> ⊥ : test1::Pair ; + Some (var@5) -> ⊥ : u32 ; + Some (s) -> ⊥ : test1::Sum ; + Some (o) -> ⊥ : test1::One ; + Some (e0) -> ⊥ : test1::EmptyEnum ; + Some (e1) -> ⊥ : test1::EmptyEnum ; + Some (enum0) -> ⊥ : test1::Enum ; } -[Debug] end borrow: 1: -- original context: -# Ended regions: {} -# 1 frame(s) -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> 1: i32 ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (&mut@6 (2: i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; -} +[Debug] +**About to evaluate statement**: [ + y := 44: u32 +] -[Debug] give_back: -- bid: 1 -- content: &mut@1 (&mut@6 (2: i32)) -- context: +**Context**: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 1: i32 ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (x) -> 23: u32 ; + Some (y) -> ⊥ : u32 ; + Some (z) -> ⊥ : u32 ; + Some (p) -> ⊥ : test1::Pair ; + Some (var@5) -> ⊥ : u32 ; + Some (s) -> ⊥ : test1::Sum ; + Some (o) -> ⊥ : test1::One ; + Some (e0) -> ⊥ : test1::EmptyEnum ; + Some (e1) -> ⊥ : test1::EmptyEnum ; + Some (enum0) -> ⊥ : test1::Enum ; } -[Debug] give_back_value: -- bid: 1 -- value: &mut@6 (2: i32) -- context: + +[Debug] eval_operand: +- ctx: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 1: i32 ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (x) -> 23: u32 ; + Some (y) -> ⊥ : u32 ; + Some (z) -> ⊥ : u32 ; + Some (p) -> ⊥ : test1::Pair ; + Some (var@5) -> ⊥ : u32 ; + Some (s) -> ⊥ : test1::Sum ; + Some (o) -> ⊥ : test1::One ; + Some (e0) -> ⊥ : test1::EmptyEnum ; + Some (e1) -> ⊥ : test1::EmptyEnum ; + Some (enum0) -> ⊥ : test1::Enum ; } +- op: +44: u32 + [Debug] **About to evaluate statement**: [ - var@10 := move var@11 == 2: i32; - var@9 := ¬ move var@10; - assert(¬move var@9); - *(px) := 3: i32; - var@14 := copy x; - var@13 := move var@14 == 1: i32; - var@12 := ¬ move var@13; - assert(¬move var@12); - var@17 := copy y; - var@16 := move var@17 == 3: i32; - var@15 := ¬ move var@16; - assert(¬move var@15); + 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 ] @@ -111633,33 +110631,23 @@ copy *(px) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 1: i32 ; - Some (px) -> &mut@6 (2: i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> 2: i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (x) -> 23: u32 ; + Some (y) -> 44: u32 ; + Some (z) -> ⊥ : u32 ; + Some (p) -> ⊥ : test1::Pair ; + Some (var@5) -> ⊥ : u32 ; + Some (s) -> ⊥ : test1::Sum ; + Some (o) -> ⊥ : test1::One ; + Some (e0) -> ⊥ : test1::EmptyEnum ; + Some (e1) -> ⊥ : test1::EmptyEnum ; + Some (enum0) -> ⊥ : test1::Enum ; } [Debug] **About to evaluate statement**: [ - var@10 := move var@11 == 2: i32 + z := 67: u32 ] **Context**: @@ -111669,63 +110657,19 @@ copy *(px) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 1: i32 ; - Some (px) -> &mut@6 (2: i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> 2: i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> 1: i32 ; - Some (px) -> &mut@6 (2: i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> 2: i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (x) -> 23: u32 ; + Some (y) -> 44: u32 ; + Some (z) -> ⊥ : u32 ; + Some (p) -> ⊥ : test1::Pair ; + Some (var@5) -> ⊥ : u32 ; + Some (s) -> ⊥ : test1::Sum ; + Some (o) -> ⊥ : test1::One ; + Some (e0) -> ⊥ : test1::EmptyEnum ; + Some (e1) -> ⊥ : test1::EmptyEnum ; + Some (enum0) -> ⊥ : test1::Enum ; } -- op: -move var@11 [Debug] eval_operand: - ctx: @@ -111735,45 +110679,33 @@ move var@11 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 1: i32 ; - Some (px) -> &mut@6 (2: i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (x) -> 23: u32 ; + Some (y) -> 44: u32 ; + Some (z) -> ⊥ : u32 ; + Some (p) -> ⊥ : test1::Pair ; + Some (var@5) -> ⊥ : u32 ; + Some (s) -> ⊥ : test1::Sum ; + Some (o) -> ⊥ : test1::One ; + Some (e0) -> ⊥ : test1::EmptyEnum ; + Some (e1) -> ⊥ : test1::EmptyEnum ; + Some (enum0) -> ⊥ : test1::Enum ; } - op: -2: i32 +67: u32 [Debug] **About to evaluate statement**: [ - var@9 := ¬ move var@10; - assert(¬move var@9); - *(px) := 3: i32; - var@14 := copy x; - var@13 := move var@14 == 1: i32; - var@12 := ¬ move var@13; - assert(¬move var@12); - var@17 := copy y; - var@16 := move var@17 == 3: i32; - var@15 := ¬ move var@16; - assert(¬move var@15); + 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 ] @@ -111784,33 +110716,23 @@ move var@11 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 1: i32 ; - Some (px) -> &mut@6 (2: i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> true ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (x) -> 23: u32 ; + Some (y) -> 44: u32 ; + Some (z) -> 67: u32 ; + Some (p) -> ⊥ : test1::Pair ; + Some (var@5) -> ⊥ : u32 ; + Some (s) -> ⊥ : test1::Sum ; + Some (o) -> ⊥ : test1::One ; + Some (e0) -> ⊥ : test1::EmptyEnum ; + Some (e1) -> ⊥ : test1::EmptyEnum ; + Some (enum0) -> ⊥ : test1::Enum ; } [Debug] **About to evaluate statement**: [ - var@9 := ¬ move var@10 + var@5 := copy x ] **Context**: @@ -111820,26 +110742,16 @@ move var@11 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 1: i32 ; - Some (px) -> &mut@6 (2: i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> true ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (x) -> 23: u32 ; + Some (y) -> 44: u32 ; + Some (z) -> 67: u32 ; + Some (p) -> ⊥ : test1::Pair ; + Some (var@5) -> ⊥ : u32 ; + Some (s) -> ⊥ : test1::Sum ; + Some (o) -> ⊥ : test1::One ; + Some (e0) -> ⊥ : test1::EmptyEnum ; + Some (e1) -> ⊥ : test1::EmptyEnum ; + Some (enum0) -> ⊥ : test1::Enum ; } @@ -111852,44 +110764,32 @@ move var@11 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 1: i32 ; - Some (px) -> &mut@6 (2: i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> true ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (x) -> 23: u32 ; + Some (y) -> 44: u32 ; + Some (z) -> 67: u32 ; + Some (p) -> ⊥ : test1::Pair ; + Some (var@5) -> ⊥ : u32 ; + Some (s) -> ⊥ : test1::Sum ; + Some (o) -> ⊥ : test1::One ; + Some (e0) -> ⊥ : test1::EmptyEnum ; + Some (e1) -> ⊥ : test1::EmptyEnum ; + Some (enum0) -> ⊥ : test1::Enum ; } - op: -move var@10 +copy x [Debug] **About to evaluate statement**: [ - assert(¬move var@9); - *(px) := 3: i32; - var@14 := copy x; - var@13 := move var@14 == 1: i32; - var@12 := ¬ move var@13; - assert(¬move var@12); - var@17 := copy y; - var@16 := move var@17 == 3: i32; - var@15 := ¬ move var@16; - assert(¬move var@15); + (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 ] @@ -111900,33 +110800,23 @@ move var@10 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 1: i32 ; - Some (px) -> &mut@6 (2: i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> false ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (x) -> 23: u32 ; + Some (y) -> 44: u32 ; + Some (z) -> 67: u32 ; + Some (p) -> ⊥ : test1::Pair ; + Some (var@5) -> 23: u32 ; + Some (s) -> ⊥ : test1::Sum ; + Some (o) -> ⊥ : test1::One ; + Some (e0) -> ⊥ : test1::EmptyEnum ; + Some (e1) -> ⊥ : test1::EmptyEnum ; + Some (enum0) -> ⊥ : test1::Enum ; } [Debug] **About to evaluate statement**: [ - assert(¬move var@9) + (p).x := move var@5 ] **Context**: @@ -111936,26 +110826,16 @@ move var@10 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 1: i32 ; - Some (px) -> &mut@6 (2: i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> false ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (x) -> 23: u32 ; + Some (y) -> 44: u32 ; + Some (z) -> 67: u32 ; + Some (p) -> ⊥ : test1::Pair ; + Some (var@5) -> 23: u32 ; + Some (s) -> ⊥ : test1::Sum ; + Some (o) -> ⊥ : test1::One ; + Some (e0) -> ⊥ : test1::EmptyEnum ; + Some (e1) -> ⊥ : test1::EmptyEnum ; + Some (enum0) -> ⊥ : test1::Enum ; } @@ -111968,43 +110848,35 @@ move var@10 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 1: i32 ; - Some (px) -> &mut@6 (2: i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> false ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (x) -> 23: u32 ; + Some (y) -> 44: u32 ; + Some (z) -> 67: u32 ; + Some (p) -> ⊥ : test1::Pair ; + Some (var@5) -> 23: u32 ; + Some (s) -> ⊥ : test1::Sum ; + Some (o) -> ⊥ : test1::One ; + Some (e0) -> ⊥ : test1::EmptyEnum ; + Some (e1) -> ⊥ : test1::EmptyEnum ; + Some (enum0) -> ⊥ : test1::Enum ; } - op: -move var@9 +move var@5 +[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**: [ - *(px) := 3: i32; - var@14 := copy x; - var@13 := move var@14 == 1: i32; - var@12 := ¬ move var@13; - assert(¬move var@12); - var@17 := copy y; - var@16 := move var@17 == 3: i32; - var@15 := ¬ move var@16; - assert(¬move var@15); + (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 ] @@ -112015,33 +110887,23 @@ move var@9 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 1: i32 ; - Some (px) -> &mut@6 (2: i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (x) -> 23: u32 ; + Some (y) -> 44: u32 ; + Some (z) -> 67: u32 ; + Some (p) -> test1::Pair { x = 23: u32; y = ⊥ : u32; } ; + Some (var@5) -> ⊥ : u32 ; + Some (s) -> ⊥ : test1::Sum ; + Some (o) -> ⊥ : test1::One ; + Some (e0) -> ⊥ : test1::EmptyEnum ; + Some (e1) -> ⊥ : test1::EmptyEnum ; + Some (enum0) -> ⊥ : test1::Enum ; } [Debug] **About to evaluate statement**: [ - *(px) := 3: i32 + (p).y := 67: u32 ] **Context**: @@ -112051,26 +110913,16 @@ move var@9 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 1: i32 ; - Some (px) -> &mut@6 (2: i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (x) -> 23: u32 ; + Some (y) -> 44: u32 ; + Some (z) -> 67: u32 ; + Some (p) -> test1::Pair { x = 23: u32; y = ⊥ : u32; } ; + Some (var@5) -> ⊥ : u32 ; + Some (s) -> ⊥ : test1::Sum ; + Some (o) -> ⊥ : test1::One ; + Some (e0) -> ⊥ : test1::EmptyEnum ; + Some (e1) -> ⊥ : test1::EmptyEnum ; + Some (enum0) -> ⊥ : test1::Enum ; } @@ -112083,42 +110935,30 @@ move var@9 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 1: i32 ; - Some (px) -> &mut@6 (2: i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (x) -> 23: u32 ; + Some (y) -> 44: u32 ; + Some (z) -> 67: u32 ; + Some (p) -> test1::Pair { x = 23: u32; y = ⊥ : u32; } ; + Some (var@5) -> ⊥ : u32 ; + Some (s) -> ⊥ : test1::Sum ; + Some (o) -> ⊥ : test1::One ; + Some (e0) -> ⊥ : test1::EmptyEnum ; + Some (e1) -> ⊥ : test1::EmptyEnum ; + Some (enum0) -> ⊥ : test1::Enum ; } - op: -3: i32 +67: u32 [Debug] **About to evaluate statement**: [ - var@14 := copy x; - var@13 := move var@14 == 1: i32; - var@12 := ¬ move var@13; - assert(¬move var@12); - var@17 := copy y; - var@16 := move var@17 == 3: i32; - var@15 := ¬ move var@16; - assert(¬move var@15); + (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 ] @@ -112129,33 +110969,23 @@ move var@9 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 1: i32 ; - Some (px) -> &mut@6 (3: i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (x) -> 23: u32 ; + Some (y) -> 44: u32 ; + Some (z) -> 67: u32 ; + Some (p) -> test1::Pair { x = 23: u32; y = 67: u32; } ; + Some (var@5) -> ⊥ : u32 ; + Some (s) -> ⊥ : test1::Sum ; + Some (o) -> ⊥ : test1::One ; + Some (e0) -> ⊥ : test1::EmptyEnum ; + Some (e1) -> ⊥ : test1::EmptyEnum ; + Some (enum0) -> ⊥ : test1::Enum ; } [Debug] **About to evaluate statement**: [ - var@14 := copy x + (s as test1::Sum::Right).0 := true ] **Context**: @@ -112165,27 +110995,17 @@ move var@9 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 1: i32 ; - Some (px) -> &mut@6 (3: i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; -} + Some (x) -> 23: u32 ; + Some (y) -> 44: u32 ; + Some (z) -> 67: u32 ; + Some (p) -> test1::Pair { x = 23: u32; y = 67: u32; } ; + Some (var@5) -> ⊥ : u32 ; + Some (s) -> ⊥ : test1::Sum ; + Some (o) -> ⊥ : test1::One ; + Some (e0) -> ⊥ : test1::EmptyEnum ; + Some (e1) -> ⊥ : test1::EmptyEnum ; + Some (enum0) -> ⊥ : test1::Enum ; +} @@ -112197,41 +111017,32 @@ move var@9 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 1: i32 ; - Some (px) -> &mut@6 (3: i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (x) -> 23: u32 ; + Some (y) -> 44: u32 ; + Some (z) -> 67: u32 ; + Some (p) -> test1::Pair { x = 23: u32; y = 67: u32; } ; + Some (var@5) -> ⊥ : u32 ; + Some (s) -> ⊥ : test1::Sum ; + Some (o) -> ⊥ : test1::One ; + Some (e0) -> ⊥ : test1::EmptyEnum ; + Some (e1) -> ⊥ : test1::EmptyEnum ; + Some (enum0) -> ⊥ : test1::Enum ; } - op: -copy x +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**: [ - var@13 := move var@14 == 1: i32; - var@12 := ¬ move var@13; - assert(¬move var@12); - var@17 := copy y; - var@16 := move var@17 == 3: i32; - var@15 := ¬ move var@16; - assert(¬move var@15); + 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 ] @@ -112242,33 +111053,23 @@ copy x # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 1: i32 ; - Some (px) -> &mut@6 (3: i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> 1: i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (x) -> 23: u32 ; + Some (y) -> 44: u32 ; + Some (z) -> 67: u32 ; + Some (p) -> test1::Pair { x = 23: u32; y = 67: u32; } ; + Some (var@5) -> ⊥ : u32 ; + Some (s) -> test1::Sum::Right { 0 = true; } ; + Some (o) -> ⊥ : test1::One ; + Some (e0) -> ⊥ : test1::EmptyEnum ; + Some (e1) -> ⊥ : test1::EmptyEnum ; + Some (enum0) -> ⊥ : test1::Enum ; } [Debug] **About to evaluate statement**: [ - var@13 := move var@14 == 1: i32 + set_discriminant(s, 1) ] **Context**: @@ -112278,106 +111079,26 @@ copy x # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 1: i32 ; - Some (px) -> &mut@6 (3: i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> 1: i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> 1: i32 ; - Some (px) -> &mut@6 (3: i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> 1: i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; -} - - -- op: -move var@14 - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> 1: i32 ; - Some (px) -> &mut@6 (3: i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (x) -> 23: u32 ; + Some (y) -> 44: u32 ; + Some (z) -> 67: u32 ; + Some (p) -> test1::Pair { x = 23: u32; y = 67: u32; } ; + Some (var@5) -> ⊥ : u32 ; + Some (s) -> test1::Sum::Right { 0 = true; } ; + Some (o) -> ⊥ : test1::One ; + Some (e0) -> ⊥ : test1::EmptyEnum ; + Some (e1) -> ⊥ : test1::EmptyEnum ; + Some (enum0) -> ⊥ : test1::Enum ; } -- op: -1: i32 [Debug] **About to evaluate statement**: [ - var@12 := ¬ move var@13; - assert(¬move var@12); - var@17 := copy y; - var@16 := move var@17 == 3: i32; - var@15 := ¬ move var@16; - assert(¬move var@15); + (o as test1::One::One).0 := 3: u64; + set_discriminant(o, 0); + set_discriminant(e0, 0); + set_discriminant(enum0, 0); return ] @@ -112388,33 +111109,23 @@ move var@14 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 1: i32 ; - Some (px) -> &mut@6 (3: i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> true ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (x) -> 23: u32 ; + Some (y) -> 44: u32 ; + Some (z) -> 67: u32 ; + Some (p) -> test1::Pair { x = 23: u32; y = 67: u32; } ; + Some (var@5) -> ⊥ : u32 ; + Some (s) -> test1::Sum::Right { 0 = true; } ; + Some (o) -> ⊥ : test1::One ; + Some (e0) -> ⊥ : test1::EmptyEnum ; + Some (e1) -> ⊥ : test1::EmptyEnum ; + Some (enum0) -> ⊥ : test1::Enum ; } [Debug] **About to evaluate statement**: [ - var@12 := ¬ move var@13 + (o as test1::One::One).0 := 3: u64 ] **Context**: @@ -112424,26 +111135,16 @@ move var@14 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 1: i32 ; - Some (px) -> &mut@6 (3: i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> true ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (x) -> 23: u32 ; + Some (y) -> 44: u32 ; + Some (z) -> 67: u32 ; + Some (p) -> test1::Pair { x = 23: u32; y = 67: u32; } ; + Some (var@5) -> ⊥ : u32 ; + Some (s) -> test1::Sum::Right { 0 = true; } ; + Some (o) -> ⊥ : test1::One ; + Some (e0) -> ⊥ : test1::EmptyEnum ; + Some (e1) -> ⊥ : test1::EmptyEnum ; + Some (enum0) -> ⊥ : test1::Enum ; } @@ -112456,39 +111157,30 @@ move var@14 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 1: i32 ; - Some (px) -> &mut@6 (3: i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> true ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (x) -> 23: u32 ; + Some (y) -> 44: u32 ; + Some (z) -> 67: u32 ; + Some (p) -> test1::Pair { x = 23: u32; y = 67: u32; } ; + Some (var@5) -> ⊥ : u32 ; + Some (s) -> test1::Sum::Right { 0 = true; } ; + Some (o) -> ⊥ : test1::One ; + Some (e0) -> ⊥ : test1::EmptyEnum ; + Some (e1) -> ⊥ : test1::EmptyEnum ; + Some (enum0) -> ⊥ : test1::Enum ; } - op: -move var@13 +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**: [ - assert(¬move var@12); - var@17 := copy y; - var@16 := move var@17 == 3: i32; - var@15 := ¬ move var@16; - assert(¬move var@15); + set_discriminant(o, 0); + set_discriminant(e0, 0); + set_discriminant(enum0, 0); return ] @@ -112499,33 +111191,23 @@ move var@13 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 1: i32 ; - Some (px) -> &mut@6 (3: i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> false ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (x) -> 23: u32 ; + Some (y) -> 44: u32 ; + Some (z) -> 67: u32 ; + Some (p) -> test1::Pair { x = 23: u32; y = 67: u32; } ; + Some (var@5) -> ⊥ : u32 ; + Some (s) -> test1::Sum::Right { 0 = true; } ; + Some (o) -> test1::One::One { 0 = 3: u64; } ; + Some (e0) -> ⊥ : test1::EmptyEnum ; + Some (e1) -> ⊥ : test1::EmptyEnum ; + Some (enum0) -> ⊥ : test1::Enum ; } [Debug] **About to evaluate statement**: [ - assert(¬move var@12) + set_discriminant(o, 0) ] **Context**: @@ -112535,71 +111217,51 @@ move var@13 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 1: i32 ; - Some (px) -> &mut@6 (3: i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> false ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (x) -> 23: u32 ; + Some (y) -> 44: u32 ; + Some (z) -> 67: u32 ; + Some (p) -> test1::Pair { x = 23: u32; y = 67: u32; } ; + Some (var@5) -> ⊥ : u32 ; + Some (s) -> test1::Sum::Right { 0 = true; } ; + Some (o) -> test1::One::One { 0 = 3: u64; } ; + Some (e0) -> ⊥ : test1::EmptyEnum ; + Some (e1) -> ⊥ : test1::EmptyEnum ; + Some (enum0) -> ⊥ : test1::Enum ; } -[Debug] eval_operand: -- ctx: +[Debug] +**About to evaluate statement**: [ + set_discriminant(e0, 0); + set_discriminant(enum0, 0); + return +] + +**Context**: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 1: i32 ; - Some (px) -> &mut@6 (3: i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> false ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (x) -> 23: u32 ; + Some (y) -> 44: u32 ; + Some (z) -> 67: u32 ; + Some (p) -> test1::Pair { x = 23: u32; y = 67: u32; } ; + Some (var@5) -> ⊥ : u32 ; + Some (s) -> test1::Sum::Right { 0 = true; } ; + Some (o) -> test1::One::One { 0 = 3: u64; } ; + Some (e0) -> ⊥ : test1::EmptyEnum ; + Some (e1) -> ⊥ : test1::EmptyEnum ; + Some (enum0) -> ⊥ : test1::Enum ; } -- op: -move var@12 [Debug] **About to evaluate statement**: [ - var@17 := copy y; - var@16 := move var@17 == 3: i32; - var@15 := ¬ move var@16; - assert(¬move var@15); - return + set_discriminant(e0, 0) ] **Context**: @@ -112609,33 +111271,24 @@ move var@12 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 1: i32 ; - Some (px) -> &mut@6 (3: i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (x) -> 23: u32 ; + Some (y) -> 44: u32 ; + Some (z) -> 67: u32 ; + Some (p) -> test1::Pair { x = 23: u32; y = 67: u32; } ; + Some (var@5) -> ⊥ : u32 ; + Some (s) -> test1::Sum::Right { 0 = true; } ; + Some (o) -> test1::One::One { 0 = 3: u64; } ; + Some (e0) -> ⊥ : test1::EmptyEnum ; + Some (e1) -> ⊥ : test1::EmptyEnum ; + Some (enum0) -> ⊥ : test1::Enum ; } [Debug] **About to evaluate statement**: [ - var@17 := copy y + set_discriminant(enum0, 0); + return ] **Context**: @@ -112645,292 +111298,221 @@ move var@12 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 1: i32 ; - Some (px) -> &mut@6 (3: i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (x) -> 23: u32 ; + Some (y) -> 44: u32 ; + Some (z) -> 67: u32 ; + Some (p) -> test1::Pair { x = 23: u32; y = 67: u32; } ; + Some (var@5) -> ⊥ : u32 ; + Some (s) -> test1::Sum::Right { 0 = true; } ; + Some (o) -> test1::One::One { 0 = 3: u64; } ; + Some (e0) -> test1::EmptyEnum::Empty ; + Some (e1) -> ⊥ : test1::EmptyEnum ; + Some (enum0) -> ⊥ : test1::Enum ; } -[Debug] eval_operand: -- ctx: +[Debug] +**About to evaluate statement**: [ + set_discriminant(enum0, 0) +] + +**Context**: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 1: i32 ; - Some (px) -> &mut@6 (3: i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (x) -> 23: u32 ; + Some (y) -> 44: u32 ; + Some (z) -> 67: u32 ; + Some (p) -> test1::Pair { x = 23: u32; y = 67: u32; } ; + Some (var@5) -> ⊥ : u32 ; + Some (s) -> test1::Sum::Right { 0 = true; } ; + Some (o) -> test1::One::One { 0 = 3: u64; } ; + Some (e0) -> test1::EmptyEnum::Empty ; + Some (e1) -> ⊥ : test1::EmptyEnum ; + Some (enum0) -> ⊥ : test1::Enum ; } -- op: -copy y -[Debug] end borrow: 5: -- original context: +[Debug] +**About to evaluate statement**: [ + return +] + +**Context**: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 1: i32 ; - Some (px) -> &mut@6 (3: i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (x) -> 23: u32 ; + Some (y) -> 44: u32 ; + Some (z) -> 67: u32 ; + Some (p) -> test1::Pair { x = 23: u32; y = 67: u32; } ; + Some (var@5) -> ⊥ : u32 ; + Some (s) -> test1::Sum::Right { 0 = true; } ; + Some (o) -> test1::One::One { 0 = 3: u64; } ; + Some (e0) -> test1::EmptyEnum::Empty ; + Some (e1) -> ⊥ : test1::EmptyEnum ; + Some (enum0) -> test1::Enum::Variant1 ; } -[Debug] end borrow: 5: found outer borrows/abs:(InterpreterBorrowsCore.InnerLoans (InterpreterBorrowsCore.Borrow 6)) -[Debug] end borrow: 6: -- original context: + + +[Debug] test_function_symbolic: get_max +[Debug] +**About to evaluate statement**: [ + var@4 := copy x; + var@5 := copy y; + var@3 := move var@4 >= move var@5; + if (move var@3) { + var@0 := copy x + } + else { + var@0 := copy y + }; + return +] + +**Context**: # Ended regions: {} # 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> 1: i32 ; - Some (px) -> &mut@6 (3: i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@0) -> ⊥ : u32 ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (var@5) -> ⊥ : u32 ; } -[Debug] give_back: -- bid: 6 -- content: &mut@6 (3: i32) -- context: + + +[Debug] +**About to evaluate statement**: [ + var@4 := copy x +] + +**Context**: # Ended regions: {} # 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> 1: i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@0) -> ⊥ : u32 ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (var@5) -> ⊥ : u32 ; } -[Debug] give_back_value: -- bid: 6 -- value: 3: i32 -- context: + +[Debug] eval_operand: +- ctx: # Ended regions: {} # 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> 1: i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@0) -> ⊥ : u32 ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (var@5) -> ⊥ : u32 ; } -[Debug] end borrow: 5: -- original context: +- op: +copy x + +[Debug] +**About to evaluate statement**: [ + var@5 := copy y; + var@3 := move var@4 >= move var@5; + if (move var@3) { + var@0 := copy x + } + else { + var@0 := copy y + }; + return +] + +**Context**: # Ended regions: {} # 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> 1: i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (3: i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@0) -> ⊥ : u32 ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> s@0 : u32 ; + Some (var@5) -> ⊥ : u32 ; } -[Debug] give_back: -- bid: 5 -- content: &mut@5 (3: i32) -- context: + + +[Debug] +**About to evaluate statement**: [ + var@5 := copy y +] + +**Context**: # Ended regions: {} # 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> 1: i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@0) -> ⊥ : u32 ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> s@0 : u32 ; + Some (var@5) -> ⊥ : u32 ; } -[Debug] give_back_value: -- bid: 5 -- value: 3: i32 -- context: + +[Debug] eval_operand: +- ctx: # Ended regions: {} # 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> 1: i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@0) -> ⊥ : u32 ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> s@0 : u32 ; + Some (var@5) -> ⊥ : u32 ; } +- op: +copy y + [Debug] **About to evaluate statement**: [ - var@16 := move var@17 == 3: i32; - var@15 := ¬ move var@16; - assert(¬move var@15); + var@3 := move var@4 >= move var@5; + if (move var@3) { + var@0 := copy x + } + else { + var@0 := copy y + }; return ] @@ -112940,34 +111522,19 @@ copy y # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> 1: i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> 3: i32 ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> 3: i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@0) -> ⊥ : u32 ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> s@0 : u32 ; + Some (var@5) -> s@1 : u32 ; } [Debug] **About to evaluate statement**: [ - var@16 := move var@17 == 3: i32 + var@3 := move var@4 >= move var@5 ] **Context**: @@ -112976,27 +111543,12 @@ copy y # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> 1: i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> 3: i32 ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> 3: i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@0) -> ⊥ : u32 ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> s@0 : u32 ; + Some (var@5) -> s@1 : u32 ; } @@ -113008,32 +111560,17 @@ copy y # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> 1: i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> 3: i32 ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> 3: i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@0) -> ⊥ : u32 ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> s@0 : u32 ; + Some (var@5) -> s@1 : u32 ; } - op: -move var@17 +move var@4 [Debug] eval_operand: - ctx: @@ -113042,37 +111579,26 @@ move var@17 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> 1: i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> 3: i32 ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@0) -> ⊥ : u32 ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (var@5) -> s@1 : u32 ; } - op: -3: i32 +move var@5 [Debug] **About to evaluate statement**: [ - var@15 := ¬ move var@16; - assert(¬move var@15); + if (move var@3) { + var@0 := copy x + } + else { + var@0 := copy y + }; return ] @@ -113082,34 +111608,24 @@ move var@17 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> 1: i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> 3: i32 ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> true ; - Some (var@17) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@0) -> ⊥ : u32 ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (var@3) -> s@2 : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (var@5) -> ⊥ : u32 ; } [Debug] **About to evaluate statement**: [ - var@15 := ¬ move var@16 + if (move var@3) { + var@0 := copy x + } + else { + var@0 := copy y + } ] **Context**: @@ -113118,27 +111634,12 @@ move var@17 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> 1: i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> 3: i32 ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> true ; - Some (var@17) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@0) -> ⊥ : u32 ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (var@3) -> s@2 : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (var@5) -> ⊥ : u32 ; } @@ -113150,37 +111651,21 @@ move var@17 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> 1: i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> 3: i32 ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> true ; - Some (var@17) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@0) -> ⊥ : u32 ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (var@3) -> true ; + Some (var@4) -> ⊥ : u32 ; + Some (var@5) -> ⊥ : u32 ; } - op: -move var@16 +move var@3 [Debug] **About to evaluate statement**: [ - assert(¬move var@15); - return + var@0 := copy x ] **Context**: @@ -113189,66 +111674,34 @@ move var@16 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> 1: i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> 3: i32 ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> false ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@0) -> ⊥ : u32 ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (var@5) -> ⊥ : u32 ; } -[Debug] -**About to evaluate statement**: [ - assert(¬move var@15) -] - -**Context**: +[Debug] eval_operand: +- ctx: # Ended regions: {} # 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> 1: i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> 3: i32 ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> false ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@0) -> ⊥ : u32 ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (var@5) -> ⊥ : u32 ; } +- op: +copy x [Debug] eval_operand: - ctx: @@ -113257,36 +111710,21 @@ move var@16 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> 1: i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> 3: i32 ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> false ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@0) -> ⊥ : u32 ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (var@3) -> false ; + Some (var@4) -> ⊥ : u32 ; + Some (var@5) -> ⊥ : u32 ; } - op: -move var@15 +move var@3 [Debug] **About to evaluate statement**: [ - return + var@0 := copy y ] **Context**: @@ -113295,81 +111733,38 @@ move var@15 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> 1: i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> 3: i32 ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@0) -> ⊥ : u32 ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (var@5) -> ⊥ : u32 ; } -[Debug] test_unit_function: id_mut_mut_test3 -[Debug] -**About to evaluate statement**: [ - x := 0: i32; - px := &mut x; - ppx := &mut px; - var@5 := &two-phase *(ppx); - ppy := move id_mut_mut(move var@5); - *(*(ppy)) := 1: i32; - var@7 := &two-phase *(ppy); - ppz := move id_mut_mut(move var@7); - *(*(ppz)) := 2: i32; - var@10 := copy *(px); - var@9 := move var@10 == 2: i32; - var@8 := ¬ move var@9; - assert(¬move var@8); - var@13 := copy x; - var@12 := move var@13 == 2: i32; - var@11 := ¬ move var@12; - assert(¬move var@11); - return -] - -**Context**: +[Debug] eval_operand: +- ctx: # Ended regions: {} # 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> ⊥ : i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@0) -> ⊥ : u32 ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (var@5) -> ⊥ : u32 ; } +- op: +copy y [Debug] **About to evaluate statement**: [ - x := 0: i32 + return ] **Context**: @@ -113378,69 +111773,49 @@ move var@15 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> ⊥ : i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@0) -> s@0 : u32 ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (var@5) -> ⊥ : u32 ; } -[Debug] eval_operand: -- ctx: +[Debug] +**About to evaluate statement**: [ + return +] + +**Context**: # Ended regions: {} # 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> ⊥ : i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@0) -> s@1 : u32 ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (var@5) -> ⊥ : u32 ; } -- op: -0: i32 +[Debug] test_function_symbolic: test3 [Debug] **About to evaluate statement**: [ - px := &mut x; - ppx := &mut px; - var@5 := &two-phase *(ppx); - ppy := move id_mut_mut(move var@5); - *(*(ppy)) := 1: i32; - var@7 := &two-phase *(ppy); - ppz := move id_mut_mut(move var@7); - *(*(ppz)) := 2: i32; - var@10 := copy *(px); - var@9 := move var@10 == 2: i32; - var@8 := ¬ move var@9; - assert(¬move var@8); - var@13 := copy x; - var@12 := move var@13 == 2: i32; - var@11 := ¬ move var@12; - assert(¬move var@11); + 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 ] @@ -113451,26 +111826,22 @@ move var@15 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (x) -> ⊥ : u32 ; + Some (y) -> ⊥ : u32 ; + Some (z) -> ⊥ : u32 ; + Some (var@4) -> ⊥ : u32 ; + Some (var@5) -> ⊥ : u32 ; + Some (var@6) -> ⊥ : (u32, bool) ; + Some (var@7) -> ⊥ : bool ; Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@9) -> ⊥ : u32 ; } [Debug] **About to evaluate statement**: [ - px := &mut x + x := move get_max(4: u32, 3: u32) ] **Context**: @@ -113480,70 +111851,76 @@ move var@15 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (x) -> ⊥ : u32 ; + Some (y) -> ⊥ : u32 ; + Some (z) -> ⊥ : u32 ; + Some (var@4) -> ⊥ : u32 ; + Some (var@5) -> ⊥ : u32 ; + Some (var@6) -> ⊥ : (u32, bool) ; + Some (var@7) -> ⊥ : bool ; Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@9) -> ⊥ : u32 ; } -[Debug] -**About to evaluate statement**: [ - ppx := &mut px; - var@5 := &two-phase *(ppx); - ppy := move id_mut_mut(move var@5); - *(*(ppy)) := 1: i32; - var@7 := &two-phase *(ppy); - ppz := move id_mut_mut(move var@7); - *(*(ppz)) := 2: i32; - var@10 := copy *(px); - var@9 := move var@10 == 2: i32; - var@8 := ¬ move var@9; - assert(¬move var@8); - var@13 := copy x; - var@12 := move var@13 == 2: i32; - var@11 := ¬ move var@12; - assert(¬move var@11); - return -] +[Debug] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) -**Context**: +# Frame 0: +{ + Some (var@0) -> ⊥ : () ; + Some (x) -> ⊥ : u32 ; + Some (y) -> ⊥ : u32 ; + Some (z) -> ⊥ : u32 ; + Some (var@4) -> ⊥ : u32 ; + Some (var@5) -> ⊥ : u32 ; + Some (var@6) -> ⊥ : (u32, bool) ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : u32 ; +} + + +- op: +4: u32 + +[Debug] eval_operand: +- ctx: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@0 (0: i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (x) -> ⊥ : u32 ; + Some (y) -> ⊥ : u32 ; + Some (z) -> ⊥ : u32 ; + Some (var@4) -> ⊥ : u32 ; + Some (var@5) -> ⊥ : u32 ; + Some (var@6) -> ⊥ : (u32, bool) ; + Some (var@7) -> ⊥ : bool ; Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@9) -> ⊥ : u32 ; } +- op: +3: u32 [Debug] **About to evaluate statement**: [ - ppx := &mut px + 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**: @@ -113553,40 +111930,22 @@ move var@15 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@0 (0: i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (x) -> s@0 : u32 ; + Some (y) -> ⊥ : u32 ; + Some (z) -> ⊥ : u32 ; + Some (var@4) -> ⊥ : u32 ; + Some (var@5) -> ⊥ : u32 ; + Some (var@6) -> ⊥ : (u32, bool) ; + Some (var@7) -> ⊥ : bool ; Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@9) -> ⊥ : u32 ; } [Debug] **About to evaluate statement**: [ - var@5 := &two-phase *(ppx); - ppy := move id_mut_mut(move var@5); - *(*(ppy)) := 1: i32; - var@7 := &two-phase *(ppy); - ppz := move id_mut_mut(move var@7); - *(*(ppz)) := 2: i32; - var@10 := copy *(px); - var@9 := move var@10 == 2: i32; - var@8 := ¬ move var@9; - assert(¬move var@8); - var@13 := copy x; - var@12 := move var@13 == 2: i32; - var@11 := ¬ move var@12; - assert(¬move var@11); - return + y := move get_max(10: u32, 11: u32) ] **Context**: @@ -113596,67 +111955,74 @@ move var@15 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (&mut@0 (0: i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (x) -> s@0 : u32 ; + Some (y) -> ⊥ : u32 ; + Some (z) -> ⊥ : u32 ; + Some (var@4) -> ⊥ : u32 ; + Some (var@5) -> ⊥ : u32 ; + Some (var@6) -> ⊥ : (u32, bool) ; + Some (var@7) -> ⊥ : bool ; Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@9) -> ⊥ : u32 ; } -[Debug] -**About to evaluate statement**: [ - var@5 := &two-phase *(ppx) -] +[Debug] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) -**Context**: +# Frame 0: +{ + Some (var@0) -> ⊥ : () ; + Some (x) -> s@0 : u32 ; + Some (y) -> ⊥ : u32 ; + Some (z) -> ⊥ : u32 ; + Some (var@4) -> ⊥ : u32 ; + Some (var@5) -> ⊥ : u32 ; + Some (var@6) -> ⊥ : (u32, bool) ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : u32 ; +} + + +- op: +10: u32 + +[Debug] eval_operand: +- ctx: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (&mut@0 (0: i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (x) -> s@0 : u32 ; + Some (y) -> ⊥ : u32 ; + Some (z) -> ⊥ : u32 ; + Some (var@4) -> ⊥ : u32 ; + Some (var@5) -> ⊥ : u32 ; + Some (var@6) -> ⊥ : (u32, bool) ; + Some (var@7) -> ⊥ : bool ; Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@9) -> ⊥ : u32 ; } +- op: +11: u32 [Debug] **About to evaluate statement**: [ - ppy := move id_mut_mut(move var@5); - *(*(ppy)) := 1: i32; - var@7 := &two-phase *(ppy); - ppz := move id_mut_mut(move var@7); - *(*(ppz)) := 2: i32; - var@10 := copy *(px); - var@9 := move var@10 == 2: i32; - var@8 := ¬ move var@9; - assert(¬move var@8); - var@13 := copy x; - var@12 := move var@13 == 2: i32; - var@11 := ¬ move var@12; - assert(¬move var@11); + 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 ] @@ -113667,26 +112033,22 @@ move var@15 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (@shared_loan({2}, &mut@0 (0: i32))) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⌊inactivated_mut@2⌋ ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (z) -> ⊥ : u32 ; + Some (var@4) -> ⊥ : u32 ; + Some (var@5) -> ⊥ : u32 ; + Some (var@6) -> ⊥ : (u32, bool) ; + Some (var@7) -> ⊥ : bool ; Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@9) -> ⊥ : u32 ; } [Debug] **About to evaluate statement**: [ - ppy := move id_mut_mut(move var@5) + var@4 := copy x ] **Context**: @@ -113696,25 +112058,19 @@ move var@15 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (@shared_loan({2}, &mut@0 (0: i32))) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⌊inactivated_mut@2⌋ ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (z) -> ⊥ : u32 ; + Some (var@4) -> ⊥ : u32 ; + Some (var@5) -> ⊥ : u32 ; + Some (var@6) -> ⊥ : (u32, bool) ; + Some (var@7) -> ⊥ : bool ; Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@9) -> ⊥ : u32 ; } -[Debug] activate_inactivated_mut_borrow: resulting value: -&mut@0 (0: i32) [Debug] eval_operand: - ctx: # Ended regions: {} @@ -113723,285 +112079,207 @@ move var@15 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> &mut@2 (&mut@0 (0: i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (z) -> ⊥ : u32 ; + Some (var@4) -> ⊥ : u32 ; + Some (var@5) -> ⊥ : u32 ; + Some (var@6) -> ⊥ : (u32, bool) ; + Some (var@7) -> ⊥ : bool ; Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@9) -> ⊥ : u32 ; } - op: -move var@5 +copy x [Debug] **About to evaluate statement**: [ - var@2 := &mut *(x); - var@0 := &mut *(var@2); + var@5 := copy y; + z := copy var@4 + copy var@5; + var@9 := copy z; + var@8 := move var@9 == 15: u32; + var@7 := ¬ move var@8; + assert(¬move var@7); return ] **Context**: # Ended regions: {} -# 2 frame(s) +# 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (z) -> ⊥ : u32 ; + Some (var@4) -> s@0 : u32 ; + Some (var@5) -> ⊥ : u32 ; + Some (var@6) -> ⊥ : (u32, bool) ; + Some (var@7) -> ⊥ : bool ; Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; -} - -# Frame 1: -{ - Some (var@0) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (x) -> &mut@2 (&mut@0 (0: i32)) ; - Some (var@2) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@9) -> ⊥ : u32 ; } [Debug] **About to evaluate statement**: [ - var@2 := &mut *(x) + var@5 := copy y ] **Context**: # Ended regions: {} -# 2 frame(s) +# 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (z) -> ⊥ : u32 ; + Some (var@4) -> s@0 : u32 ; + Some (var@5) -> ⊥ : u32 ; + Some (var@6) -> ⊥ : (u32, bool) ; + Some (var@7) -> ⊥ : bool ; Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; -} - -# Frame 1: -{ - Some (var@0) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (x) -> &mut@2 (&mut@0 (0: i32)) ; - Some (var@2) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@9) -> ⊥ : u32 ; } -[Debug] -**About to evaluate statement**: [ - var@0 := &mut *(var@2); - return -] - -**Context**: +[Debug] eval_operand: +- ctx: # Ended regions: {} -# 2 frame(s) +# 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (z) -> ⊥ : u32 ; + Some (var@4) -> s@0 : u32 ; + Some (var@5) -> ⊥ : u32 ; + Some (var@6) -> ⊥ : (u32, bool) ; + Some (var@7) -> ⊥ : bool ; Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; -} - -# Frame 1: -{ - Some (var@0) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (x) -> &mut@2 (⌊mut@3⌋) ; - Some (var@2) -> &mut@3 (&mut@0 (0: i32)) ; + Some (var@9) -> ⊥ : u32 ; } +- op: +copy y [Debug] **About to evaluate statement**: [ - var@0 := &mut *(var@2) + z := copy var@4 + copy var@5; + var@9 := copy z; + var@8 := move var@9 == 15: u32; + var@7 := ¬ move var@8; + assert(¬move var@7); + return ] **Context**: # Ended regions: {} -# 2 frame(s) +# 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (z) -> ⊥ : u32 ; + Some (var@4) -> s@0 : u32 ; + Some (var@5) -> s@1 : u32 ; + Some (var@6) -> ⊥ : (u32, bool) ; + Some (var@7) -> ⊥ : bool ; Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; -} - -# Frame 1: -{ - Some (var@0) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (x) -> &mut@2 (⌊mut@3⌋) ; - Some (var@2) -> &mut@3 (&mut@0 (0: i32)) ; + Some (var@9) -> ⊥ : u32 ; } [Debug] **About to evaluate statement**: [ - return + z := copy var@4 + copy var@5 ] **Context**: # Ended regions: {} -# 2 frame(s) +# 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (z) -> ⊥ : u32 ; + Some (var@4) -> s@0 : u32 ; + Some (var@5) -> s@1 : u32 ; + Some (var@6) -> ⊥ : (u32, bool) ; + Some (var@7) -> ⊥ : bool ; Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; -} - -# Frame 1: -{ - Some (var@0) -> &mut@4 (&mut@0 (0: i32)) ; - Some (x) -> &mut@2 (⌊mut@3⌋) ; - Some (var@2) -> &mut@3 (⌊mut@4⌋) ; + Some (var@9) -> ⊥ : u32 ; } -[Debug] ctx_pop_frame: +[Debug] eval_operand: +- ctx: # Ended regions: {} -# 2 frame(s) +# 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (z) -> ⊥ : u32 ; + Some (var@4) -> s@0 : u32 ; + Some (var@5) -> s@1 : u32 ; + Some (var@6) -> ⊥ : (u32, bool) ; + Some (var@7) -> ⊥ : bool ; Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@9) -> ⊥ : u32 ; } -# Frame 1: -{ - Some (var@0) -> &mut@4 (&mut@0 (0: i32)) ; - Some (x) -> &mut@2 (⌊mut@3⌋) ; - Some (var@2) -> &mut@3 (⌊mut@4⌋) ; -} + +- op: +copy var@4 [Debug] eval_operand: - ctx: # Ended regions: {} -# 2 frame(s) +# 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (z) -> ⊥ : u32 ; + Some (var@4) -> s@0 : u32 ; + Some (var@5) -> s@1 : u32 ; + Some (var@6) -> ⊥ : (u32, bool) ; + Some (var@7) -> ⊥ : bool ; Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; -} - -# Frame 1: -{ - Some (var@0) -> &mut@4 (&mut@0 (0: i32)) ; - Some (x) -> &mut@2 (⌊mut@3⌋) ; - Some (var@2) -> &mut@3 (⌊mut@4⌋) ; + Some (var@9) -> ⊥ : u32 ; } - op: -move var@0 +copy var@5 [Debug] **About to evaluate statement**: [ - *(*(ppy)) := 1: i32; - var@7 := &two-phase *(ppy); - ppz := move id_mut_mut(move var@7); - *(*(ppz)) := 2: i32; - var@10 := copy *(px); - var@9 := move var@10 == 2: i32; - var@8 := ¬ move var@9; - assert(¬move var@8); - var@13 := copy x; - var@12 := move var@13 == 2: i32; - var@11 := ¬ move var@12; - assert(¬move var@11); + var@9 := copy z; + var@8 := move var@9 == 15: u32; + var@7 := ¬ move var@8; + assert(¬move var@7); return ] @@ -114012,29 +112290,22 @@ move var@0 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@4 (&mut@0 (0: i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (z) -> s@2 : u32 ; + Some (var@4) -> s@0 : u32 ; + Some (var@5) -> s@1 : u32 ; + Some (var@6) -> ⊥ : (u32, bool) ; + Some (var@7) -> ⊥ : bool ; Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@2 (⌊mut@3⌋) ; - None -> &mut@3 (⌊mut@4⌋) ; + Some (var@9) -> ⊥ : u32 ; } [Debug] **About to evaluate statement**: [ - *(*(ppy)) := 1: i32 + var@9 := copy z ] **Context**: @@ -114044,22 +112315,15 @@ move var@0 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@4 (&mut@0 (0: i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (z) -> s@2 : u32 ; + Some (var@4) -> s@0 : u32 ; + Some (var@5) -> s@1 : u32 ; + Some (var@6) -> ⊥ : (u32, bool) ; + Some (var@7) -> ⊥ : bool ; Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@2 (⌊mut@3⌋) ; - None -> &mut@3 (⌊mut@4⌋) ; + Some (var@9) -> ⊥ : u32 ; } @@ -114072,41 +112336,26 @@ move var@0 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@4 (&mut@0 (0: i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (z) -> s@2 : u32 ; + Some (var@4) -> s@0 : u32 ; + Some (var@5) -> s@1 : u32 ; + Some (var@6) -> ⊥ : (u32, bool) ; + Some (var@7) -> ⊥ : bool ; Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@2 (⌊mut@3⌋) ; - None -> &mut@3 (⌊mut@4⌋) ; + Some (var@9) -> ⊥ : u32 ; } - op: -1: i32 +copy z [Debug] **About to evaluate statement**: [ - var@7 := &two-phase *(ppy); - ppz := move id_mut_mut(move var@7); - *(*(ppz)) := 2: i32; - var@10 := copy *(px); - var@9 := move var@10 == 2: i32; - var@8 := ¬ move var@9; - assert(¬move var@8); - var@13 := copy x; - var@12 := move var@13 == 2: i32; - var@11 := ¬ move var@12; - assert(¬move var@11); + var@8 := move var@9 == 15: u32; + var@7 := ¬ move var@8; + assert(¬move var@7); return ] @@ -114117,29 +112366,22 @@ move var@0 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@4 (&mut@0 (1: i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (z) -> s@2 : u32 ; + Some (var@4) -> s@0 : u32 ; + Some (var@5) -> s@1 : u32 ; + Some (var@6) -> ⊥ : (u32, bool) ; + Some (var@7) -> ⊥ : bool ; Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@2 (⌊mut@3⌋) ; - None -> &mut@3 (⌊mut@4⌋) ; + Some (var@9) -> s@2 : u32 ; } [Debug] **About to evaluate statement**: [ - var@7 := &two-phase *(ppy) + var@8 := move var@9 == 15: u32 ] **Context**: @@ -114149,38 +112391,69 @@ move var@0 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@4 (&mut@0 (1: i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (z) -> s@2 : u32 ; + Some (var@4) -> s@0 : u32 ; + Some (var@5) -> s@1 : u32 ; + Some (var@6) -> ⊥ : (u32, bool) ; + Some (var@7) -> ⊥ : bool ; Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@2 (⌊mut@3⌋) ; - None -> &mut@3 (⌊mut@4⌋) ; + Some (var@9) -> s@2 : u32 ; +} + + + +[Debug] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + Some (var@0) -> ⊥ : () ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (z) -> s@2 : u32 ; + Some (var@4) -> s@0 : u32 ; + Some (var@5) -> s@1 : u32 ; + Some (var@6) -> ⊥ : (u32, bool) ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> s@2 : u32 ; +} + + +- op: +move var@9 + +[Debug] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + Some (var@0) -> ⊥ : () ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (z) -> s@2 : u32 ; + Some (var@4) -> s@0 : u32 ; + Some (var@5) -> s@1 : u32 ; + Some (var@6) -> ⊥ : (u32, bool) ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : u32 ; } +- op: +15: u32 [Debug] **About to evaluate statement**: [ - ppz := move id_mut_mut(move var@7); - *(*(ppz)) := 2: i32; - var@10 := copy *(px); - var@9 := move var@10 == 2: i32; - var@8 := ¬ move var@9; - assert(¬move var@8); - var@13 := copy x; - var@12 := move var@13 == 2: i32; - var@11 := ¬ move var@12; - assert(¬move var@11); + var@7 := ¬ move var@8; + assert(¬move var@7); return ] @@ -114191,29 +112464,22 @@ move var@0 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@4 (@shared_loan({5}, &mut@0 (1: i32))) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⌊inactivated_mut@5⌋ ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@2 (⌊mut@3⌋) ; - None -> &mut@3 (⌊mut@4⌋) ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (z) -> s@2 : u32 ; + Some (var@4) -> s@0 : u32 ; + Some (var@5) -> s@1 : u32 ; + Some (var@6) -> ⊥ : (u32, bool) ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> s@3 : bool ; + Some (var@9) -> ⊥ : u32 ; } [Debug] **About to evaluate statement**: [ - ppz := move id_mut_mut(move var@7) + var@7 := ¬ move var@8 ] **Context**: @@ -114223,28 +112489,19 @@ move var@0 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@4 (@shared_loan({5}, &mut@0 (1: i32))) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⌊inactivated_mut@5⌋ ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@2 (⌊mut@3⌋) ; - None -> &mut@3 (⌊mut@4⌋) ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (z) -> s@2 : u32 ; + Some (var@4) -> s@0 : u32 ; + Some (var@5) -> s@1 : u32 ; + Some (var@6) -> ⊥ : (u32, bool) ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> s@3 : bool ; + Some (var@9) -> ⊥ : u32 ; } -[Debug] activate_inactivated_mut_borrow: resulting value: -&mut@0 (1: i32) [Debug] eval_operand: - ctx: # Ended regions: {} @@ -114253,306 +112510,259 @@ move var@0 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@4 (⌊mut@5⌋) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> &mut@5 (&mut@0 (1: i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@2 (⌊mut@3⌋) ; - None -> &mut@3 (⌊mut@4⌋) ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (z) -> s@2 : u32 ; + Some (var@4) -> s@0 : u32 ; + Some (var@5) -> s@1 : u32 ; + Some (var@6) -> ⊥ : (u32, bool) ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> s@3 : bool ; + Some (var@9) -> ⊥ : u32 ; } - op: -move var@7 +move var@8 [Debug] **About to evaluate statement**: [ - var@2 := &mut *(x); - var@0 := &mut *(var@2); + assert(¬move var@7); return ] **Context**: # Ended regions: {} -# 2 frame(s) +# 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@4 (⌊mut@5⌋) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (z) -> s@2 : u32 ; + Some (var@4) -> s@0 : u32 ; + Some (var@5) -> s@1 : u32 ; + Some (var@6) -> ⊥ : (u32, bool) ; + Some (var@7) -> s@4 : bool ; Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@2 (⌊mut@3⌋) ; - None -> &mut@3 (⌊mut@4⌋) ; -} - -# Frame 1: -{ - Some (var@0) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (x) -> &mut@5 (&mut@0 (1: i32)) ; - Some (var@2) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@9) -> ⊥ : u32 ; } [Debug] **About to evaluate statement**: [ - var@2 := &mut *(x) + assert(¬move var@7) ] **Context**: # Ended regions: {} -# 2 frame(s) +# 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@4 (⌊mut@5⌋) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (z) -> s@2 : u32 ; + Some (var@4) -> s@0 : u32 ; + Some (var@5) -> s@1 : u32 ; + Some (var@6) -> ⊥ : (u32, bool) ; + Some (var@7) -> s@4 : bool ; Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@2 (⌊mut@3⌋) ; - None -> &mut@3 (⌊mut@4⌋) ; + Some (var@9) -> ⊥ : u32 ; } -# Frame 1: + + +[Debug] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: { - Some (var@0) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (x) -> &mut@5 (&mut@0 (1: i32)) ; - Some (var@2) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@0) -> ⊥ : () ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (z) -> s@2 : u32 ; + Some (var@4) -> s@0 : u32 ; + Some (var@5) -> s@1 : u32 ; + Some (var@6) -> ⊥ : (u32, bool) ; + Some (var@7) -> true ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : u32 ; } +- op: +move var@7 [Debug] **About to evaluate statement**: [ - var@0 := &mut *(var@2); return ] **Context**: # Ended regions: {} -# 2 frame(s) +# 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@4 (⌊mut@5⌋) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (x) -> s@0 : u32 ; + Some (y) -> s@1 : u32 ; + Some (z) -> s@2 : u32 ; + Some (var@4) -> s@0 : u32 ; + Some (var@5) -> s@1 : u32 ; + Some (var@6) -> ⊥ : (u32, bool) ; + Some (var@7) -> ⊥ : bool ; Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@2 (⌊mut@3⌋) ; - None -> &mut@3 (⌊mut@4⌋) ; + Some (var@9) -> ⊥ : u32 ; } -# Frame 1: + + +[Debug] test_function_symbolic: test_neg +[Debug] +**About to evaluate statement**: [ + var@2 := copy x; + var@3 := copy var@2 == -2147483648: i32; + assert(¬move var@3); + var@0 := - move var@2; + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: { - Some (var@0) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (x) -> &mut@5 (⌊mut@6⌋) ; - Some (var@2) -> &mut@6 (&mut@0 (1: i32)) ; + Some (var@0) -> ⊥ : i32 ; + Some (x) -> s@0 : i32 ; + Some (var@2) -> ⊥ : i32 ; + Some (var@3) -> ⊥ : bool ; } [Debug] **About to evaluate statement**: [ - var@0 := &mut *(var@2) + var@2 := copy x ] **Context**: # Ended regions: {} -# 2 frame(s) +# 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@4 (⌊mut@5⌋) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@2 (⌊mut@3⌋) ; - None -> &mut@3 (⌊mut@4⌋) ; + Some (var@0) -> ⊥ : i32 ; + Some (x) -> s@0 : i32 ; + Some (var@2) -> ⊥ : i32 ; + Some (var@3) -> ⊥ : bool ; } -# Frame 1: + + +[Debug] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: { - Some (var@0) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (x) -> &mut@5 (⌊mut@6⌋) ; - Some (var@2) -> &mut@6 (&mut@0 (1: i32)) ; + Some (var@0) -> ⊥ : i32 ; + Some (x) -> s@0 : i32 ; + Some (var@2) -> ⊥ : i32 ; + Some (var@3) -> ⊥ : bool ; } +- op: +copy x [Debug] **About to evaluate statement**: [ + var@3 := copy var@2 == -2147483648: i32; + assert(¬move var@3); + var@0 := - move var@2; return ] **Context**: # Ended regions: {} -# 2 frame(s) +# 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@4 (⌊mut@5⌋) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@2 (⌊mut@3⌋) ; - None -> &mut@3 (⌊mut@4⌋) ; + Some (var@0) -> ⊥ : i32 ; + Some (x) -> s@0 : i32 ; + Some (var@2) -> s@0 : i32 ; + Some (var@3) -> ⊥ : bool ; } -# Frame 1: -{ - Some (var@0) -> &mut@7 (&mut@0 (1: i32)) ; - Some (x) -> &mut@5 (⌊mut@6⌋) ; - Some (var@2) -> &mut@6 (⌊mut@7⌋) ; -} +[Debug] +**About to evaluate statement**: [ + var@3 := copy var@2 == -2147483648: i32 +] -[Debug] ctx_pop_frame: +**Context**: # Ended regions: {} -# 2 frame(s) +# 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@4 (⌊mut@5⌋) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@2 (⌊mut@3⌋) ; - None -> &mut@3 (⌊mut@4⌋) ; + Some (var@0) -> ⊥ : i32 ; + Some (x) -> s@0 : i32 ; + Some (var@2) -> s@0 : i32 ; + Some (var@3) -> ⊥ : bool ; } -# Frame 1: -{ - Some (var@0) -> &mut@7 (&mut@0 (1: i32)) ; - Some (x) -> &mut@5 (⌊mut@6⌋) ; - Some (var@2) -> &mut@6 (⌊mut@7⌋) ; -} + [Debug] eval_operand: - ctx: # Ended regions: {} -# 2 frame(s) +# 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@4 (⌊mut@5⌋) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@2 (⌊mut@3⌋) ; - None -> &mut@3 (⌊mut@4⌋) ; + Some (var@0) -> ⊥ : i32 ; + Some (x) -> s@0 : i32 ; + Some (var@2) -> s@0 : i32 ; + Some (var@3) -> ⊥ : bool ; } -# Frame 1: + +- op: +copy var@2 + +[Debug] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: { - Some (var@0) -> &mut@7 (&mut@0 (1: i32)) ; - Some (x) -> &mut@5 (⌊mut@6⌋) ; - Some (var@2) -> &mut@6 (⌊mut@7⌋) ; + Some (var@0) -> ⊥ : i32 ; + Some (x) -> s@0 : i32 ; + Some (var@2) -> s@0 : i32 ; + Some (var@3) -> ⊥ : bool ; } - op: -move var@0 +-2147483648: i32 [Debug] **About to evaluate statement**: [ - *(*(ppz)) := 2: i32; - var@10 := copy *(px); - var@9 := move var@10 == 2: i32; - var@8 := ¬ move var@9; - assert(¬move var@8); - var@13 := copy x; - var@12 := move var@13 == 2: i32; - var@11 := ¬ move var@12; - assert(¬move var@11); + assert(¬move var@3); + var@0 := - move var@2; return ] @@ -114562,33 +112772,17 @@ move var@0 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@4 (⌊mut@5⌋) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> &mut@7 (&mut@0 (1: i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@2 (⌊mut@3⌋) ; - None -> &mut@3 (⌊mut@4⌋) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@5 (⌊mut@6⌋) ; - None -> &mut@6 (⌊mut@7⌋) ; + Some (var@0) -> ⊥ : i32 ; + Some (x) -> s@0 : i32 ; + Some (var@2) -> s@0 : i32 ; + Some (var@3) -> s@1 : bool ; } [Debug] **About to evaluate statement**: [ - *(*(ppz)) := 2: i32 + assert(¬move var@3) ] **Context**: @@ -114597,26 +112791,10 @@ move var@0 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@4 (⌊mut@5⌋) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> &mut@7 (&mut@0 (1: i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@2 (⌊mut@3⌋) ; - None -> &mut@3 (⌊mut@4⌋) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@5 (⌊mut@6⌋) ; - None -> &mut@6 (⌊mut@7⌋) ; + Some (var@0) -> ⊥ : i32 ; + Some (x) -> s@0 : i32 ; + Some (var@2) -> s@0 : i32 ; + Some (var@3) -> s@1 : bool ; } @@ -114628,42 +112806,19 @@ move var@0 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@4 (⌊mut@5⌋) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> &mut@7 (&mut@0 (1: i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@2 (⌊mut@3⌋) ; - None -> &mut@3 (⌊mut@4⌋) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@5 (⌊mut@6⌋) ; - None -> &mut@6 (⌊mut@7⌋) ; + Some (var@0) -> ⊥ : i32 ; + Some (x) -> s@0 : i32 ; + Some (var@2) -> s@0 : i32 ; + Some (var@3) -> true ; } - op: -2: i32 +move var@3 [Debug] **About to evaluate statement**: [ - var@10 := copy *(px); - var@9 := move var@10 == 2: i32; - var@8 := ¬ move var@9; - assert(¬move var@8); - var@13 := copy x; - var@12 := move var@13 == 2: i32; - var@11 := ¬ move var@12; - assert(¬move var@11); + var@0 := - move var@2; return ] @@ -114673,33 +112828,17 @@ move var@0 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@4 (⌊mut@5⌋) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> &mut@7 (&mut@0 (2: i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@2 (⌊mut@3⌋) ; - None -> &mut@3 (⌊mut@4⌋) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@5 (⌊mut@6⌋) ; - None -> &mut@6 (⌊mut@7⌋) ; + Some (var@0) -> ⊥ : i32 ; + Some (x) -> s@0 : i32 ; + Some (var@2) -> s@0 : i32 ; + Some (var@3) -> ⊥ : bool ; } [Debug] **About to evaluate statement**: [ - var@10 := copy *(px) + var@0 := - move var@2 ] **Context**: @@ -114708,26 +112847,10 @@ move var@0 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@4 (⌊mut@5⌋) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> &mut@7 (&mut@0 (2: i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@2 (⌊mut@3⌋) ; - None -> &mut@3 (⌊mut@4⌋) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@5 (⌊mut@6⌋) ; - None -> &mut@6 (⌊mut@7⌋) ; + Some (var@0) -> ⊥ : i32 ; + Some (x) -> s@0 : i32 ; + Some (var@2) -> s@0 : i32 ; + Some (var@3) -> ⊥ : bool ; } @@ -114739,400 +112862,297 @@ move var@0 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@4 (⌊mut@5⌋) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> &mut@7 (&mut@0 (2: i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@2 (⌊mut@3⌋) ; - None -> &mut@3 (⌊mut@4⌋) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@5 (⌊mut@6⌋) ; - None -> &mut@6 (⌊mut@7⌋) ; + Some (var@0) -> ⊥ : i32 ; + Some (x) -> s@0 : i32 ; + Some (var@2) -> s@0 : i32 ; + Some (var@3) -> ⊥ : bool ; } - op: -copy *(px) +move var@2 -[Debug] end borrow: 1: -- original context: +[Debug] +**About to evaluate statement**: [ + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + Some (var@0) -> s@2 : i32 ; + Some (x) -> s@0 : i32 ; + Some (var@2) -> ⊥ : i32 ; + Some (var@3) -> ⊥ : bool ; +} + + + +[Debug] test_function_symbolic: test_neg1 +[Debug] +**About to evaluate statement**: [ + x := 3: i32; + y := -3: i32; + return +] + +**Context**: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@4 (⌊mut@5⌋) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> &mut@7 (&mut@0 (2: i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@2 (⌊mut@3⌋) ; - None -> &mut@3 (⌊mut@4⌋) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@5 (⌊mut@6⌋) ; - None -> &mut@6 (⌊mut@7⌋) ; + Some (x) -> ⊥ : i32 ; + Some (y) -> ⊥ : i32 ; } -[Debug] end borrow: 1: found outer borrows/abs:(InterpreterBorrowsCore.InnerLoans (InterpreterBorrowsCore.Borrow 2)) -[Debug] end borrow: 2: -- original context: + + +[Debug] +**About to evaluate statement**: [ + x := 3: i32 +] + +**Context**: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@4 (⌊mut@5⌋) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> &mut@7 (&mut@0 (2: i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@2 (⌊mut@3⌋) ; - None -> &mut@3 (⌊mut@4⌋) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@5 (⌊mut@6⌋) ; - None -> &mut@6 (⌊mut@7⌋) ; + Some (x) -> ⊥ : i32 ; + Some (y) -> ⊥ : i32 ; } -[Debug] end borrow: 2: found outer borrows/abs:(InterpreterBorrowsCore.InnerLoans (InterpreterBorrowsCore.Borrow 3)) -[Debug] end borrow: 3: -- original context: + + +[Debug] eval_operand: +- ctx: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@4 (⌊mut@5⌋) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> &mut@7 (&mut@0 (2: i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@2 (⌊mut@3⌋) ; - None -> &mut@3 (⌊mut@4⌋) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@5 (⌊mut@6⌋) ; - None -> &mut@6 (⌊mut@7⌋) ; + Some (x) -> ⊥ : i32 ; + Some (y) -> ⊥ : i32 ; } -[Debug] end borrow: 3: found outer borrows/abs:(InterpreterBorrowsCore.InnerLoans (InterpreterBorrowsCore.Borrow 4)) -[Debug] end borrow: 4: -- original context: + +- op: +3: i32 + +[Debug] +**About to evaluate statement**: [ + y := -3: i32; + return +] + +**Context**: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@4 (⌊mut@5⌋) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> &mut@7 (&mut@0 (2: i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@2 (⌊mut@3⌋) ; - None -> &mut@3 (⌊mut@4⌋) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@5 (⌊mut@6⌋) ; - None -> &mut@6 (⌊mut@7⌋) ; + Some (x) -> 3: i32 ; + Some (y) -> ⊥ : i32 ; } -[Debug] end borrow: 4: found outer borrows/abs:(InterpreterBorrowsCore.InnerLoans (InterpreterBorrowsCore.Borrow 5)) -[Debug] end borrow: 5: -- original context: + + +[Debug] +**About to evaluate statement**: [ + y := -3: i32 +] + +**Context**: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@4 (⌊mut@5⌋) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> &mut@7 (&mut@0 (2: i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@2 (⌊mut@3⌋) ; - None -> &mut@3 (⌊mut@4⌋) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@5 (⌊mut@6⌋) ; - None -> &mut@6 (⌊mut@7⌋) ; + Some (x) -> 3: i32 ; + Some (y) -> ⊥ : i32 ; } -[Debug] end borrow: 5: found outer borrows/abs:(InterpreterBorrowsCore.InnerLoans (InterpreterBorrowsCore.Borrow 6)) -[Debug] end borrow: 6: -- original context: + + +[Debug] eval_operand: +- ctx: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@4 (⌊mut@5⌋) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> &mut@7 (&mut@0 (2: i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@2 (⌊mut@3⌋) ; - None -> &mut@3 (⌊mut@4⌋) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@5 (⌊mut@6⌋) ; - None -> &mut@6 (⌊mut@7⌋) ; + Some (x) -> 3: i32 ; + Some (y) -> ⊥ : i32 ; } -[Debug] end borrow: 6: found outer borrows/abs:(InterpreterBorrowsCore.InnerLoans (InterpreterBorrowsCore.Borrow 7)) -[Debug] end borrow: 7: -- original context: + +- op: +-3: i32 + +[Debug] +**About to evaluate statement**: [ + return +] + +**Context**: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@4 (⌊mut@5⌋) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> &mut@7 (&mut@0 (2: i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@2 (⌊mut@3⌋) ; - None -> &mut@3 (⌊mut@4⌋) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@5 (⌊mut@6⌋) ; - None -> &mut@6 (⌊mut@7⌋) ; + Some (x) -> 3: i32 ; + Some (y) -> -3: i32 ; } -[Debug] give_back: -- bid: 7 -- content: &mut@7 (&mut@0 (2: i32)) -- context: + + +[Debug] test_function_symbolic: refs_test1 +[Debug] +**About to evaluate statement**: [ + x := 0: i32; + px := &mut x; + ppx := &mut px; + *(*(ppx)) := 1: i32; + var@6 := copy x; + var@5 := move var@6 == 1: i32; + var@4 := ¬ move var@5; + assert(¬move var@4); + return +] + +**Context**: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@4 (⌊mut@5⌋) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@2 (⌊mut@3⌋) ; - None -> &mut@3 (⌊mut@4⌋) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@5 (⌊mut@6⌋) ; - None -> &mut@6 (⌊mut@7⌋) ; + Some (x) -> ⊥ : i32 ; + Some (px) -> ⊥ : &'_ mut (i32) ; + Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@4) -> ⊥ : bool ; + Some (var@5) -> ⊥ : bool ; + Some (var@6) -> ⊥ : i32 ; } -[Debug] give_back_value: -- bid: 7 -- value: &mut@0 (2: i32) -- context: + +[Debug] +**About to evaluate statement**: [ + x := 0: i32 +] + +**Context**: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@4 (⌊mut@5⌋) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@2 (⌊mut@3⌋) ; - None -> &mut@3 (⌊mut@4⌋) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@5 (⌊mut@6⌋) ; - None -> &mut@6 (⌊mut@7⌋) ; + Some (x) -> ⊥ : i32 ; + Some (px) -> ⊥ : &'_ mut (i32) ; + Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@4) -> ⊥ : bool ; + Some (var@5) -> ⊥ : bool ; + Some (var@6) -> ⊥ : i32 ; } -[Debug] end borrow: 6: -- original context: + +[Debug] eval_operand: +- ctx: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@4 (⌊mut@5⌋) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@2 (⌊mut@3⌋) ; - None -> &mut@3 (⌊mut@4⌋) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@5 (⌊mut@6⌋) ; - None -> &mut@6 (&mut@0 (2: i32)) ; + Some (x) -> ⊥ : i32 ; + Some (px) -> ⊥ : &'_ mut (i32) ; + Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@4) -> ⊥ : bool ; + Some (var@5) -> ⊥ : bool ; + Some (var@6) -> ⊥ : i32 ; } -[Debug] give_back: -- bid: 6 -- content: &mut@6 (&mut@0 (2: i32)) -- context: + +- op: +0: i32 + +[Debug] +**About to evaluate statement**: [ + px := &mut x; + ppx := &mut px; + *(*(ppx)) := 1: i32; + var@6 := copy x; + var@5 := move var@6 == 1: i32; + var@4 := ¬ move var@5; + assert(¬move var@4); + return +] + +**Context**: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@4 (⌊mut@5⌋) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@2 (⌊mut@3⌋) ; - None -> &mut@3 (⌊mut@4⌋) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@5 (⌊mut@6⌋) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (x) -> 0: i32 ; + Some (px) -> ⊥ : &'_ mut (i32) ; + Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@4) -> ⊥ : bool ; + Some (var@5) -> ⊥ : bool ; + Some (var@6) -> ⊥ : i32 ; } -[Debug] give_back_value: -- bid: 6 -- value: &mut@0 (2: i32) -- context: + +[Debug] +**About to evaluate statement**: [ + px := &mut x +] + +**Context**: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@4 (⌊mut@5⌋) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@2 (⌊mut@3⌋) ; - None -> &mut@3 (⌊mut@4⌋) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@5 (⌊mut@6⌋) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (x) -> 0: i32 ; + Some (px) -> ⊥ : &'_ mut (i32) ; + Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@4) -> ⊥ : bool ; + Some (var@5) -> ⊥ : bool ; + Some (var@6) -> ⊥ : i32 ; } -[Debug] end borrow: 5: -- original context: + +[Debug] +**About to evaluate statement**: [ + ppx := &mut px; + *(*(ppx)) := 1: i32; + var@6 := copy x; + var@5 := move var@6 == 1: i32; + var@4 := ¬ move var@5; + assert(¬move var@4); + return +] + +**Context**: # Ended regions: {} # 1 frame(s) @@ -115140,30 +113160,21 @@ copy *(px) { Some (var@0) -> ⊥ : () ; Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@4 (⌊mut@5⌋) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@2 (⌊mut@3⌋) ; - None -> &mut@3 (⌊mut@4⌋) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@5 (&mut@0 (2: i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (px) -> &mut@0 (0: i32) ; + Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@4) -> ⊥ : bool ; + Some (var@5) -> ⊥ : bool ; + Some (var@6) -> ⊥ : i32 ; } -[Debug] give_back: -- bid: 5 -- content: &mut@5 (&mut@0 (2: i32)) -- context: + + +[Debug] +**About to evaluate statement**: [ + ppx := &mut px +] + +**Context**: # Ended regions: {} # 1 frame(s) @@ -115171,31 +113182,26 @@ copy *(px) { Some (var@0) -> ⊥ : () ; Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@4 (⌊mut@5⌋) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@2 (⌊mut@3⌋) ; - None -> &mut@3 (⌊mut@4⌋) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (px) -> &mut@0 (0: i32) ; + Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@4) -> ⊥ : bool ; + Some (var@5) -> ⊥ : bool ; + Some (var@6) -> ⊥ : i32 ; } -[Debug] give_back_value: -- bid: 5 -- value: &mut@0 (2: i32) -- context: + +[Debug] +**About to evaluate statement**: [ + *(*(ppx)) := 1: i32; + var@6 := copy x; + var@5 := move var@6 == 1: i32; + var@4 := ¬ move var@5; + assert(¬move var@4); + return +] + +**Context**: # Ended regions: {} # 1 frame(s) @@ -115204,28 +113210,20 @@ copy *(px) Some (var@0) -> ⊥ : () ; Some (x) -> ⌊mut@0⌋ ; Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@4 (⌊mut@5⌋) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@2 (⌊mut@3⌋) ; - None -> &mut@3 (⌊mut@4⌋) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (ppx) -> &mut@1 (&mut@0 (0: i32)) ; + Some (var@4) -> ⊥ : bool ; + Some (var@5) -> ⊥ : bool ; + Some (var@6) -> ⊥ : i32 ; } -[Debug] end borrow: 4: -- original context: + +[Debug] +**About to evaluate statement**: [ + *(*(ppx)) := 1: i32 +] + +**Context**: # Ended regions: {} # 1 frame(s) @@ -115234,29 +113232,16 @@ copy *(px) Some (var@0) -> ⊥ : () ; Some (x) -> ⌊mut@0⌋ ; Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@4 (&mut@0 (2: i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@2 (⌊mut@3⌋) ; - None -> &mut@3 (⌊mut@4⌋) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (ppx) -> &mut@1 (&mut@0 (0: i32)) ; + Some (var@4) -> ⊥ : bool ; + Some (var@5) -> ⊥ : bool ; + Some (var@6) -> ⊥ : i32 ; } -[Debug] give_back: -- bid: 4 -- content: &mut@4 (&mut@0 (2: i32)) -- context: + + +[Debug] eval_operand: +- ctx: # Ended regions: {} # 1 frame(s) @@ -115265,30 +113250,26 @@ copy *(px) Some (var@0) -> ⊥ : () ; Some (x) -> ⌊mut@0⌋ ; Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@2 (⌊mut@3⌋) ; - None -> &mut@3 (⌊mut@4⌋) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (ppx) -> &mut@1 (&mut@0 (0: i32)) ; + Some (var@4) -> ⊥ : bool ; + Some (var@5) -> ⊥ : bool ; + Some (var@6) -> ⊥ : i32 ; } -[Debug] give_back_value: -- bid: 4 -- value: &mut@0 (2: i32) -- context: +- op: +1: i32 + +[Debug] +**About to evaluate statement**: [ + var@6 := copy x; + var@5 := move var@6 == 1: i32; + var@4 := ¬ move var@5; + assert(¬move var@4); + return +] + +**Context**: # Ended regions: {} # 1 frame(s) @@ -115297,28 +113278,20 @@ copy *(px) Some (var@0) -> ⊥ : () ; Some (x) -> ⌊mut@0⌋ ; Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@2 (⌊mut@3⌋) ; - None -> &mut@3 (⌊mut@4⌋) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (ppx) -> &mut@1 (&mut@0 (1: i32)) ; + Some (var@4) -> ⊥ : bool ; + Some (var@5) -> ⊥ : bool ; + Some (var@6) -> ⊥ : i32 ; } -[Debug] end borrow: 3: -- original context: + +[Debug] +**About to evaluate statement**: [ + var@6 := copy x +] + +**Context**: # Ended regions: {} # 1 frame(s) @@ -115327,29 +113300,16 @@ copy *(px) Some (var@0) -> ⊥ : () ; Some (x) -> ⌊mut@0⌋ ; Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@2 (⌊mut@3⌋) ; - None -> &mut@3 (&mut@0 (2: i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (ppx) -> &mut@1 (&mut@0 (1: i32)) ; + Some (var@4) -> ⊥ : bool ; + Some (var@5) -> ⊥ : bool ; + Some (var@6) -> ⊥ : i32 ; } -[Debug] give_back: -- bid: 3 -- content: &mut@3 (&mut@0 (2: i32)) -- context: + + +[Debug] eval_operand: +- ctx: # Ended regions: {} # 1 frame(s) @@ -115358,30 +113318,18 @@ copy *(px) Some (var@0) -> ⊥ : () ; Some (x) -> ⌊mut@0⌋ ; Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@2 (⌊mut@3⌋) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (ppx) -> &mut@1 (&mut@0 (1: i32)) ; + Some (var@4) -> ⊥ : bool ; + Some (var@5) -> ⊥ : bool ; + Some (var@6) -> ⊥ : i32 ; } -[Debug] give_back_value: -- bid: 3 -- value: &mut@0 (2: i32) -- context: +- op: +copy x + +[Debug] end borrow: 0: +- original context: # Ended regions: {} # 1 frame(s) @@ -115390,27 +113338,14 @@ copy *(px) Some (var@0) -> ⊥ : () ; Some (x) -> ⌊mut@0⌋ ; Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@2 (⌊mut@3⌋) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (ppx) -> &mut@1 (&mut@0 (1: i32)) ; + Some (var@4) -> ⊥ : bool ; + Some (var@5) -> ⊥ : bool ; + Some (var@6) -> ⊥ : i32 ; } - -[Debug] end borrow: 2: +[Debug] end borrow: 0: found outer borrows/abs:(InterpreterBorrowsCore.OuterBorrows (InterpreterBorrowsCore.Borrow 1)) +[Debug] end borrow: 1: - original context: # Ended regions: {} # 1 frame(s) @@ -115420,28 +113355,15 @@ copy *(px) Some (var@0) -> ⊥ : () ; Some (x) -> ⌊mut@0⌋ ; Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> &mut@2 (&mut@0 (2: i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (ppx) -> &mut@1 (&mut@0 (1: i32)) ; + Some (var@4) -> ⊥ : bool ; + Some (var@5) -> ⊥ : bool ; + Some (var@6) -> ⊥ : i32 ; } [Debug] give_back: -- bid: 2 -- content: &mut@2 (&mut@0 (2: i32)) +- bid: 1 +- content: &mut@1 (&mut@0 (1: i32)) - context: # Ended regions: {} # 1 frame(s) @@ -115451,29 +113373,16 @@ copy *(px) Some (var@0) -> ⊥ : () ; Some (x) -> ⌊mut@0⌋ ; Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@4) -> ⊥ : bool ; + Some (var@5) -> ⊥ : bool ; + Some (var@6) -> ⊥ : i32 ; } [Debug] give_back_value: -- bid: 2 -- value: &mut@0 (2: i32) +- bid: 1 +- value: &mut@0 (1: i32) - context: # Ended regions: {} # 1 frame(s) @@ -115483,27 +113392,14 @@ copy *(px) Some (var@0) -> ⊥ : () ; Some (x) -> ⌊mut@0⌋ ; Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@4) -> ⊥ : bool ; + Some (var@5) -> ⊥ : bool ; + Some (var@6) -> ⊥ : i32 ; } -[Debug] end borrow: 1: +[Debug] end borrow: 0: - original context: # Ended regions: {} # 1 frame(s) @@ -115512,29 +113408,16 @@ copy *(px) { Some (var@0) -> ⊥ : () ; Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (&mut@0 (2: i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (px) -> &mut@0 (1: i32) ; + Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@4) -> ⊥ : bool ; + Some (var@5) -> ⊥ : bool ; + Some (var@6) -> ⊥ : i32 ; } [Debug] give_back: -- bid: 1 -- content: &mut@1 (&mut@0 (2: i32)) +- bid: 0 +- content: &mut@0 (1: i32) - context: # Ended regions: {} # 1 frame(s) @@ -115543,30 +113426,17 @@ copy *(px) { Some (var@0) -> ⊥ : () ; Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; + Some (px) -> ⊥ : &'_ mut (i32) ; Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@4) -> ⊥ : bool ; + Some (var@5) -> ⊥ : bool ; + Some (var@6) -> ⊥ : i32 ; } [Debug] give_back_value: -- bid: 1 -- value: &mut@0 (2: i32) +- bid: 0 +- value: 1: i32 - context: # Ended regions: {} # 1 frame(s) @@ -115575,36 +113445,19 @@ copy *(px) { Some (var@0) -> ⊥ : () ; Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; + Some (px) -> ⊥ : &'_ mut (i32) ; Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@4) -> ⊥ : bool ; + Some (var@5) -> ⊥ : bool ; + Some (var@6) -> ⊥ : i32 ; } [Debug] **About to evaluate statement**: [ - var@9 := move var@10 == 2: i32; - var@8 := ¬ move var@9; - assert(¬move var@8); - var@13 := copy x; - var@12 := move var@13 == 2: i32; - var@11 := ¬ move var@12; - assert(¬move var@11); + var@5 := move var@6 == 1: i32; + var@4 := ¬ move var@5; + assert(¬move var@4); return ] @@ -115615,32 +113468,19 @@ copy *(px) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@0 (2: i32) ; + Some (x) -> 1: i32 ; + Some (px) -> ⊥ : &'_ mut (i32) ; Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> 2: i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@4) -> ⊥ : bool ; + Some (var@5) -> ⊥ : bool ; + Some (var@6) -> 1: i32 ; } [Debug] **About to evaluate statement**: [ - var@9 := move var@10 == 2: i32 + var@5 := move var@6 == 1: i32 ] **Context**: @@ -115650,25 +113490,12 @@ copy *(px) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@0 (2: i32) ; + Some (x) -> 1: i32 ; + Some (px) -> ⊥ : &'_ mut (i32) ; Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> 2: i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@4) -> ⊥ : bool ; + Some (var@5) -> ⊥ : bool ; + Some (var@6) -> 1: i32 ; } @@ -115681,30 +113508,17 @@ copy *(px) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@0 (2: i32) ; + Some (x) -> 1: i32 ; + Some (px) -> ⊥ : &'_ mut (i32) ; Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> 2: i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@4) -> ⊥ : bool ; + Some (var@5) -> ⊥ : bool ; + Some (var@6) -> 1: i32 ; } - op: -move var@10 +move var@6 [Debug] eval_operand: - ctx: @@ -115714,39 +113528,22 @@ move var@10 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@0 (2: i32) ; + Some (x) -> 1: i32 ; + Some (px) -> ⊥ : &'_ mut (i32) ; Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@4) -> ⊥ : bool ; + Some (var@5) -> ⊥ : bool ; + Some (var@6) -> ⊥ : i32 ; } - op: -2: i32 +1: i32 [Debug] **About to evaluate statement**: [ - var@8 := ¬ move var@9; - assert(¬move var@8); - var@13 := copy x; - var@12 := move var@13 == 2: i32; - var@11 := ¬ move var@12; - assert(¬move var@11); + var@4 := ¬ move var@5; + assert(¬move var@4); return ] @@ -115757,32 +113554,19 @@ move var@10 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@0 (2: i32) ; + Some (x) -> 1: i32 ; + Some (px) -> ⊥ : &'_ mut (i32) ; Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> true ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@4) -> ⊥ : bool ; + Some (var@5) -> s@0 : bool ; + Some (var@6) -> ⊥ : i32 ; } [Debug] **About to evaluate statement**: [ - var@8 := ¬ move var@9 + var@4 := ¬ move var@5 ] **Context**: @@ -115792,25 +113576,12 @@ move var@10 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@0 (2: i32) ; + Some (x) -> 1: i32 ; + Some (px) -> ⊥ : &'_ mut (i32) ; Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> true ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@4) -> ⊥ : bool ; + Some (var@5) -> s@0 : bool ; + Some (var@6) -> ⊥ : i32 ; } @@ -115823,38 +113594,21 @@ move var@10 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@0 (2: i32) ; + Some (x) -> 1: i32 ; + Some (px) -> ⊥ : &'_ mut (i32) ; Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> true ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@4) -> ⊥ : bool ; + Some (var@5) -> s@0 : bool ; + Some (var@6) -> ⊥ : i32 ; } - op: -move var@9 +move var@5 [Debug] **About to evaluate statement**: [ - assert(¬move var@8); - var@13 := copy x; - var@12 := move var@13 == 2: i32; - var@11 := ¬ move var@12; - assert(¬move var@11); + assert(¬move var@4); return ] @@ -115865,32 +113619,19 @@ move var@9 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@0 (2: i32) ; + Some (x) -> 1: i32 ; + Some (px) -> ⊥ : &'_ mut (i32) ; Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> false ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@4) -> s@1 : bool ; + Some (var@5) -> ⊥ : bool ; + Some (var@6) -> ⊥ : i32 ; } [Debug] **About to evaluate statement**: [ - assert(¬move var@8) + assert(¬move var@4) ] **Context**: @@ -115900,25 +113641,12 @@ move var@9 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@0 (2: i32) ; + Some (x) -> 1: i32 ; + Some (px) -> ⊥ : &'_ mut (i32) ; Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> false ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@4) -> s@1 : bool ; + Some (var@5) -> ⊥ : bool ; + Some (var@6) -> ⊥ : i32 ; } @@ -115931,37 +113659,20 @@ move var@9 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@0 (2: i32) ; + Some (x) -> 1: i32 ; + Some (px) -> ⊥ : &'_ mut (i32) ; Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> false ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@4) -> true ; + Some (var@5) -> ⊥ : bool ; + Some (var@6) -> ⊥ : i32 ; } - op: -move var@8 +move var@4 [Debug] **About to evaluate statement**: [ - var@13 := copy x; - var@12 := move var@13 == 2: i32; - var@11 := ¬ move var@12; - assert(¬move var@11); return ] @@ -115972,32 +113683,44 @@ move var@8 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@0 (2: i32) ; + Some (x) -> 1: i32 ; + Some (px) -> ⊥ : &'_ mut (i32) ; Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@4) -> ⊥ : bool ; + Some (var@5) -> ⊥ : bool ; + Some (var@6) -> ⊥ : i32 ; } +[Debug] test_function_symbolic: refs_test2 [Debug] **About to evaluate statement**: [ - var@13 := copy x + 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**: @@ -116007,160 +113730,119 @@ move var@8 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@0 (2: i32) ; + Some (x) -> ⊥ : i32 ; + Some (y) -> ⊥ : i32 ; + Some (px) -> ⊥ : &'_ mut (i32) ; + Some (py) -> ⊥ : &'_ mut (i32) ; Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : bool ; Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } -[Debug] eval_operand: -- ctx: +[Debug] +**About to evaluate statement**: [ + x := 0: i32 +] + +**Context**: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@0 (2: i32) ; + Some (x) -> ⊥ : i32 ; + Some (y) -> ⊥ : i32 ; + Some (px) -> ⊥ : &'_ mut (i32) ; + Some (py) -> ⊥ : &'_ mut (i32) ; Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : bool ; Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } -- op: -copy x - -[Debug] end borrow: 0: -- original context: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@0 (2: i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; -} -[Debug] give_back: -- bid: 0 -- content: &mut@0 (2: i32) -- context: +[Debug] eval_operand: +- ctx: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; + Some (x) -> ⊥ : i32 ; + Some (y) -> ⊥ : i32 ; Some (px) -> ⊥ : &'_ mut (i32) ; + Some (py) -> ⊥ : &'_ mut (i32) ; Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : bool ; Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } -[Debug] give_back_value: -- bid: 0 -- value: 2: i32 -- context: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; -} - +- op: +0: i32 [Debug] **About to evaluate statement**: [ - var@12 := move var@13 == 2: i32; - var@11 := ¬ move var@12; - assert(¬move var@11); + 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 ] @@ -116171,32 +113853,31 @@ copy x # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 2: i32 ; + Some (x) -> 0: i32 ; + Some (y) -> ⊥ : i32 ; Some (px) -> ⊥ : &'_ mut (i32) ; + Some (py) -> ⊥ : &'_ mut (i32) ; Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : bool ; Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> 2: i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } [Debug] **About to evaluate statement**: [ - var@12 := move var@13 == 2: i32 + y := 1: i32 ] **Context**: @@ -116206,25 +113887,24 @@ copy x # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 2: i32 ; + Some (x) -> 0: i32 ; + Some (y) -> ⊥ : i32 ; Some (px) -> ⊥ : &'_ mut (i32) ; + Some (py) -> ⊥ : &'_ mut (i32) ; Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : bool ; Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> 2: i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } @@ -116237,69 +113917,89 @@ copy x # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 2: i32 ; + Some (x) -> 0: i32 ; + Some (y) -> ⊥ : i32 ; Some (px) -> ⊥ : &'_ mut (i32) ; + Some (py) -> ⊥ : &'_ mut (i32) ; Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : bool ; Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> 2: i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } - op: -move var@13 +1: i32 -[Debug] eval_operand: -- ctx: +[Debug] +**About to evaluate statement**: [ + px := &mut x; + py := &mut y; + ppx := &mut px; + var@6 := &mut *(py); + *(ppx) := move var@6; + *(*(ppx)) := 2: i32; + var@9 := copy *(px); + var@8 := move var@9 == 2: i32; + var@7 := ¬ move var@8; + assert(¬move var@7); + var@12 := copy x; + var@11 := move var@12 == 0: i32; + var@10 := ¬ move var@11; + assert(¬move var@10); + var@15 := copy *(py); + var@14 := move var@15 == 2: i32; + var@13 := ¬ move var@14; + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 2: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 2: i32 ; + Some (x) -> 0: i32 ; + Some (y) -> 1: i32 ; Some (px) -> ⊥ : &'_ mut (i32) ; + Some (py) -> ⊥ : &'_ mut (i32) ; Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : bool ; Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } -- op: -2: i32 [Debug] **About to evaluate statement**: [ - var@11 := ¬ move var@12; - assert(¬move var@11); - return + px := &mut x ] **Context**: @@ -116309,32 +114009,52 @@ move var@13 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 2: i32 ; + Some (x) -> 0: i32 ; + Some (y) -> 1: i32 ; Some (px) -> ⊥ : &'_ mut (i32) ; + Some (py) -> ⊥ : &'_ mut (i32) ; Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : bool ; Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; Some (var@11) -> ⊥ : bool ; - Some (var@12) -> true ; - Some (var@13) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } [Debug] **About to evaluate statement**: [ - var@11 := ¬ move var@12 + 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**: @@ -116344,65 +114064,84 @@ move var@13 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 2: i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; + Some (x) -> ⌊mut@0⌋ ; + Some (y) -> 1: i32 ; + Some (px) -> &mut@0 (0: i32) ; + Some (py) -> ⊥ : &'_ mut (i32) ; Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : bool ; Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; Some (var@11) -> ⊥ : bool ; - Some (var@12) -> true ; - Some (var@13) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } -[Debug] eval_operand: -- ctx: +[Debug] +**About to evaluate statement**: [ + py := &mut y +] + +**Context**: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 2: i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; + Some (x) -> ⌊mut@0⌋ ; + Some (y) -> 1: i32 ; + Some (px) -> &mut@0 (0: i32) ; + Some (py) -> ⊥ : &'_ mut (i32) ; Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : bool ; Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; Some (var@11) -> ⊥ : bool ; - Some (var@12) -> true ; - Some (var@13) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } -- op: -move var@12 [Debug] **About to evaluate statement**: [ - assert(¬move var@11); + 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 ] @@ -116413,32 +114152,31 @@ move var@12 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 2: i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; + Some (x) -> ⌊mut@0⌋ ; + Some (y) -> ⌊mut@1⌋ ; + Some (px) -> &mut@0 (0: i32) ; + Some (py) -> &mut@1 (1: i32) ; Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : bool ; Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> false ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } [Debug] **About to evaluate statement**: [ - assert(¬move var@11) + ppx := &mut px ] **Context**: @@ -116448,65 +114186,84 @@ move var@12 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 2: i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; + Some (x) -> ⌊mut@0⌋ ; + Some (y) -> ⌊mut@1⌋ ; + Some (px) -> &mut@0 (0: i32) ; + Some (py) -> &mut@1 (1: i32) ; Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : bool ; Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> false ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } -[Debug] eval_operand: -- ctx: +[Debug] +**About to evaluate statement**: [ + var@6 := &mut *(py); + *(ppx) := move var@6; + *(*(ppx)) := 2: i32; + var@9 := copy *(px); + var@8 := move var@9 == 2: i32; + var@7 := ¬ move var@8; + assert(¬move var@7); + var@12 := copy x; + var@11 := move var@12 == 0: i32; + var@10 := ¬ move var@11; + assert(¬move var@10); + var@15 := copy *(py); + var@14 := move var@15 == 2: i32; + var@13 := ¬ move var@14; + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 2: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 2: i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (x) -> ⌊mut@0⌋ ; + Some (y) -> ⌊mut@1⌋ ; + Some (px) -> ⌊mut@2⌋ ; + Some (py) -> &mut@1 (1: i32) ; + Some (ppx) -> &mut@2 (&mut@0 (0: i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : bool ; Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> false ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } -- op: -move var@11 [Debug] **About to evaluate statement**: [ - return + var@6 := &mut *(py) ] **Context**: @@ -116516,35 +114273,48 @@ move var@11 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 2: i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (x) -> ⌊mut@0⌋ ; + Some (y) -> ⌊mut@1⌋ ; + Some (px) -> ⌊mut@2⌋ ; + Some (py) -> &mut@1 (1: i32) ; + Some (ppx) -> &mut@2 (&mut@0 (0: i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : bool ; Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; - None -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } -[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; + *(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 ] @@ -116554,19 +114324,32 @@ move var@11 # Frame 0: { - Some (var@0) -> ⊥ : u32 ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (var@3) -> ⊥ : u32 ; - Some (var@4) -> ⊥ : u32 ; - Some (var@5) -> ⊥ : (u32, bool) ; + Some (var@0) -> ⊥ : () ; + Some (x) -> ⌊mut@0⌋ ; + Some (y) -> ⌊mut@1⌋ ; + Some (px) -> ⌊mut@2⌋ ; + Some (py) -> &mut@1 (⌊mut@3⌋) ; + Some (ppx) -> &mut@2 (&mut@0 (0: i32)) ; + Some (var@6) -> &mut@3 (1: i32) ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } [Debug] **About to evaluate statement**: [ - var@3 := copy x + *(ppx) := move var@6 ] **Context**: @@ -116575,12 +114358,25 @@ move var@11 # Frame 0: { - Some (var@0) -> ⊥ : u32 ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (var@3) -> ⊥ : u32 ; - Some (var@4) -> ⊥ : u32 ; - Some (var@5) -> ⊥ : (u32, bool) ; + Some (var@0) -> ⊥ : () ; + Some (x) -> ⌊mut@0⌋ ; + Some (y) -> ⌊mut@1⌋ ; + Some (px) -> ⌊mut@2⌋ ; + Some (py) -> &mut@1 (⌊mut@3⌋) ; + Some (ppx) -> &mut@2 (&mut@0 (0: i32)) ; + Some (var@6) -> &mut@3 (1: i32) ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } @@ -116592,84 +114388,146 @@ move var@11 # Frame 0: { - Some (var@0) -> ⊥ : u32 ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (var@3) -> ⊥ : u32 ; - Some (var@4) -> ⊥ : u32 ; - Some (var@5) -> ⊥ : (u32, bool) ; + Some (var@0) -> ⊥ : () ; + Some (x) -> ⌊mut@0⌋ ; + Some (y) -> ⌊mut@1⌋ ; + Some (px) -> ⌊mut@2⌋ ; + Some (py) -> &mut@1 (⌊mut@3⌋) ; + Some (ppx) -> &mut@2 (&mut@0 (0: i32)) ; + Some (var@6) -> &mut@3 (1: i32) ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } - op: -copy x - -[Debug] -**About to evaluate statement**: [ - var@4 := copy y; - var@0 := copy var@3 + copy var@4; - return -] +move var@6 -**Context**: +[Debug] end borrow: 0: +- original context: # Ended regions: {} # 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : u32 ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (var@3) -> s@0 : u32 ; - Some (var@4) -> ⊥ : u32 ; - Some (var@5) -> ⊥ : (u32, bool) ; + Some (var@0) -> ⊥ : () ; + Some (x) -> ⌊mut@0⌋ ; + Some (y) -> ⌊mut@1⌋ ; + Some (px) -> ⌊mut@2⌋ ; + Some (py) -> &mut@1 (⌊mut@3⌋) ; + Some (ppx) -> &mut@2 (⊥ : &'_ mut (i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; + None -> &mut@3 (1: i32) ; + None -> &mut@0 (0: i32) ; } - - -[Debug] -**About to evaluate statement**: [ - var@4 := copy y -] - -**Context**: +[Debug] give_back: +- bid: 0 +- content: &mut@0 (0: i32) +- context: # Ended regions: {} # 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : u32 ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (var@3) -> s@0 : u32 ; - Some (var@4) -> ⊥ : u32 ; - Some (var@5) -> ⊥ : (u32, bool) ; + Some (var@0) -> ⊥ : () ; + Some (x) -> ⌊mut@0⌋ ; + Some (y) -> ⌊mut@1⌋ ; + Some (px) -> ⌊mut@2⌋ ; + Some (py) -> &mut@1 (⌊mut@3⌋) ; + Some (ppx) -> &mut@2 (⊥ : &'_ mut (i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; + None -> &mut@3 (1: i32) ; + None -> ⊥ : &'_ mut (i32) ; } - -[Debug] eval_operand: -- ctx: +[Debug] give_back_value: +- bid: 0 +- value: 0: i32 +- context: # Ended regions: {} # 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : u32 ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (var@3) -> s@0 : u32 ; - Some (var@4) -> ⊥ : u32 ; - Some (var@5) -> ⊥ : (u32, bool) ; + Some (var@0) -> ⊥ : () ; + Some (x) -> ⌊mut@0⌋ ; + Some (y) -> ⌊mut@1⌋ ; + Some (px) -> ⌊mut@2⌋ ; + Some (py) -> &mut@1 (⌊mut@3⌋) ; + Some (ppx) -> &mut@2 (⊥ : &'_ mut (i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; + None -> &mut@3 (1: i32) ; + None -> ⊥ : &'_ mut (i32) ; } -- op: -copy y - [Debug] **About to evaluate statement**: [ - var@0 := copy var@3 + copy var@4; + *(*(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 ] @@ -116679,19 +114537,32 @@ copy y # Frame 0: { - Some (var@0) -> ⊥ : u32 ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (var@3) -> s@0 : u32 ; - Some (var@4) -> s@1 : u32 ; - Some (var@5) -> ⊥ : (u32, bool) ; + Some (var@0) -> ⊥ : () ; + Some (x) -> 0: i32 ; + Some (y) -> ⌊mut@1⌋ ; + Some (px) -> ⌊mut@2⌋ ; + Some (py) -> &mut@1 (⌊mut@3⌋) ; + Some (ppx) -> &mut@2 (&mut@3 (1: i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } [Debug] **About to evaluate statement**: [ - var@0 := copy var@3 + copy var@4 + *(*(ppx)) := 2: i32 ] **Context**: @@ -116700,34 +114571,28 @@ copy y # Frame 0: { - Some (var@0) -> ⊥ : u32 ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (var@3) -> s@0 : u32 ; - Some (var@4) -> s@1 : u32 ; - Some (var@5) -> ⊥ : (u32, bool) ; -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : u32 ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (var@3) -> s@0 : u32 ; - Some (var@4) -> s@1 : u32 ; - Some (var@5) -> ⊥ : (u32, bool) ; + Some (var@0) -> ⊥ : () ; + Some (x) -> 0: i32 ; + Some (y) -> ⌊mut@1⌋ ; + Some (px) -> ⌊mut@2⌋ ; + Some (py) -> &mut@1 (⌊mut@3⌋) ; + Some (ppx) -> &mut@2 (&mut@3 (1: i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } -- op: -copy var@3 [Debug] eval_operand: - ctx: @@ -116736,45 +114601,49 @@ copy var@3 # Frame 0: { - Some (var@0) -> ⊥ : u32 ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (var@3) -> s@0 : u32 ; - Some (var@4) -> s@1 : u32 ; - Some (var@5) -> ⊥ : (u32, bool) ; + Some (var@0) -> ⊥ : () ; + Some (x) -> 0: i32 ; + Some (y) -> ⌊mut@1⌋ ; + Some (px) -> ⌊mut@2⌋ ; + Some (py) -> &mut@1 (⌊mut@3⌋) ; + Some (ppx) -> &mut@2 (&mut@3 (1: i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } - op: -copy var@4 - -[Debug] -**About to evaluate statement**: [ - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> s@2 : u32 ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (var@3) -> s@0 : u32 ; - Some (var@4) -> s@1 : u32 ; - Some (var@5) -> ⊥ : (u32, bool) ; -} - - +2: i32 -[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; + 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 ] @@ -116784,19 +114653,32 @@ copy var@4 # Frame 0: { - Some (var@0) -> ⊥ : u32 ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (var@3) -> ⊥ : u32 ; - Some (var@4) -> ⊥ : u32 ; - Some (var@5) -> ⊥ : (u32, bool) ; + Some (var@0) -> ⊥ : () ; + Some (x) -> 0: i32 ; + Some (y) -> ⌊mut@1⌋ ; + Some (px) -> ⌊mut@2⌋ ; + Some (py) -> &mut@1 (⌊mut@3⌋) ; + Some (ppx) -> &mut@2 (&mut@3 (2: i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } [Debug] **About to evaluate statement**: [ - var@3 := copy x + var@9 := copy *(px) ] **Context**: @@ -116805,12 +114687,25 @@ copy var@4 # Frame 0: { - Some (var@0) -> ⊥ : u32 ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (var@3) -> ⊥ : u32 ; - Some (var@4) -> ⊥ : u32 ; - Some (var@5) -> ⊥ : (u32, bool) ; + Some (var@0) -> ⊥ : () ; + Some (x) -> 0: i32 ; + Some (y) -> ⌊mut@1⌋ ; + Some (px) -> ⌊mut@2⌋ ; + Some (py) -> &mut@1 (⌊mut@3⌋) ; + Some (ppx) -> &mut@2 (&mut@3 (2: i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } @@ -116822,84 +114717,138 @@ copy var@4 # Frame 0: { - Some (var@0) -> ⊥ : u32 ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (var@3) -> ⊥ : u32 ; - Some (var@4) -> ⊥ : u32 ; - Some (var@5) -> ⊥ : (u32, bool) ; + Some (var@0) -> ⊥ : () ; + Some (x) -> 0: i32 ; + Some (y) -> ⌊mut@1⌋ ; + Some (px) -> ⌊mut@2⌋ ; + Some (py) -> &mut@1 (⌊mut@3⌋) ; + Some (ppx) -> &mut@2 (&mut@3 (2: i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } - op: -copy x - -[Debug] -**About to evaluate statement**: [ - var@4 := copy y; - var@0 := copy var@3 - copy var@4; - return -] +copy *(px) -**Context**: +[Debug] end borrow: 2: +- original context: # Ended regions: {} # 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : u32 ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (var@3) -> s@0 : u32 ; - Some (var@4) -> ⊥ : u32 ; - Some (var@5) -> ⊥ : (u32, bool) ; + Some (var@0) -> ⊥ : () ; + Some (x) -> 0: i32 ; + Some (y) -> ⌊mut@1⌋ ; + Some (px) -> ⌊mut@2⌋ ; + Some (py) -> &mut@1 (⌊mut@3⌋) ; + Some (ppx) -> &mut@2 (&mut@3 (2: i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } - - -[Debug] -**About to evaluate statement**: [ - var@4 := copy y -] - -**Context**: +[Debug] give_back: +- bid: 2 +- content: &mut@2 (&mut@3 (2: i32)) +- context: # Ended regions: {} # 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : u32 ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (var@3) -> s@0 : u32 ; - Some (var@4) -> ⊥ : u32 ; - Some (var@5) -> ⊥ : (u32, bool) ; -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - + Some (var@0) -> ⊥ : () ; + Some (x) -> 0: i32 ; + Some (y) -> ⌊mut@1⌋ ; + Some (px) -> ⌊mut@2⌋ ; + Some (py) -> &mut@1 (⌊mut@3⌋) ; + Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; +} + + +[Debug] give_back_value: +- bid: 2 +- value: &mut@3 (2: i32) +- context: +# Ended regions: {} +# 1 frame(s) + # Frame 0: { - Some (var@0) -> ⊥ : u32 ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (var@3) -> s@0 : u32 ; - Some (var@4) -> ⊥ : u32 ; - Some (var@5) -> ⊥ : (u32, bool) ; + Some (var@0) -> ⊥ : () ; + Some (x) -> 0: i32 ; + Some (y) -> ⌊mut@1⌋ ; + Some (px) -> ⌊mut@2⌋ ; + Some (py) -> &mut@1 (⌊mut@3⌋) ; + Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } -- op: -copy y - [Debug] **About to evaluate statement**: [ - var@0 := copy var@3 - copy var@4; + 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 ] @@ -116909,19 +114858,32 @@ copy y # Frame 0: { - Some (var@0) -> ⊥ : u32 ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (var@3) -> s@0 : u32 ; - Some (var@4) -> s@1 : u32 ; - Some (var@5) -> ⊥ : (u32, bool) ; + Some (var@0) -> ⊥ : () ; + Some (x) -> 0: i32 ; + Some (y) -> ⌊mut@1⌋ ; + Some (px) -> &mut@3 (2: i32) ; + Some (py) -> &mut@1 (⌊mut@3⌋) ; + Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> 2: i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } [Debug] **About to evaluate statement**: [ - var@0 := copy var@3 - copy var@4 + var@8 := move var@9 == 2: i32 ] **Context**: @@ -116930,12 +114892,25 @@ copy y # Frame 0: { - Some (var@0) -> ⊥ : u32 ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (var@3) -> s@0 : u32 ; - Some (var@4) -> s@1 : u32 ; - Some (var@5) -> ⊥ : (u32, bool) ; + Some (var@0) -> ⊥ : () ; + Some (x) -> 0: i32 ; + Some (y) -> ⌊mut@1⌋ ; + Some (px) -> &mut@3 (2: i32) ; + Some (py) -> &mut@1 (⌊mut@3⌋) ; + Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> 2: i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } @@ -116947,17 +114922,30 @@ copy y # Frame 0: { - Some (var@0) -> ⊥ : u32 ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (var@3) -> s@0 : u32 ; - Some (var@4) -> s@1 : u32 ; - Some (var@5) -> ⊥ : (u32, bool) ; + Some (var@0) -> ⊥ : () ; + Some (x) -> 0: i32 ; + Some (y) -> ⌊mut@1⌋ ; + Some (px) -> &mut@3 (2: i32) ; + Some (py) -> &mut@1 (⌊mut@3⌋) ; + Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> 2: i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } - op: -copy var@3 +move var@9 [Debug] eval_operand: - ctx: @@ -116966,45 +114954,47 @@ copy var@3 # Frame 0: { - Some (var@0) -> ⊥ : u32 ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (var@3) -> s@0 : u32 ; - Some (var@4) -> s@1 : u32 ; - Some (var@5) -> ⊥ : (u32, bool) ; + Some (var@0) -> ⊥ : () ; + Some (x) -> 0: i32 ; + Some (y) -> ⌊mut@1⌋ ; + Some (px) -> &mut@3 (2: i32) ; + Some (py) -> &mut@1 (⌊mut@3⌋) ; + Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } - op: -copy var@4 - -[Debug] -**About to evaluate statement**: [ - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> s@2 : u32 ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (var@3) -> s@0 : u32 ; - Some (var@4) -> s@1 : u32 ; - Some (var@5) -> ⊥ : (u32, bool) ; -} - - +2: i32 -[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; + 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 ] @@ -117014,19 +115004,32 @@ copy var@4 # Frame 0: { - Some (var@0) -> ⊥ : u32 ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (var@3) -> ⊥ : u32 ; - Some (var@4) -> ⊥ : u32 ; - Some (var@5) -> ⊥ : bool ; + Some (var@0) -> ⊥ : () ; + Some (x) -> 0: i32 ; + Some (y) -> ⌊mut@1⌋ ; + Some (px) -> &mut@3 (2: i32) ; + Some (py) -> &mut@1 (⌊mut@3⌋) ; + Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> s@0 : bool ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } [Debug] **About to evaluate statement**: [ - var@3 := copy x + var@7 := ¬ move var@8 ] **Context**: @@ -117035,12 +115038,25 @@ copy var@4 # Frame 0: { - Some (var@0) -> ⊥ : u32 ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (var@3) -> ⊥ : u32 ; - Some (var@4) -> ⊥ : u32 ; - Some (var@5) -> ⊥ : bool ; + Some (var@0) -> ⊥ : () ; + Some (x) -> 0: i32 ; + Some (y) -> ⌊mut@1⌋ ; + Some (px) -> &mut@3 (2: i32) ; + Some (py) -> &mut@1 (⌊mut@3⌋) ; + Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> s@0 : bool ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } @@ -117052,22 +115068,46 @@ copy var@4 # Frame 0: { - Some (var@0) -> ⊥ : u32 ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (var@3) -> ⊥ : u32 ; - Some (var@4) -> ⊥ : u32 ; - Some (var@5) -> ⊥ : bool ; + Some (var@0) -> ⊥ : () ; + Some (x) -> 0: i32 ; + Some (y) -> ⌊mut@1⌋ ; + Some (px) -> &mut@3 (2: i32) ; + Some (py) -> &mut@1 (⌊mut@3⌋) ; + Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> s@0 : bool ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } - op: -copy x +move var@8 [Debug] **About to evaluate statement**: [ - var@4 := copy y; - var@0 := move var@3 / move var@4; + 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 ] @@ -117077,19 +115117,32 @@ copy x # Frame 0: { - Some (var@0) -> ⊥ : u32 ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (var@3) -> s@0 : u32 ; - Some (var@4) -> ⊥ : u32 ; - Some (var@5) -> ⊥ : bool ; + Some (var@0) -> ⊥ : () ; + Some (x) -> 0: i32 ; + Some (y) -> ⌊mut@1⌋ ; + Some (px) -> &mut@3 (2: i32) ; + Some (py) -> &mut@1 (⌊mut@3⌋) ; + Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> s@1 : bool ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } [Debug] **About to evaluate statement**: [ - var@4 := copy y + assert(¬move var@7) ] **Context**: @@ -117098,12 +115151,25 @@ copy x # Frame 0: { - Some (var@0) -> ⊥ : u32 ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (var@3) -> s@0 : u32 ; - Some (var@4) -> ⊥ : u32 ; - Some (var@5) -> ⊥ : bool ; + Some (var@0) -> ⊥ : () ; + Some (x) -> 0: i32 ; + Some (y) -> ⌊mut@1⌋ ; + Some (px) -> &mut@3 (2: i32) ; + Some (py) -> &mut@1 (⌊mut@3⌋) ; + Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> s@1 : bool ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } @@ -117115,21 +115181,45 @@ copy x # Frame 0: { - Some (var@0) -> ⊥ : u32 ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (var@3) -> s@0 : u32 ; - Some (var@4) -> ⊥ : u32 ; - Some (var@5) -> ⊥ : bool ; + Some (var@0) -> ⊥ : () ; + Some (x) -> 0: i32 ; + Some (y) -> ⌊mut@1⌋ ; + Some (px) -> &mut@3 (2: i32) ; + Some (py) -> &mut@1 (⌊mut@3⌋) ; + Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> true ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } - op: -copy y +move var@7 [Debug] **About to evaluate statement**: [ - var@0 := move var@3 / move var@4; + 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 ] @@ -117139,19 +115229,32 @@ copy y # Frame 0: { - Some (var@0) -> ⊥ : u32 ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (var@3) -> s@0 : u32 ; - Some (var@4) -> s@1 : u32 ; - Some (var@5) -> ⊥ : bool ; + Some (var@0) -> ⊥ : () ; + Some (x) -> 0: i32 ; + Some (y) -> ⌊mut@1⌋ ; + Some (px) -> &mut@3 (2: i32) ; + Some (py) -> &mut@1 (⌊mut@3⌋) ; + Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } [Debug] **About to evaluate statement**: [ - var@0 := move var@3 / move var@4 + var@12 := copy x ] **Context**: @@ -117160,34 +115263,28 @@ copy y # Frame 0: { - Some (var@0) -> ⊥ : u32 ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (var@3) -> s@0 : u32 ; - Some (var@4) -> s@1 : u32 ; - Some (var@5) -> ⊥ : bool ; -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : u32 ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (var@3) -> s@0 : u32 ; - Some (var@4) -> s@1 : u32 ; - Some (var@5) -> ⊥ : bool ; + Some (var@0) -> ⊥ : () ; + Some (x) -> 0: i32 ; + Some (y) -> ⌊mut@1⌋ ; + Some (px) -> &mut@3 (2: i32) ; + Some (py) -> &mut@1 (⌊mut@3⌋) ; + Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } -- op: -move var@3 [Debug] eval_operand: - ctx: @@ -117196,20 +115293,44 @@ move var@3 # Frame 0: { - Some (var@0) -> ⊥ : u32 ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (var@3) -> ⊥ : u32 ; - Some (var@4) -> s@1 : u32 ; - Some (var@5) -> ⊥ : bool ; + Some (var@0) -> ⊥ : () ; + Some (x) -> 0: i32 ; + Some (y) -> ⌊mut@1⌋ ; + Some (px) -> &mut@3 (2: i32) ; + Some (py) -> &mut@1 (⌊mut@3⌋) ; + Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } - op: -move var@4 +copy x [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 ] @@ -117219,23 +115340,32 @@ move var@4 # Frame 0: { - Some (var@0) -> s@2 : u32 ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (var@3) -> ⊥ : u32 ; - Some (var@4) -> ⊥ : u32 ; - Some (var@5) -> ⊥ : bool ; + Some (var@0) -> ⊥ : () ; + Some (x) -> 0: i32 ; + Some (y) -> ⌊mut@1⌋ ; + Some (px) -> &mut@3 (2: i32) ; + Some (py) -> &mut@1 (⌊mut@3⌋) ; + Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> 0: i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } -[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 + var@11 := move var@12 == 0: i32 ] **Context**: @@ -117244,36 +115374,60 @@ move var@4 # Frame 0: { - Some (var@0) -> ⊥ : u32 ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (var@3) -> ⊥ : u32 ; - Some (var@4) -> ⊥ : u32 ; - Some (var@5) -> ⊥ : bool ; + Some (var@0) -> ⊥ : () ; + Some (x) -> 0: i32 ; + Some (y) -> ⌊mut@1⌋ ; + Some (px) -> &mut@3 (2: i32) ; + Some (py) -> &mut@1 (⌊mut@3⌋) ; + Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> 0: i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } -[Debug] -**About to evaluate statement**: [ - var@3 := copy x -] - -**Context**: +[Debug] eval_operand: +- ctx: # Ended regions: {} # 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : u32 ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (var@3) -> ⊥ : u32 ; - Some (var@4) -> ⊥ : u32 ; - Some (var@5) -> ⊥ : bool ; + Some (var@0) -> ⊥ : () ; + Some (x) -> 0: i32 ; + Some (y) -> ⌊mut@1⌋ ; + Some (px) -> &mut@3 (2: i32) ; + Some (py) -> &mut@1 (⌊mut@3⌋) ; + Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> 0: i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } +- op: +move var@12 [Debug] eval_operand: - ctx: @@ -117282,22 +115436,43 @@ move var@4 # Frame 0: { - Some (var@0) -> ⊥ : u32 ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (var@3) -> ⊥ : u32 ; - Some (var@4) -> ⊥ : u32 ; - Some (var@5) -> ⊥ : bool ; + Some (var@0) -> ⊥ : () ; + Some (x) -> 0: i32 ; + Some (y) -> ⌊mut@1⌋ ; + Some (px) -> &mut@3 (2: i32) ; + Some (py) -> &mut@1 (⌊mut@3⌋) ; + Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } - op: -copy x +0: i32 [Debug] **About to evaluate statement**: [ - var@4 := copy y; - var@0 := move var@3 % move var@4; + 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 ] @@ -117307,19 +115482,32 @@ copy x # Frame 0: { - Some (var@0) -> ⊥ : u32 ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (var@3) -> s@0 : u32 ; - Some (var@4) -> ⊥ : u32 ; - Some (var@5) -> ⊥ : bool ; + Some (var@0) -> ⊥ : () ; + Some (x) -> 0: i32 ; + Some (y) -> ⌊mut@1⌋ ; + Some (px) -> &mut@3 (2: i32) ; + Some (py) -> &mut@1 (⌊mut@3⌋) ; + Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> s@2 : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } [Debug] **About to evaluate statement**: [ - var@4 := copy y + var@10 := ¬ move var@11 ] **Context**: @@ -117328,12 +115516,25 @@ copy x # Frame 0: { - Some (var@0) -> ⊥ : u32 ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (var@3) -> s@0 : u32 ; - Some (var@4) -> ⊥ : u32 ; - Some (var@5) -> ⊥ : bool ; + Some (var@0) -> ⊥ : () ; + Some (x) -> 0: i32 ; + Some (y) -> ⌊mut@1⌋ ; + Some (px) -> &mut@3 (2: i32) ; + Some (py) -> &mut@1 (⌊mut@3⌋) ; + Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> s@2 : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } @@ -117345,21 +115546,42 @@ copy x # Frame 0: { - Some (var@0) -> ⊥ : u32 ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (var@3) -> s@0 : u32 ; - Some (var@4) -> ⊥ : u32 ; - Some (var@5) -> ⊥ : bool ; + Some (var@0) -> ⊥ : () ; + Some (x) -> 0: i32 ; + Some (y) -> ⌊mut@1⌋ ; + Some (px) -> &mut@3 (2: i32) ; + Some (py) -> &mut@1 (⌊mut@3⌋) ; + Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> s@2 : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } - op: -copy y +move var@11 [Debug] **About to evaluate statement**: [ - var@0 := move var@3 % move var@4; + 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 ] @@ -117369,19 +115591,32 @@ copy y # Frame 0: { - Some (var@0) -> ⊥ : u32 ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (var@3) -> s@0 : u32 ; - Some (var@4) -> s@1 : u32 ; - Some (var@5) -> ⊥ : bool ; + Some (var@0) -> ⊥ : () ; + Some (x) -> 0: i32 ; + Some (y) -> ⌊mut@1⌋ ; + Some (px) -> &mut@3 (2: i32) ; + Some (py) -> &mut@1 (⌊mut@3⌋) ; + Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> s@3 : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } [Debug] **About to evaluate statement**: [ - var@0 := move var@3 % move var@4 + assert(¬move var@10) ] **Context**: @@ -117390,34 +115625,28 @@ copy y # Frame 0: { - Some (var@0) -> ⊥ : u32 ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (var@3) -> s@0 : u32 ; - Some (var@4) -> s@1 : u32 ; - Some (var@5) -> ⊥ : bool ; -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : u32 ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (var@3) -> s@0 : u32 ; - Some (var@4) -> s@1 : u32 ; - Some (var@5) -> ⊥ : bool ; + Some (var@0) -> ⊥ : () ; + Some (x) -> 0: i32 ; + Some (y) -> ⌊mut@1⌋ ; + Some (px) -> &mut@3 (2: i32) ; + Some (py) -> &mut@1 (⌊mut@3⌋) ; + Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> s@3 : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } -- op: -move var@3 [Debug] eval_operand: - ctx: @@ -117426,54 +115655,41 @@ move var@3 # Frame 0: { - Some (var@0) -> ⊥ : u32 ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (var@3) -> ⊥ : u32 ; - Some (var@4) -> s@1 : u32 ; - Some (var@5) -> ⊥ : bool ; + Some (var@0) -> ⊥ : () ; + Some (x) -> 0: i32 ; + Some (y) -> ⌊mut@1⌋ ; + Some (px) -> &mut@3 (2: i32) ; + Some (py) -> &mut@1 (⌊mut@3⌋) ; + Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> true ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } - op: -move var@4 - -[Debug] -**About to evaluate statement**: [ - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> s@2 : u32 ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (var@3) -> ⊥ : u32 ; - Some (var@4) -> ⊥ : u32 ; - Some (var@5) -> ⊥ : bool ; -} - - +move var@10 -[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); + 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 ] @@ -117484,23 +115700,31 @@ move var@4 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⊥ : u32 ; - Some (y) -> ⊥ : u32 ; - Some (z) -> ⊥ : u32 ; - Some (p) -> ⊥ : test1::Pair ; - Some (var@5) -> ⊥ : u32 ; - Some (s) -> ⊥ : test1::Sum ; - Some (o) -> ⊥ : test1::One ; - Some (e0) -> ⊥ : test1::EmptyEnum ; - Some (e1) -> ⊥ : test1::EmptyEnum ; - Some (enum0) -> ⊥ : test1::Enum ; + Some (x) -> 0: i32 ; + Some (y) -> ⌊mut@1⌋ ; + Some (px) -> &mut@3 (2: i32) ; + Some (py) -> &mut@1 (⌊mut@3⌋) ; + Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } [Debug] **About to evaluate statement**: [ - x := 23: u32 + var@15 := copy *(py) ] **Context**: @@ -117510,16 +115734,24 @@ move var@4 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⊥ : u32 ; - Some (y) -> ⊥ : u32 ; - Some (z) -> ⊥ : u32 ; - Some (p) -> ⊥ : test1::Pair ; - Some (var@5) -> ⊥ : u32 ; - Some (s) -> ⊥ : test1::Sum ; - Some (o) -> ⊥ : test1::One ; - Some (e0) -> ⊥ : test1::EmptyEnum ; - Some (e1) -> ⊥ : test1::EmptyEnum ; - Some (enum0) -> ⊥ : test1::Enum ; + Some (x) -> 0: i32 ; + Some (y) -> ⌊mut@1⌋ ; + Some (px) -> &mut@3 (2: i32) ; + Some (py) -> &mut@1 (⌊mut@3⌋) ; + Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } @@ -117532,121 +115764,129 @@ move var@4 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⊥ : u32 ; - Some (y) -> ⊥ : u32 ; - Some (z) -> ⊥ : u32 ; - Some (p) -> ⊥ : test1::Pair ; - Some (var@5) -> ⊥ : u32 ; - Some (s) -> ⊥ : test1::Sum ; - Some (o) -> ⊥ : test1::One ; - Some (e0) -> ⊥ : test1::EmptyEnum ; - Some (e1) -> ⊥ : test1::EmptyEnum ; - Some (enum0) -> ⊥ : test1::Enum ; + Some (x) -> 0: i32 ; + Some (y) -> ⌊mut@1⌋ ; + Some (px) -> &mut@3 (2: i32) ; + Some (py) -> &mut@1 (⌊mut@3⌋) ; + Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } - 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 -] +copy *(py) -**Context**: +[Debug] end borrow: 3: +- original context: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 23: u32 ; - Some (y) -> ⊥ : u32 ; - Some (z) -> ⊥ : u32 ; - Some (p) -> ⊥ : test1::Pair ; - Some (var@5) -> ⊥ : u32 ; - Some (s) -> ⊥ : test1::Sum ; - Some (o) -> ⊥ : test1::One ; - Some (e0) -> ⊥ : test1::EmptyEnum ; - Some (e1) -> ⊥ : test1::EmptyEnum ; - Some (enum0) -> ⊥ : test1::Enum ; + Some (x) -> 0: i32 ; + Some (y) -> ⌊mut@1⌋ ; + Some (px) -> &mut@3 (2: i32) ; + Some (py) -> &mut@1 (⌊mut@3⌋) ; + Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } - - -[Debug] -**About to evaluate statement**: [ - y := 44: u32 -] - -**Context**: +[Debug] give_back: +- bid: 3 +- content: &mut@3 (2: i32) +- context: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 23: u32 ; - Some (y) -> ⊥ : u32 ; - Some (z) -> ⊥ : u32 ; - Some (p) -> ⊥ : test1::Pair ; - Some (var@5) -> ⊥ : u32 ; - Some (s) -> ⊥ : test1::Sum ; - Some (o) -> ⊥ : test1::One ; - Some (e0) -> ⊥ : test1::EmptyEnum ; - Some (e1) -> ⊥ : test1::EmptyEnum ; - Some (enum0) -> ⊥ : test1::Enum ; + Some (x) -> 0: i32 ; + Some (y) -> ⌊mut@1⌋ ; + Some (px) -> ⊥ : &'_ mut (i32) ; + Some (py) -> &mut@1 (⌊mut@3⌋) ; + Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } - -[Debug] eval_operand: -- ctx: +[Debug] give_back_value: +- bid: 3 +- value: 2: i32 +- context: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 23: u32 ; - Some (y) -> ⊥ : u32 ; - Some (z) -> ⊥ : u32 ; - Some (p) -> ⊥ : test1::Pair ; - Some (var@5) -> ⊥ : u32 ; - Some (s) -> ⊥ : test1::Sum ; - Some (o) -> ⊥ : test1::One ; - Some (e0) -> ⊥ : test1::EmptyEnum ; - Some (e1) -> ⊥ : test1::EmptyEnum ; - Some (enum0) -> ⊥ : test1::Enum ; + Some (x) -> 0: i32 ; + Some (y) -> ⌊mut@1⌋ ; + Some (px) -> ⊥ : &'_ mut (i32) ; + Some (py) -> &mut@1 (⌊mut@3⌋) ; + Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } -- 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); + 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 ] @@ -117657,23 +115897,31 @@ move var@4 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 23: u32 ; - Some (y) -> 44: u32 ; - Some (z) -> ⊥ : u32 ; - Some (p) -> ⊥ : test1::Pair ; - Some (var@5) -> ⊥ : u32 ; - Some (s) -> ⊥ : test1::Sum ; - Some (o) -> ⊥ : test1::One ; - Some (e0) -> ⊥ : test1::EmptyEnum ; - Some (e1) -> ⊥ : test1::EmptyEnum ; - Some (enum0) -> ⊥ : test1::Enum ; + Some (x) -> 0: i32 ; + Some (y) -> ⌊mut@1⌋ ; + Some (px) -> ⊥ : &'_ mut (i32) ; + Some (py) -> &mut@1 (2: i32) ; + Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> 2: i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } [Debug] **About to evaluate statement**: [ - z := 67: u32 + var@14 := move var@15 == 2: i32 ] **Context**: @@ -117683,16 +115931,24 @@ move var@4 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 23: u32 ; - Some (y) -> 44: u32 ; - Some (z) -> ⊥ : u32 ; - Some (p) -> ⊥ : test1::Pair ; - Some (var@5) -> ⊥ : u32 ; - Some (s) -> ⊥ : test1::Sum ; - Some (o) -> ⊥ : test1::One ; - Some (e0) -> ⊥ : test1::EmptyEnum ; - Some (e1) -> ⊥ : test1::EmptyEnum ; - Some (enum0) -> ⊥ : test1::Enum ; + Some (x) -> 0: i32 ; + Some (y) -> ⌊mut@1⌋ ; + Some (px) -> ⊥ : &'_ mut (i32) ; + Some (py) -> &mut@1 (2: i32) ; + Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> 2: i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } @@ -117705,33 +115961,70 @@ move var@4 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 23: u32 ; - Some (y) -> 44: u32 ; - Some (z) -> ⊥ : u32 ; - Some (p) -> ⊥ : test1::Pair ; - Some (var@5) -> ⊥ : u32 ; - Some (s) -> ⊥ : test1::Sum ; - Some (o) -> ⊥ : test1::One ; - Some (e0) -> ⊥ : test1::EmptyEnum ; - Some (e1) -> ⊥ : test1::EmptyEnum ; - Some (enum0) -> ⊥ : test1::Enum ; + Some (x) -> 0: i32 ; + Some (y) -> ⌊mut@1⌋ ; + Some (px) -> ⊥ : &'_ mut (i32) ; + Some (py) -> &mut@1 (2: i32) ; + Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> 2: i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } - op: -67: u32 +move var@15 + +[Debug] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + Some (var@0) -> ⊥ : () ; + Some (x) -> 0: i32 ; + Some (y) -> ⌊mut@1⌋ ; + Some (px) -> ⊥ : &'_ mut (i32) ; + Some (py) -> &mut@1 (2: i32) ; + Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; +} + + +- op: +2: i32 [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); + 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 ] @@ -117742,23 +116035,31 @@ move var@4 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 23: u32 ; - Some (y) -> 44: u32 ; - Some (z) -> 67: u32 ; - Some (p) -> ⊥ : test1::Pair ; - Some (var@5) -> ⊥ : u32 ; - Some (s) -> ⊥ : test1::Sum ; - Some (o) -> ⊥ : test1::One ; - Some (e0) -> ⊥ : test1::EmptyEnum ; - Some (e1) -> ⊥ : test1::EmptyEnum ; - Some (enum0) -> ⊥ : test1::Enum ; + Some (x) -> 0: i32 ; + Some (y) -> ⌊mut@1⌋ ; + Some (px) -> ⊥ : &'_ mut (i32) ; + Some (py) -> &mut@1 (2: i32) ; + Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> s@4 : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } [Debug] **About to evaluate statement**: [ - var@5 := copy x + var@13 := ¬ move var@14 ] **Context**: @@ -117768,16 +116069,24 @@ move var@4 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 23: u32 ; - Some (y) -> 44: u32 ; - Some (z) -> 67: u32 ; - Some (p) -> ⊥ : test1::Pair ; - Some (var@5) -> ⊥ : u32 ; - Some (s) -> ⊥ : test1::Sum ; - Some (o) -> ⊥ : test1::One ; - Some (e0) -> ⊥ : test1::EmptyEnum ; - Some (e1) -> ⊥ : test1::EmptyEnum ; - Some (enum0) -> ⊥ : test1::Enum ; + Some (x) -> 0: i32 ; + Some (y) -> ⌊mut@1⌋ ; + Some (px) -> ⊥ : &'_ mut (i32) ; + Some (py) -> &mut@1 (2: i32) ; + Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> s@4 : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } @@ -117790,32 +116099,37 @@ move var@4 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 23: u32 ; - Some (y) -> 44: u32 ; - Some (z) -> 67: u32 ; - Some (p) -> ⊥ : test1::Pair ; - Some (var@5) -> ⊥ : u32 ; - Some (s) -> ⊥ : test1::Sum ; - Some (o) -> ⊥ : test1::One ; - Some (e0) -> ⊥ : test1::EmptyEnum ; - Some (e1) -> ⊥ : test1::EmptyEnum ; - Some (enum0) -> ⊥ : test1::Enum ; + Some (x) -> 0: i32 ; + Some (y) -> ⌊mut@1⌋ ; + Some (px) -> ⊥ : &'_ mut (i32) ; + Some (py) -> &mut@1 (2: i32) ; + Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> s@4 : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } - op: -copy x +move var@14 [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); + 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 ] @@ -117826,23 +116140,31 @@ copy x # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 23: u32 ; - Some (y) -> 44: u32 ; - Some (z) -> 67: u32 ; - Some (p) -> ⊥ : test1::Pair ; - Some (var@5) -> 23: u32 ; - Some (s) -> ⊥ : test1::Sum ; - Some (o) -> ⊥ : test1::One ; - Some (e0) -> ⊥ : test1::EmptyEnum ; - Some (e1) -> ⊥ : test1::EmptyEnum ; - Some (enum0) -> ⊥ : test1::Enum ; + Some (x) -> 0: i32 ; + Some (y) -> ⌊mut@1⌋ ; + Some (px) -> ⊥ : &'_ mut (i32) ; + Some (py) -> &mut@1 (2: i32) ; + Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> s@5 : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } [Debug] **About to evaluate statement**: [ - (p).x := move var@5 + assert(¬move var@13) ] **Context**: @@ -117852,16 +116174,24 @@ copy x # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 23: u32 ; - Some (y) -> 44: u32 ; - Some (z) -> 67: u32 ; - Some (p) -> ⊥ : test1::Pair ; - Some (var@5) -> 23: u32 ; - Some (s) -> ⊥ : test1::Sum ; - Some (o) -> ⊥ : test1::One ; - Some (e0) -> ⊥ : test1::EmptyEnum ; - Some (e1) -> ⊥ : test1::EmptyEnum ; - Some (enum0) -> ⊥ : test1::Enum ; + Some (x) -> 0: i32 ; + Some (y) -> ⌊mut@1⌋ ; + Some (px) -> ⊥ : &'_ mut (i32) ; + Some (py) -> &mut@1 (2: i32) ; + Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> s@5 : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } @@ -117874,35 +116204,36 @@ copy x # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 23: u32 ; - Some (y) -> 44: u32 ; - Some (z) -> 67: u32 ; - Some (p) -> ⊥ : test1::Pair ; - Some (var@5) -> 23: u32 ; - Some (s) -> ⊥ : test1::Sum ; - Some (o) -> ⊥ : test1::One ; - Some (e0) -> ⊥ : test1::EmptyEnum ; - Some (e1) -> ⊥ : test1::EmptyEnum ; - Some (enum0) -> ⊥ : test1::Enum ; + Some (x) -> 0: i32 ; + Some (y) -> ⌊mut@1⌋ ; + Some (px) -> ⊥ : &'_ mut (i32) ; + Some (py) -> &mut@1 (2: i32) ; + Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> true ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } - op: -move var@5 +move var@13 -[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); + var@18 := copy y; + var@17 := move var@18 == 2: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); return ] @@ -117913,23 +116244,31 @@ ty: (Types.Adt ((Types.AdtId 0), [], # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 23: u32 ; - Some (y) -> 44: u32 ; - Some (z) -> 67: u32 ; - Some (p) -> test1::Pair { x = 23: u32; y = ⊥ : u32; } ; - Some (var@5) -> ⊥ : u32 ; - Some (s) -> ⊥ : test1::Sum ; - Some (o) -> ⊥ : test1::One ; - Some (e0) -> ⊥ : test1::EmptyEnum ; - Some (e1) -> ⊥ : test1::EmptyEnum ; - Some (enum0) -> ⊥ : test1::Enum ; + Some (x) -> 0: i32 ; + Some (y) -> ⌊mut@1⌋ ; + Some (px) -> ⊥ : &'_ mut (i32) ; + Some (py) -> &mut@1 (2: i32) ; + Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } [Debug] **About to evaluate statement**: [ - (p).y := 67: u32 + var@18 := copy y ] **Context**: @@ -117939,16 +116278,24 @@ ty: (Types.Adt ((Types.AdtId 0), [], # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 23: u32 ; - Some (y) -> 44: u32 ; - Some (z) -> 67: u32 ; - Some (p) -> test1::Pair { x = 23: u32; y = ⊥ : u32; } ; - Some (var@5) -> ⊥ : u32 ; - Some (s) -> ⊥ : test1::Sum ; - Some (o) -> ⊥ : test1::One ; - Some (e0) -> ⊥ : test1::EmptyEnum ; - Some (e1) -> ⊥ : test1::EmptyEnum ; - Some (enum0) -> ⊥ : test1::Enum ; + Some (x) -> 0: i32 ; + Some (y) -> ⌊mut@1⌋ ; + Some (px) -> ⊥ : &'_ mut (i32) ; + Some (py) -> &mut@1 (2: i32) ; + Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } @@ -117961,30 +116308,125 @@ ty: (Types.Adt ((Types.AdtId 0), [], # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 23: u32 ; - Some (y) -> 44: u32 ; - Some (z) -> 67: u32 ; - Some (p) -> test1::Pair { x = 23: u32; y = ⊥ : u32; } ; - Some (var@5) -> ⊥ : u32 ; - Some (s) -> ⊥ : test1::Sum ; - Some (o) -> ⊥ : test1::One ; - Some (e0) -> ⊥ : test1::EmptyEnum ; - Some (e1) -> ⊥ : test1::EmptyEnum ; - Some (enum0) -> ⊥ : test1::Enum ; + Some (x) -> 0: i32 ; + Some (y) -> ⌊mut@1⌋ ; + Some (px) -> ⊥ : &'_ mut (i32) ; + Some (py) -> &mut@1 (2: i32) ; + Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } - op: -67: u32 +copy y + +[Debug] end borrow: 1: +- original context: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + Some (var@0) -> ⊥ : () ; + Some (x) -> 0: i32 ; + Some (y) -> ⌊mut@1⌋ ; + Some (px) -> ⊥ : &'_ mut (i32) ; + Some (py) -> &mut@1 (2: i32) ; + Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; +} + +[Debug] give_back: +- bid: 1 +- content: &mut@1 (2: i32) +- context: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + Some (var@0) -> ⊥ : () ; + Some (x) -> 0: i32 ; + Some (y) -> ⌊mut@1⌋ ; + Some (px) -> ⊥ : &'_ mut (i32) ; + Some (py) -> ⊥ : &'_ mut (i32) ; + Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; +} + + +[Debug] give_back_value: +- bid: 1 +- value: 2: i32 +- context: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + Some (var@0) -> ⊥ : () ; + Some (x) -> 0: i32 ; + Some (y) -> ⌊mut@1⌋ ; + Some (px) -> ⊥ : &'_ mut (i32) ; + Some (py) -> ⊥ : &'_ mut (i32) ; + Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; +} + [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); + var@17 := move var@18 == 2: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); return ] @@ -117995,23 +116437,31 @@ ty: (Types.Adt ((Types.AdtId 0), [], # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 23: u32 ; - Some (y) -> 44: u32 ; - Some (z) -> 67: u32 ; - Some (p) -> test1::Pair { x = 23: u32; y = 67: u32; } ; - Some (var@5) -> ⊥ : u32 ; - Some (s) -> ⊥ : test1::Sum ; - Some (o) -> ⊥ : test1::One ; - Some (e0) -> ⊥ : test1::EmptyEnum ; - Some (e1) -> ⊥ : test1::EmptyEnum ; - Some (enum0) -> ⊥ : test1::Enum ; + Some (x) -> 0: i32 ; + Some (y) -> 2: i32 ; + Some (px) -> ⊥ : &'_ mut (i32) ; + Some (py) -> ⊥ : &'_ mut (i32) ; + Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> 2: i32 ; } [Debug] **About to evaluate statement**: [ - (s as test1::Sum::Right).0 := true + var@17 := move var@18 == 2: i32 ] **Context**: @@ -118021,16 +116471,24 @@ ty: (Types.Adt ((Types.AdtId 0), [], # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 23: u32 ; - Some (y) -> 44: u32 ; - Some (z) -> 67: u32 ; - Some (p) -> test1::Pair { x = 23: u32; y = 67: u32; } ; - Some (var@5) -> ⊥ : u32 ; - Some (s) -> ⊥ : test1::Sum ; - Some (o) -> ⊥ : test1::One ; - Some (e0) -> ⊥ : test1::EmptyEnum ; - Some (e1) -> ⊥ : test1::EmptyEnum ; - Some (enum0) -> ⊥ : test1::Enum ; + Some (x) -> 0: i32 ; + Some (y) -> 2: i32 ; + Some (px) -> ⊥ : &'_ mut (i32) ; + Some (py) -> ⊥ : &'_ mut (i32) ; + Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> 2: i32 ; } @@ -118043,32 +116501,66 @@ ty: (Types.Adt ((Types.AdtId 0), [], # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 23: u32 ; - Some (y) -> 44: u32 ; - Some (z) -> 67: u32 ; - Some (p) -> test1::Pair { x = 23: u32; y = 67: u32; } ; - Some (var@5) -> ⊥ : u32 ; - Some (s) -> ⊥ : test1::Sum ; - Some (o) -> ⊥ : test1::One ; - Some (e0) -> ⊥ : test1::EmptyEnum ; - Some (e1) -> ⊥ : test1::EmptyEnum ; - Some (enum0) -> ⊥ : test1::Enum ; + Some (x) -> 0: i32 ; + Some (y) -> 2: i32 ; + Some (px) -> ⊥ : &'_ mut (i32) ; + Some (py) -> ⊥ : &'_ mut (i32) ; + Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> 2: i32 ; } - op: -true +move var@18 + +[Debug] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + Some (var@0) -> ⊥ : () ; + Some (x) -> 0: i32 ; + Some (y) -> 2: i32 ; + Some (px) -> ⊥ : &'_ mut (i32) ; + Some (py) -> ⊥ : &'_ mut (i32) ; + Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; +} + + +- op: +2: i32 -[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); + var@16 := ¬ move var@17; + assert(¬move var@16); return ] @@ -118079,23 +116571,31 @@ ty: (Types.Adt ((Types.AdtId 6), [], [(Types.Integer Types.U32); Types.Bool])) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 23: u32 ; - Some (y) -> 44: u32 ; - Some (z) -> 67: u32 ; - Some (p) -> test1::Pair { x = 23: u32; y = 67: u32; } ; - Some (var@5) -> ⊥ : u32 ; - Some (s) -> test1::Sum::Right { 0 = true; } ; - Some (o) -> ⊥ : test1::One ; - Some (e0) -> ⊥ : test1::EmptyEnum ; - Some (e1) -> ⊥ : test1::EmptyEnum ; - Some (enum0) -> ⊥ : test1::Enum ; + Some (x) -> 0: i32 ; + Some (y) -> 2: i32 ; + Some (px) -> ⊥ : &'_ mut (i32) ; + Some (py) -> ⊥ : &'_ mut (i32) ; + Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> s@6 : bool ; + Some (var@18) -> ⊥ : i32 ; } [Debug] **About to evaluate statement**: [ - set_discriminant(s, 1) + var@16 := ¬ move var@17 ] **Context**: @@ -118105,26 +116605,63 @@ ty: (Types.Adt ((Types.AdtId 6), [], [(Types.Integer Types.U32); Types.Bool])) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 23: u32 ; - Some (y) -> 44: u32 ; - Some (z) -> 67: u32 ; - Some (p) -> test1::Pair { x = 23: u32; y = 67: u32; } ; - Some (var@5) -> ⊥ : u32 ; - Some (s) -> test1::Sum::Right { 0 = true; } ; - Some (o) -> ⊥ : test1::One ; - Some (e0) -> ⊥ : test1::EmptyEnum ; - Some (e1) -> ⊥ : test1::EmptyEnum ; - Some (enum0) -> ⊥ : test1::Enum ; + Some (x) -> 0: i32 ; + Some (y) -> 2: i32 ; + Some (px) -> ⊥ : &'_ mut (i32) ; + Some (py) -> ⊥ : &'_ mut (i32) ; + Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> s@6 : bool ; + Some (var@18) -> ⊥ : i32 ; +} + + + +[Debug] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + Some (var@0) -> ⊥ : () ; + Some (x) -> 0: i32 ; + Some (y) -> 2: i32 ; + Some (px) -> ⊥ : &'_ mut (i32) ; + Some (py) -> ⊥ : &'_ mut (i32) ; + Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> s@6 : bool ; + Some (var@18) -> ⊥ : i32 ; } +- op: +move var@17 [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); + assert(¬move var@16); return ] @@ -118135,23 +116672,31 @@ ty: (Types.Adt ((Types.AdtId 6), [], [(Types.Integer Types.U32); Types.Bool])) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 23: u32 ; - Some (y) -> 44: u32 ; - Some (z) -> 67: u32 ; - Some (p) -> test1::Pair { x = 23: u32; y = 67: u32; } ; - Some (var@5) -> ⊥ : u32 ; - Some (s) -> test1::Sum::Right { 0 = true; } ; - Some (o) -> ⊥ : test1::One ; - Some (e0) -> ⊥ : test1::EmptyEnum ; - Some (e1) -> ⊥ : test1::EmptyEnum ; - Some (enum0) -> ⊥ : test1::Enum ; + Some (x) -> 0: i32 ; + Some (y) -> 2: i32 ; + Some (px) -> ⊥ : &'_ mut (i32) ; + Some (py) -> ⊥ : &'_ mut (i32) ; + Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> s@7 : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } [Debug] **About to evaluate statement**: [ - (o as test1::One::One).0 := 3: u64 + assert(¬move var@16) ] **Context**: @@ -118161,16 +116706,24 @@ ty: (Types.Adt ((Types.AdtId 6), [], [(Types.Integer Types.U32); Types.Bool])) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 23: u32 ; - Some (y) -> 44: u32 ; - Some (z) -> 67: u32 ; - Some (p) -> test1::Pair { x = 23: u32; y = 67: u32; } ; - Some (var@5) -> ⊥ : u32 ; - Some (s) -> test1::Sum::Right { 0 = true; } ; - Some (o) -> ⊥ : test1::One ; - Some (e0) -> ⊥ : test1::EmptyEnum ; - Some (e1) -> ⊥ : test1::EmptyEnum ; - Some (enum0) -> ⊥ : test1::Enum ; + Some (x) -> 0: i32 ; + Some (y) -> 2: i32 ; + Some (px) -> ⊥ : &'_ mut (i32) ; + Some (py) -> ⊥ : &'_ mut (i32) ; + Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> s@7 : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } @@ -118183,30 +116736,32 @@ ty: (Types.Adt ((Types.AdtId 6), [], [(Types.Integer Types.U32); Types.Bool])) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 23: u32 ; - Some (y) -> 44: u32 ; - Some (z) -> 67: u32 ; - Some (p) -> test1::Pair { x = 23: u32; y = 67: u32; } ; - Some (var@5) -> ⊥ : u32 ; - Some (s) -> test1::Sum::Right { 0 = true; } ; - Some (o) -> ⊥ : test1::One ; - Some (e0) -> ⊥ : test1::EmptyEnum ; - Some (e1) -> ⊥ : test1::EmptyEnum ; - Some (enum0) -> ⊥ : test1::Enum ; + Some (x) -> 0: i32 ; + Some (y) -> 2: i32 ; + Some (px) -> ⊥ : &'_ mut (i32) ; + Some (py) -> ⊥ : &'_ mut (i32) ; + Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> true ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } - op: -3: u64 +move var@16 -[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 ] @@ -118217,23 +116772,38 @@ ty: (Types.Adt ((Types.AdtId 2), [], [(Types.Integer Types.U64)])) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 23: u32 ; - Some (y) -> 44: u32 ; - Some (z) -> 67: u32 ; - Some (p) -> test1::Pair { x = 23: u32; y = 67: u32; } ; - Some (var@5) -> ⊥ : u32 ; - Some (s) -> test1::Sum::Right { 0 = true; } ; - Some (o) -> test1::One::One { 0 = 3: u64; } ; - Some (e0) -> ⊥ : test1::EmptyEnum ; - Some (e1) -> ⊥ : test1::EmptyEnum ; - Some (enum0) -> ⊥ : test1::Enum ; + Some (x) -> 0: i32 ; + Some (y) -> 2: i32 ; + Some (px) -> ⊥ : &'_ mut (i32) ; + Some (py) -> ⊥ : &'_ mut (i32) ; + Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } +[Debug] test_function_symbolic: test_list1 [Debug] **About to evaluate statement**: [ - set_discriminant(o, 0) + 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**: @@ -118243,25 +116813,16 @@ ty: (Types.Adt ((Types.AdtId 2), [], [(Types.Integer Types.U64)])) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 23: u32 ; - Some (y) -> 44: u32 ; - Some (z) -> 67: u32 ; - Some (p) -> test1::Pair { x = 23: u32; y = 67: u32; } ; - Some (var@5) -> ⊥ : u32 ; - Some (s) -> test1::Sum::Right { 0 = true; } ; - Some (o) -> test1::One::One { 0 = 3: u64; } ; - Some (e0) -> ⊥ : test1::EmptyEnum ; - Some (e1) -> ⊥ : test1::EmptyEnum ; - Some (enum0) -> ⊥ : test1::Enum ; + Some (l) -> ⊥ : test1::List ; + Some (var@2) -> ⊥ : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; } [Debug] **About to evaluate statement**: [ - set_discriminant(e0, 0); - set_discriminant(enum0, 0); - return + set_discriminant(var@3, 1) ] **Context**: @@ -118271,23 +116832,21 @@ ty: (Types.Adt ((Types.AdtId 2), [], [(Types.Integer Types.U64)])) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 23: u32 ; - Some (y) -> 44: u32 ; - Some (z) -> 67: u32 ; - Some (p) -> test1::Pair { x = 23: u32; y = 67: u32; } ; - Some (var@5) -> ⊥ : u32 ; - Some (s) -> test1::Sum::Right { 0 = true; } ; - Some (o) -> test1::One::One { 0 = 3: u64; } ; - Some (e0) -> ⊥ : test1::EmptyEnum ; - Some (e1) -> ⊥ : test1::EmptyEnum ; - Some (enum0) -> ⊥ : test1::Enum ; + Some (l) -> ⊥ : test1::List ; + Some (var@2) -> ⊥ : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; } [Debug] **About to evaluate statement**: [ - set_discriminant(e0, 0) + 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**: @@ -118297,24 +116856,16 @@ ty: (Types.Adt ((Types.AdtId 2), [], [(Types.Integer Types.U64)])) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 23: u32 ; - Some (y) -> 44: u32 ; - Some (z) -> 67: u32 ; - Some (p) -> test1::Pair { x = 23: u32; y = 67: u32; } ; - Some (var@5) -> ⊥ : u32 ; - Some (s) -> test1::Sum::Right { 0 = true; } ; - Some (o) -> test1::One::One { 0 = 3: u64; } ; - Some (e0) -> ⊥ : test1::EmptyEnum ; - Some (e1) -> ⊥ : test1::EmptyEnum ; - Some (enum0) -> ⊥ : test1::Enum ; + Some (l) -> ⊥ : test1::List ; + Some (var@2) -> ⊥ : std::boxed::Box> ; + Some (var@3) -> test1::List::Nil ; } [Debug] **About to evaluate statement**: [ - set_discriminant(enum0, 0); - return + var@2 := move alloc::boxed::Box>::new(move var@3) ] **Context**: @@ -118324,84 +116875,41 @@ ty: (Types.Adt ((Types.AdtId 2), [], [(Types.Integer Types.U64)])) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 23: u32 ; - Some (y) -> 44: u32 ; - Some (z) -> 67: u32 ; - Some (p) -> test1::Pair { x = 23: u32; y = 67: u32; } ; - Some (var@5) -> ⊥ : u32 ; - Some (s) -> test1::Sum::Right { 0 = true; } ; - Some (o) -> test1::One::One { 0 = 3: u64; } ; - Some (e0) -> test1::EmptyEnum::Empty ; - Some (e1) -> ⊥ : test1::EmptyEnum ; - Some (enum0) -> ⊥ : test1::Enum ; -} - - - -[Debug] -**About to evaluate statement**: [ - set_discriminant(enum0, 0) -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> 23: u32 ; - Some (y) -> 44: u32 ; - Some (z) -> 67: u32 ; - Some (p) -> test1::Pair { x = 23: u32; y = 67: u32; } ; - Some (var@5) -> ⊥ : u32 ; - Some (s) -> test1::Sum::Right { 0 = true; } ; - Some (o) -> test1::One::One { 0 = 3: u64; } ; - Some (e0) -> test1::EmptyEnum::Empty ; - Some (e1) -> ⊥ : test1::EmptyEnum ; - Some (enum0) -> ⊥ : test1::Enum ; + Some (l) -> ⊥ : test1::List ; + Some (var@2) -> ⊥ : std::boxed::Box> ; + Some (var@3) -> test1::List::Nil ; } -[Debug] -**About to evaluate statement**: [ - return -] - -**Context**: +[Debug] eval_non_local_function_call: +- fid:CfimAst.BoxNew +- type_params: [test1::List] +- args: [move var@3] +- dest: var@2 +[Debug] eval_operand: +- ctx: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 23: u32 ; - Some (y) -> 44: u32 ; - Some (z) -> 67: u32 ; - Some (p) -> test1::Pair { x = 23: u32; y = 67: u32; } ; - Some (var@5) -> ⊥ : u32 ; - Some (s) -> test1::Sum::Right { 0 = true; } ; - Some (o) -> test1::One::One { 0 = 3: u64; } ; - Some (e0) -> test1::EmptyEnum::Empty ; - Some (e1) -> ⊥ : test1::EmptyEnum ; - Some (enum0) -> test1::Enum::Variant1 ; + Some (l) -> ⊥ : test1::List ; + Some (var@2) -> ⊥ : std::boxed::Box> ; + Some (var@3) -> test1::List::Nil ; } +- op: +move var@3 -[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 - }; + (l as test1::List::Cons).0 := 0: i32; + (l as test1::List::Cons).1 := move var@2; + set_discriminant(l, 0); + drop(l); return ] @@ -118411,19 +116919,17 @@ ty: (Types.Adt ((Types.AdtId 2), [], [(Types.Integer Types.U64)])) # Frame 0: { - Some (var@0) -> ⊥ : u32 ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (var@5) -> ⊥ : u32 ; + Some (var@0) -> ⊥ : () ; + Some (l) -> ⊥ : test1::List ; + Some (var@2) -> s@0 : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; } [Debug] **About to evaluate statement**: [ - var@4 := copy x + (l as test1::List::Cons).0 := 0: i32 ] **Context**: @@ -118432,12 +116938,10 @@ ty: (Types.Adt ((Types.AdtId 2), [], [(Types.Integer Types.U64)])) # Frame 0: { - Some (var@0) -> ⊥ : u32 ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (var@5) -> ⊥ : u32 ; + Some (var@0) -> ⊥ : () ; + Some (l) -> ⊥ : test1::List ; + Some (var@2) -> s@0 : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; } @@ -118449,28 +116953,24 @@ ty: (Types.Adt ((Types.AdtId 2), [], [(Types.Integer Types.U64)])) # Frame 0: { - Some (var@0) -> ⊥ : u32 ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (var@5) -> ⊥ : u32 ; + Some (var@0) -> ⊥ : () ; + Some (l) -> ⊥ : test1::List ; + Some (var@2) -> s@0 : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; } - op: -copy x +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**: [ - 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 - }; + (l as test1::List::Cons).1 := move var@2; + set_discriminant(l, 0); + drop(l); return ] @@ -118480,19 +116980,17 @@ copy x # Frame 0: { - Some (var@0) -> ⊥ : u32 ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> s@0 : u32 ; - Some (var@5) -> ⊥ : u32 ; + Some (var@0) -> ⊥ : () ; + Some (l) -> test1::List::Cons { 0 = 0: i32; 1 = ⊥ : std::boxed::Box>; } ; + Some (var@2) -> s@0 : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; } [Debug] **About to evaluate statement**: [ - var@5 := copy y + (l as test1::List::Cons).1 := move var@2 ] **Context**: @@ -118501,12 +116999,10 @@ copy x # Frame 0: { - Some (var@0) -> ⊥ : u32 ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> s@0 : u32 ; - Some (var@5) -> ⊥ : u32 ; + Some (var@0) -> ⊥ : () ; + Some (l) -> test1::List::Cons { 0 = 0: i32; 1 = ⊥ : std::boxed::Box>; } ; + Some (var@2) -> s@0 : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; } @@ -118518,27 +117014,20 @@ copy x # Frame 0: { - Some (var@0) -> ⊥ : u32 ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> s@0 : u32 ; - Some (var@5) -> ⊥ : u32 ; + Some (var@0) -> ⊥ : () ; + Some (l) -> test1::List::Cons { 0 = 0: i32; 1 = ⊥ : std::boxed::Box>; } ; + Some (var@2) -> s@0 : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; } - op: -copy y +move var@2 [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 - }; + set_discriminant(l, 0); + drop(l); return ] @@ -118548,19 +117037,17 @@ copy y # Frame 0: { - Some (var@0) -> ⊥ : u32 ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> s@0 : u32 ; - Some (var@5) -> s@1 : u32 ; + Some (var@0) -> ⊥ : () ; + Some (l) -> test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box>; } ; + Some (var@2) -> ⊥ : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; } [Debug] **About to evaluate statement**: [ - var@3 := move var@4 >= move var@5 + set_discriminant(l, 0) ] **Context**: @@ -118569,62 +117056,17 @@ copy y # Frame 0: { - Some (var@0) -> ⊥ : u32 ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> s@0 : u32 ; - Some (var@5) -> s@1 : u32 ; -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : u32 ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> s@0 : u32 ; - Some (var@5) -> s@1 : u32 ; -} - - -- op: -move var@4 - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : u32 ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (var@5) -> s@1 : u32 ; + Some (var@0) -> ⊥ : () ; + Some (l) -> test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box>; } ; + Some (var@2) -> ⊥ : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; } -- op: -move var@5 [Debug] **About to evaluate statement**: [ - if (move var@3) { - var@0 := copy x - } - else { - var@0 := copy y - }; + drop(l); return ] @@ -118634,24 +117076,17 @@ move var@5 # Frame 0: { - Some (var@0) -> ⊥ : u32 ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (var@3) -> s@2 : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (var@5) -> ⊥ : u32 ; + Some (var@0) -> ⊥ : () ; + Some (l) -> test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box>; } ; + Some (var@2) -> ⊥ : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; } [Debug] **About to evaluate statement**: [ - if (move var@3) { - var@0 := copy x - } - else { - var@0 := copy y - } + drop(l) ] **Context**: @@ -118660,38 +117095,18 @@ move var@5 # Frame 0: { - Some (var@0) -> ⊥ : u32 ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (var@3) -> s@2 : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (var@5) -> ⊥ : u32 ; -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : u32 ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (var@3) -> true ; - Some (var@4) -> ⊥ : u32 ; - Some (var@5) -> ⊥ : u32 ; + Some (var@0) -> ⊥ : () ; + Some (l) -> test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box>; } ; + Some (var@2) -> ⊥ : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; } -- op: -move var@3 +[Debug] drop_value: place: l [Debug] **About to evaluate statement**: [ - var@0 := copy x + return ] **Context**: @@ -118700,57 +117115,53 @@ move var@3 # Frame 0: { - Some (var@0) -> ⊥ : u32 ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (var@5) -> ⊥ : u32 ; + Some (var@0) -> ⊥ : () ; + Some (l) -> ⊥ : test1::List ; + Some (var@2) -> ⊥ : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; } -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : u32 ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (var@5) -> ⊥ : u32 ; -} - - -- op: -copy x +[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 +] -[Debug] eval_operand: -- ctx: +**Context**: # Ended regions: {} # 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : u32 ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (var@3) -> false ; - Some (var@4) -> ⊥ : u32 ; - Some (var@5) -> ⊥ : u32 ; + Some (var@0) -> ⊥ : () ; + Some (b) -> ⊥ : std::boxed::Box ; + Some (x) -> ⊥ : &'_ mut (i32) ; + Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; + Some (x) -> ⊥ : &'_ (i32) ; + Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; } -- op: -move var@3 [Debug] **About to evaluate statement**: [ - var@0 := copy y + b := move alloc::boxed::Box::new(0: i32) ] **Context**: @@ -118759,16 +117170,24 @@ move var@3 # Frame 0: { - Some (var@0) -> ⊥ : u32 ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (var@5) -> ⊥ : u32 ; + Some (var@0) -> ⊥ : () ; + Some (b) -> ⊥ : std::boxed::Box ; + Some (x) -> ⊥ : &'_ mut (i32) ; + Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; + Some (x) -> ⊥ : &'_ (i32) ; + Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; } +[Debug] eval_non_local_function_call: +- fid:CfimAst.BoxNew +- type_params: [i32] +- args: [0: i32] +- dest: b [Debug] eval_operand: - ctx: # Ended regions: {} @@ -118776,20 +117195,33 @@ move var@3 # Frame 0: { - Some (var@0) -> ⊥ : u32 ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (var@5) -> ⊥ : u32 ; + Some (var@0) -> ⊥ : () ; + Some (b) -> ⊥ : std::boxed::Box ; + Some (x) -> ⊥ : &'_ mut (i32) ; + Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; + Some (x) -> ⊥ : &'_ (i32) ; + Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; } - op: -copy y +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 ] @@ -118799,19 +117231,22 @@ copy y # Frame 0: { - Some (var@0) -> s@0 : u32 ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (var@5) -> ⊥ : u32 ; + Some (var@0) -> ⊥ : () ; + Some (b) -> s@0 : std::boxed::Box ; + Some (x) -> ⊥ : &'_ mut (i32) ; + Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; + Some (x) -> ⊥ : &'_ (i32) ; + Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; } [Debug] **About to evaluate statement**: [ - return + var@3 := &two-phase b ] **Context**: @@ -118820,28 +117255,30 @@ copy y # Frame 0: { - Some (var@0) -> s@1 : u32 ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (var@5) -> ⊥ : u32 ; + Some (var@0) -> ⊥ : () ; + Some (b) -> s@0 : std::boxed::Box ; + Some (x) -> ⊥ : &'_ mut (i32) ; + Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; + Some (x) -> ⊥ : &'_ (i32) ; + Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; } -[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); + 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 ] @@ -118852,22 +117289,21 @@ copy y # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⊥ : u32 ; - Some (y) -> ⊥ : u32 ; - Some (z) -> ⊥ : u32 ; - Some (var@4) -> ⊥ : u32 ; - Some (var@5) -> ⊥ : u32 ; - Some (var@6) -> ⊥ : (u32, bool) ; + Some (b) -> @shared_loan({0}, s@0 : std::boxed::Box) ; + Some (x) -> ⊥ : &'_ mut (i32) ; + Some (var@3) -> ⌊inactivated_mut@0⌋ ; + Some (x) -> ⊥ : &'_ (i32) ; + Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; + Some (var@6) -> ⊥ : bool ; Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : u32 ; + Some (var@8) -> ⊥ : i32 ; } [Debug] **About to evaluate statement**: [ - x := move get_max(4: u32, 3: u32) + x := move core::ops::deref::DerefMut::deref_mut(move var@3) ] **Context**: @@ -118877,42 +117313,25 @@ copy y # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⊥ : u32 ; - Some (y) -> ⊥ : u32 ; - Some (z) -> ⊥ : u32 ; - Some (var@4) -> ⊥ : u32 ; - Some (var@5) -> ⊥ : u32 ; - Some (var@6) -> ⊥ : (u32, bool) ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : u32 ; -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⊥ : u32 ; - Some (y) -> ⊥ : u32 ; - Some (z) -> ⊥ : u32 ; - Some (var@4) -> ⊥ : u32 ; - Some (var@5) -> ⊥ : u32 ; - Some (var@6) -> ⊥ : (u32, bool) ; + Some (b) -> @shared_loan({0}, s@0 : std::boxed::Box) ; + Some (x) -> ⊥ : &'_ mut (i32) ; + Some (var@3) -> ⌊inactivated_mut@0⌋ ; + Some (x) -> ⊥ : &'_ (i32) ; + Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; + Some (var@6) -> ⊥ : bool ; Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : u32 ; + Some (var@8) -> ⊥ : i32 ; } -- op: -4: u32 +[Debug] eval_non_local_function_call: +- fid:CfimAst.BoxDerefMut +- type_params: [i32] +- args: [move var@3] +- dest: x +[Debug] activate_inactivated_mut_borrow: resulting value: +s@0 : std::boxed::Box [Debug] eval_operand: - ctx: # Ended regions: {} @@ -118921,31 +117340,30 @@ copy y # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⊥ : u32 ; - Some (y) -> ⊥ : u32 ; - Some (z) -> ⊥ : u32 ; - Some (var@4) -> ⊥ : u32 ; - Some (var@5) -> ⊥ : u32 ; - Some (var@6) -> ⊥ : (u32, bool) ; + Some (b) -> ⌊mut@0⌋ ; + Some (x) -> ⊥ : &'_ mut (i32) ; + Some (var@3) -> &mut@0 (s@0 : std::boxed::Box) ; + Some (x) -> ⊥ : &'_ (i32) ; + Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; + Some (var@6) -> ⊥ : bool ; Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : u32 ; + Some (var@8) -> ⊥ : i32 ; } - op: -3: u32 +move var@3 [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); + *(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 ] @@ -118956,22 +117374,25 @@ copy y # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (y) -> ⊥ : u32 ; - Some (z) -> ⊥ : u32 ; - Some (var@4) -> ⊥ : u32 ; - Some (var@5) -> ⊥ : u32 ; - Some (var@6) -> ⊥ : (u32, bool) ; + Some (b) -> ⌊mut@0⌋ ; + Some (x) -> s@1 : &r@0 mut (i32) ; + Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; + Some (x) -> ⊥ : &'_ (i32) ; + Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; + Some (var@6) -> ⊥ : bool ; Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : u32 ; + Some (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**: [ - y := move get_max(10: u32, 11: u32) + *(x) := 1: i32 ] **Context**: @@ -118981,15 +117402,18 @@ copy y # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (y) -> ⊥ : u32 ; - Some (z) -> ⊥ : u32 ; - Some (var@4) -> ⊥ : u32 ; - Some (var@5) -> ⊥ : u32 ; - Some (var@6) -> ⊥ : (u32, bool) ; + Some (b) -> ⌊mut@0⌋ ; + Some (x) -> s@1 : &r@0 mut (i32) ; + Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; + Some (x) -> ⊥ : &'_ (i32) ; + Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; + Some (var@6) -> ⊥ : bool ; Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : u32 ; + Some (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)) + } } @@ -119002,53 +117426,81 @@ copy y # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (y) -> ⊥ : u32 ; - Some (z) -> ⊥ : u32 ; - Some (var@4) -> ⊥ : u32 ; - Some (var@5) -> ⊥ : u32 ; - Some (var@6) -> ⊥ : (u32, bool) ; + Some (b) -> ⌊mut@0⌋ ; + Some (x) -> s@1 : &r@0 mut (i32) ; + Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; + Some (x) -> ⊥ : &'_ (i32) ; + Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; + Some (var@6) -> ⊥ : bool ; Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : u32 ; + Some (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: -10: u32 +1: i32 -[Debug] eval_operand: -- ctx: +[Debug] expand_symbolic_value: s@1 : &r@0 mut (i32) + +- original context: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (y) -> ⊥ : u32 ; - Some (z) -> ⊥ : u32 ; - Some (var@4) -> ⊥ : u32 ; - Some (var@5) -> ⊥ : u32 ; - Some (var@6) -> ⊥ : (u32, bool) ; + Some (b) -> ⌊mut@0⌋ ; + Some (x) -> s@1 : &r@0 mut (i32) ; + Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; + Some (x) -> ⊥ : &'_ (i32) ; + Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; + Some (var@6) -> ⊥ : bool ; Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : u32 ; + Some (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)) + } + None -> 1: i32 ; } -- op: -11: u32 +- new context: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + Some (var@0) -> ⊥ : () ; + Some (b) -> ⌊mut@0⌋ ; + Some (x) -> &mut@1 (s@2 : i32) ; + Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; + Some (x) -> ⊥ : &'_ (i32) ; + Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (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)⌋ + } + None -> 1: i32 ; +} + [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); + 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 ] @@ -119059,22 +117511,25 @@ copy y # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (z) -> ⊥ : u32 ; - Some (var@4) -> ⊥ : u32 ; - Some (var@5) -> ⊥ : u32 ; - Some (var@6) -> ⊥ : (u32, bool) ; + Some (b) -> ⌊mut@0⌋ ; + Some (x) -> &mut@1 (1: i32) ; + Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; + Some (x) -> ⊥ : &'_ (i32) ; + Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; + Some (var@6) -> ⊥ : bool ; Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : u32 ; + Some (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@4 := copy x + var@5 := &b ] **Context**: @@ -119084,541 +117539,653 @@ copy y # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (z) -> ⊥ : u32 ; - Some (var@4) -> ⊥ : u32 ; - Some (var@5) -> ⊥ : u32 ; - Some (var@6) -> ⊥ : (u32, bool) ; + Some (b) -> ⌊mut@0⌋ ; + Some (x) -> &mut@1 (1: i32) ; + Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; + Some (x) -> ⊥ : &'_ (i32) ; + Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; + Some (var@6) -> ⊥ : bool ; Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : u32 ; + Some (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] eval_operand: -- ctx: +[Debug] end borrow: 0: +- original context: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (z) -> ⊥ : u32 ; - Some (var@4) -> ⊥ : u32 ; - Some (var@5) -> ⊥ : u32 ; - Some (var@6) -> ⊥ : (u32, bool) ; + Some (b) -> ⌊mut@0⌋ ; + Some (x) -> &mut@1 (1: i32) ; + Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; + Some (x) -> ⊥ : &'_ (i32) ; + Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; + Some (var@6) -> ⊥ : bool ; Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : u32 ; + Some (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)⌋ + } } - -- op: -copy x - -[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**: +[Debug] end borrow: 0: found outer borrows/abs:(InterpreterBorrowsCore.OuterAbs 0) +[Debug] end_abstraction: 0 +- original context: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (z) -> ⊥ : u32 ; - Some (var@4) -> s@0 : u32 ; - Some (var@5) -> ⊥ : u32 ; - Some (var@6) -> ⊥ : (u32, bool) ; + Some (b) -> ⌊mut@0⌋ ; + Some (x) -> &mut@1 (1: i32) ; + Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; + Some (x) -> ⊥ : &'_ (i32) ; + Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; + Some (var@6) -> ⊥ : bool ; Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : u32 ; + Some (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 := copy y -] - -**Context**: +[Debug] end_abstraction: 0 +- context after parent abstractions ended: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (z) -> ⊥ : u32 ; - Some (var@4) -> s@0 : u32 ; - Some (var@5) -> ⊥ : u32 ; - Some (var@6) -> ⊥ : (u32, bool) ; + Some (b) -> ⌊mut@0⌋ ; + Some (x) -> &mut@1 (1: i32) ; + Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; + Some (x) -> ⊥ : &'_ (i32) ; + Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; + Some (var@6) -> ⊥ : bool ; Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : u32 ; + Some (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] eval_operand: -- ctx: +[Debug] end borrow: 1: +- original context: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (z) -> ⊥ : u32 ; - Some (var@4) -> s@0 : u32 ; - Some (var@5) -> ⊥ : u32 ; - Some (var@6) -> ⊥ : (u32, bool) ; + Some (b) -> ⌊mut@0⌋ ; + Some (x) -> &mut@1 (1: i32) ; + Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; + Some (x) -> ⊥ : &'_ (i32) ; + Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; + Some (var@6) -> ⊥ : bool ; Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : u32 ; + Some (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] give_back: +- bid: 1 +- content: &mut@1 (1: i32) +- context: +# Ended regions: {} +# 1 frame(s) -- op: -copy y +# Frame 0: +{ + Some (var@0) -> ⊥ : () ; + Some (b) -> ⌊mut@0⌋ ; + Some (x) -> ⊥ : &'_ mut (i32) ; + Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; + Some (x) -> ⊥ : &'_ (i32) ; + Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (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**: [ - 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**: +[Debug] give_back_value: +- bid: 1 +- value: 1: i32 +- context: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (z) -> ⊥ : u32 ; - Some (var@4) -> s@0 : u32 ; - Some (var@5) -> s@1 : u32 ; - Some (var@6) -> ⊥ : (u32, bool) ; + Some (b) -> ⌊mut@0⌋ ; + Some (x) -> ⊥ : &'_ mut (i32) ; + Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; + Some (x) -> ⊥ : &'_ (i32) ; + Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; + Some (var@6) -> ⊥ : bool ; Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : u32 ; + Some (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**: [ - z := copy var@4 + copy var@5 -] - -**Context**: +[Debug] end_abstraction: 0 +- context after loans ended: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (z) -> ⊥ : u32 ; - Some (var@4) -> s@0 : u32 ; - Some (var@5) -> s@1 : u32 ; - Some (var@6) -> ⊥ : (u32, bool) ; + Some (b) -> ⌊mut@0⌋ ; + Some (x) -> ⊥ : &'_ mut (i32) ; + Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; + Some (x) -> ⊥ : &'_ (i32) ; + Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; + Some (var@6) -> ⊥ : bool ; Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : u32 ; + Some (var@8) -> ⊥ : i32 ; + abs@0{parents={}}{regions={0}} { + &mut@0 (proj_borrows (s@0 : std::boxed::Box <: std::boxed::Box)), + @ended_mut_loan{ given_back=1: i32; child=proj_loans (s@2 : i32) } + } } - - -[Debug] eval_operand: -- ctx: +[Debug] give_back_value: +- bid: 0 +- value: s@3 : std::boxed::Box +- context: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (z) -> ⊥ : u32 ; - Some (var@4) -> s@0 : u32 ; - Some (var@5) -> s@1 : u32 ; - Some (var@6) -> ⊥ : (u32, bool) ; + Some (b) -> ⌊mut@0⌋ ; + Some (x) -> ⊥ : &'_ mut (i32) ; + Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; + Some (x) -> ⊥ : &'_ (i32) ; + Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; + Some (var@6) -> ⊥ : bool ; Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : u32 ; + Some (var@8) -> ⊥ : i32 ; + abs@0{parents={}}{regions={0}} { + ⊥ : &r@0 mut (std::boxed::Box), + @ended_mut_loan{ given_back=1: i32; child=proj_loans (s@2 : i32) } + } } -- op: -copy var@4 - -[Debug] eval_operand: -- ctx: +[Debug] end_abstraction: 0 +- original context: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (z) -> ⊥ : u32 ; - Some (var@4) -> s@0 : u32 ; - Some (var@5) -> s@1 : u32 ; - Some (var@6) -> ⊥ : (u32, bool) ; + Some (b) -> ⌊mut@0⌋ ; + Some (x) -> &mut@1 (1: i32) ; + Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; + Some (x) -> ⊥ : &'_ (i32) ; + Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; + Some (var@6) -> ⊥ : bool ; Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : u32 ; + Some (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)⌋ + } } -- op: -copy var@5 +- new context: +# Ended regions: {0} +# 1 frame(s) + +# Frame 0: +{ + Some (var@0) -> ⊥ : () ; + Some (b) -> s@3 : std::boxed::Box ; + Some (x) -> ⊥ : &'_ mut (i32) ; + Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; + Some (x) -> ⊥ : &'_ (i32) ; + Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; +} [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); + 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**: -# Ended regions: {} +# Ended regions: {0} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (z) -> s@2 : u32 ; - Some (var@4) -> s@0 : u32 ; - Some (var@5) -> s@1 : u32 ; - Some (var@6) -> ⊥ : (u32, bool) ; + Some (b) -> @shared_loan({2}, s@3 : std::boxed::Box) ; + Some (x) -> ⊥ : &'_ mut (i32) ; + Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; + Some (x) -> ⊥ : &'_ (i32) ; + Some (var@5) -> ⌊shared@2⌋ ; + Some (var@6) -> ⊥ : bool ; Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : u32 ; + Some (var@8) -> ⊥ : i32 ; } [Debug] **About to evaluate statement**: [ - var@9 := copy z + x := move core::ops::deref::Deref>::deref(move var@5) ] **Context**: -# Ended regions: {} +# Ended regions: {0} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (z) -> s@2 : u32 ; - Some (var@4) -> s@0 : u32 ; - Some (var@5) -> s@1 : u32 ; - Some (var@6) -> ⊥ : (u32, bool) ; + Some (b) -> @shared_loan({2}, s@3 : std::boxed::Box) ; + Some (x) -> ⊥ : &'_ mut (i32) ; + Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; + Some (x) -> ⊥ : &'_ (i32) ; + Some (var@5) -> ⌊shared@2⌋ ; + Some (var@6) -> ⊥ : bool ; Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : u32 ; + Some (var@8) -> ⊥ : i32 ; } +[Debug] eval_non_local_function_call: +- fid:CfimAst.BoxDeref +- type_params: [i32] +- args: [move var@5] +- dest: x [Debug] eval_operand: - ctx: -# Ended regions: {} +# Ended regions: {0} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (z) -> s@2 : u32 ; - Some (var@4) -> s@0 : u32 ; - Some (var@5) -> s@1 : u32 ; - Some (var@6) -> ⊥ : (u32, bool) ; + Some (b) -> @shared_loan({2}, s@3 : std::boxed::Box) ; + Some (x) -> ⊥ : &'_ mut (i32) ; + Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; + Some (x) -> ⊥ : &'_ (i32) ; + Some (var@5) -> ⌊shared@2⌋ ; + Some (var@6) -> ⊥ : bool ; Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : u32 ; + Some (var@8) -> ⊥ : i32 ; } - op: -copy z +move var@5 [Debug] **About to evaluate statement**: [ - var@8 := move var@9 == 15: u32; - var@7 := ¬ move var@8; - assert(¬move var@7); + var@8 := copy *(x); + var@7 := move var@8 == 1: i32; + var@6 := ¬ move var@7; + assert(¬move var@6); + drop(b); return ] **Context**: -# Ended regions: {} +# Ended regions: {0} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (z) -> s@2 : u32 ; - Some (var@4) -> s@0 : u32 ; - Some (var@5) -> s@1 : u32 ; - Some (var@6) -> ⊥ : (u32, bool) ; + Some (b) -> @shared_loan({2}, s@3 : std::boxed::Box) ; + Some (x) -> ⊥ : &'_ mut (i32) ; + Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; + Some (x) -> s@4 : &r@1 (i32) ; + Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; + Some (var@6) -> ⊥ : bool ; Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> s@2 : u32 ; + Some (var@8) -> ⊥ : i32 ; + abs@1{parents={}}{regions={1}} { + ⌊shared@2⌋, + proj_loans (s@4 : &r@1 (i32)) + } } [Debug] **About to evaluate statement**: [ - var@8 := move var@9 == 15: u32 + var@8 := copy *(x) ] **Context**: -# Ended regions: {} +# Ended regions: {0} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (z) -> s@2 : u32 ; - Some (var@4) -> s@0 : u32 ; - Some (var@5) -> s@1 : u32 ; - Some (var@6) -> ⊥ : (u32, bool) ; + Some (b) -> @shared_loan({2}, s@3 : std::boxed::Box) ; + Some (x) -> ⊥ : &'_ mut (i32) ; + Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; + Some (x) -> s@4 : &r@1 (i32) ; + Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; + Some (var@6) -> ⊥ : bool ; Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> s@2 : u32 ; + Some (var@8) -> ⊥ : i32 ; + abs@1{parents={}}{regions={1}} { + ⌊shared@2⌋, + proj_loans (s@4 : &r@1 (i32)) + } } [Debug] eval_operand: - ctx: -# Ended regions: {} +# Ended regions: {0} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (z) -> s@2 : u32 ; - Some (var@4) -> s@0 : u32 ; - Some (var@5) -> s@1 : u32 ; - Some (var@6) -> ⊥ : (u32, bool) ; + Some (b) -> @shared_loan({2}, s@3 : std::boxed::Box) ; + Some (x) -> ⊥ : &'_ mut (i32) ; + Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; + Some (x) -> s@4 : &r@1 (i32) ; + Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; + Some (var@6) -> ⊥ : bool ; Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> s@2 : u32 ; + Some (var@8) -> ⊥ : i32 ; + abs@1{parents={}}{regions={1}} { + ⌊shared@2⌋, + proj_loans (s@4 : &r@1 (i32)) + } } - op: -move var@9 +copy *(x) -[Debug] eval_operand: -- ctx: -# Ended regions: {} +[Debug] expand_symbolic_value: s@4 : &r@1 (i32) + +- original context: +# Ended regions: {0} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (z) -> s@2 : u32 ; - Some (var@4) -> s@0 : u32 ; - Some (var@5) -> s@1 : u32 ; - Some (var@6) -> ⊥ : (u32, bool) ; + Some (b) -> @shared_loan({2}, s@3 : std::boxed::Box) ; + Some (x) -> ⊥ : &'_ mut (i32) ; + Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; + Some (x) -> s@4 : &r@1 (i32) ; + Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; + Some (var@6) -> ⊥ : bool ; Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : u32 ; + Some (var@8) -> ⊥ : i32 ; + abs@1{parents={}}{regions={1}} { + ⌊shared@2⌋, + proj_loans (s@4 : &r@1 (i32)) + } } -- op: -15: u32 +- new context: +# Ended regions: {0} +# 1 frame(s) + +# Frame 0: +{ + Some (var@0) -> ⊥ : () ; + Some (b) -> @shared_loan({2}, s@3 : std::boxed::Box) ; + Some (x) -> ⊥ : &'_ mut (i32) ; + Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; + Some (x) -> ⌊shared@3⌋ ; + Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; + abs@1{parents={}}{regions={1}} { + ⌊shared@2⌋, + @shared_loan({3}, s@5 : i32, proj_loans (s@5 : i32)) + } +} + [Debug] **About to evaluate statement**: [ - var@7 := ¬ move var@8; - assert(¬move var@7); + var@7 := move var@8 == 1: i32; + var@6 := ¬ move var@7; + assert(¬move var@6); + drop(b); return ] **Context**: -# Ended regions: {} +# Ended regions: {0} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (z) -> s@2 : u32 ; - Some (var@4) -> s@0 : u32 ; - Some (var@5) -> s@1 : u32 ; - Some (var@6) -> ⊥ : (u32, bool) ; + Some (b) -> @shared_loan({2}, s@3 : std::boxed::Box) ; + Some (x) -> ⊥ : &'_ mut (i32) ; + Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; + Some (x) -> ⌊shared@3⌋ ; + Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; + Some (var@6) -> ⊥ : bool ; Some (var@7) -> ⊥ : bool ; - Some (var@8) -> s@3 : bool ; - Some (var@9) -> ⊥ : u32 ; + Some (var@8) -> s@5 : i32 ; + abs@1{parents={}}{regions={1}} { + ⌊shared@2⌋, + @shared_loan({3}, s@5 : i32, proj_loans (s@5 : i32)) + } } [Debug] **About to evaluate statement**: [ - var@7 := ¬ move var@8 + var@7 := move var@8 == 1: i32 ] **Context**: -# Ended regions: {} +# Ended regions: {0} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (z) -> s@2 : u32 ; - Some (var@4) -> s@0 : u32 ; - Some (var@5) -> s@1 : u32 ; - Some (var@6) -> ⊥ : (u32, bool) ; + Some (b) -> @shared_loan({2}, s@3 : std::boxed::Box) ; + Some (x) -> ⊥ : &'_ mut (i32) ; + Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; + Some (x) -> ⌊shared@3⌋ ; + Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; + Some (var@6) -> ⊥ : bool ; Some (var@7) -> ⊥ : bool ; - Some (var@8) -> s@3 : bool ; - Some (var@9) -> ⊥ : u32 ; + Some (var@8) -> s@5 : i32 ; + abs@1{parents={}}{regions={1}} { + ⌊shared@2⌋, + @shared_loan({3}, s@5 : i32, proj_loans (s@5 : i32)) + } } [Debug] eval_operand: - ctx: -# Ended regions: {} +# Ended regions: {0} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (z) -> s@2 : u32 ; - Some (var@4) -> s@0 : u32 ; - Some (var@5) -> s@1 : u32 ; - Some (var@6) -> ⊥ : (u32, bool) ; + Some (b) -> @shared_loan({2}, s@3 : std::boxed::Box) ; + Some (x) -> ⊥ : &'_ mut (i32) ; + Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; + Some (x) -> ⌊shared@3⌋ ; + Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; + Some (var@6) -> ⊥ : bool ; Some (var@7) -> ⊥ : bool ; - Some (var@8) -> s@3 : bool ; - Some (var@9) -> ⊥ : u32 ; + Some (var@8) -> s@5 : i32 ; + abs@1{parents={}}{regions={1}} { + ⌊shared@2⌋, + @shared_loan({3}, s@5 : i32, proj_loans (s@5 : i32)) + } } - op: move var@8 +[Debug] eval_operand: +- ctx: +# Ended regions: {0} +# 1 frame(s) + +# Frame 0: +{ + Some (var@0) -> ⊥ : () ; + Some (b) -> @shared_loan({2}, s@3 : std::boxed::Box) ; + Some (x) -> ⊥ : &'_ mut (i32) ; + Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; + Some (x) -> ⌊shared@3⌋ ; + Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; + abs@1{parents={}}{regions={1}} { + ⌊shared@2⌋, + @shared_loan({3}, s@5 : i32, proj_loans (s@5 : i32)) + } +} + + +- op: +1: i32 + [Debug] **About to evaluate statement**: [ - assert(¬move var@7); + var@6 := ¬ move var@7; + assert(¬move var@6); + drop(b); return ] **Context**: -# Ended regions: {} +# Ended regions: {0} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (z) -> s@2 : u32 ; - Some (var@4) -> s@0 : u32 ; - Some (var@5) -> s@1 : u32 ; - Some (var@6) -> ⊥ : (u32, bool) ; - Some (var@7) -> s@4 : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : u32 ; + Some (b) -> @shared_loan({2}, s@3 : std::boxed::Box) ; + Some (x) -> ⊥ : &'_ mut (i32) ; + Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; + Some (x) -> ⌊shared@3⌋ ; + Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> s@6 : bool ; + Some (var@8) -> ⊥ : i32 ; + abs@1{parents={}}{regions={1}} { + ⌊shared@2⌋, + @shared_loan({3}, s@5 : i32, proj_loans (s@5 : i32)) + } } [Debug] **About to evaluate statement**: [ - assert(¬move var@7) + var@6 := ¬ move var@7 ] **Context**: -# Ended regions: {} +# Ended regions: {0} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (z) -> s@2 : u32 ; - Some (var@4) -> s@0 : u32 ; - Some (var@5) -> s@1 : u32 ; - Some (var@6) -> ⊥ : (u32, bool) ; - Some (var@7) -> s@4 : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : u32 ; + Some (b) -> @shared_loan({2}, s@3 : std::boxed::Box) ; + Some (x) -> ⊥ : &'_ mut (i32) ; + Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; + Some (x) -> ⌊shared@3⌋ ; + Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> s@6 : bool ; + Some (var@8) -> ⊥ : i32 ; + abs@1{parents={}}{regions={1}} { + ⌊shared@2⌋, + @shared_loan({3}, s@5 : i32, proj_loans (s@5 : i32)) + } } [Debug] eval_operand: - ctx: -# Ended regions: {} +# Ended regions: {0} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (z) -> s@2 : u32 ; - Some (var@4) -> s@0 : u32 ; - Some (var@5) -> s@1 : u32 ; - Some (var@6) -> ⊥ : (u32, bool) ; - Some (var@7) -> true ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : u32 ; + Some (b) -> @shared_loan({2}, s@3 : std::boxed::Box) ; + Some (x) -> ⊥ : &'_ mut (i32) ; + Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; + Some (x) -> ⌊shared@3⌋ ; + Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> s@6 : bool ; + Some (var@8) -> ⊥ : i32 ; + abs@1{parents={}}{regions={1}} { + ⌊shared@2⌋, + @shared_loan({3}, s@5 : i32, proj_loans (s@5 : i32)) + } } @@ -119627,224 +118194,358 @@ move var@7 [Debug] **About to evaluate statement**: [ + assert(¬move var@6); + drop(b); return ] **Context**: -# Ended regions: {} +# Ended regions: {0} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (y) -> s@1 : u32 ; - Some (z) -> s@2 : u32 ; - Some (var@4) -> s@0 : u32 ; - Some (var@5) -> s@1 : u32 ; - Some (var@6) -> ⊥ : (u32, bool) ; + Some (b) -> @shared_loan({2}, s@3 : std::boxed::Box) ; + Some (x) -> ⊥ : &'_ mut (i32) ; + Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; + Some (x) -> ⌊shared@3⌋ ; + Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; + Some (var@6) -> s@7 : bool ; Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : u32 ; -} - - - -[Debug] test_function_symbolic: test_neg -[Debug] -**About to evaluate statement**: [ - var@2 := copy x; - var@3 := copy var@2 == -2147483648: i32; - assert(¬move var@3); - var@0 := - move var@2; - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : i32 ; - Some (x) -> s@0 : i32 ; - Some (var@2) -> ⊥ : i32 ; - Some (var@3) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; + abs@1{parents={}}{regions={1}} { + ⌊shared@2⌋, + @shared_loan({3}, s@5 : i32, proj_loans (s@5 : i32)) + } } [Debug] **About to evaluate statement**: [ - var@2 := copy x + assert(¬move var@6) ] **Context**: -# Ended regions: {} +# Ended regions: {0} # 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : i32 ; - Some (x) -> s@0 : i32 ; - Some (var@2) -> ⊥ : i32 ; - Some (var@3) -> ⊥ : bool ; + Some (var@0) -> ⊥ : () ; + Some (b) -> @shared_loan({2}, s@3 : std::boxed::Box) ; + Some (x) -> ⊥ : &'_ mut (i32) ; + Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; + Some (x) -> ⌊shared@3⌋ ; + Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; + Some (var@6) -> s@7 : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; + abs@1{parents={}}{regions={1}} { + ⌊shared@2⌋, + @shared_loan({3}, s@5 : i32, proj_loans (s@5 : i32)) + } } [Debug] eval_operand: - ctx: -# Ended regions: {} +# Ended regions: {0} # 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : i32 ; - Some (x) -> s@0 : i32 ; - Some (var@2) -> ⊥ : i32 ; - Some (var@3) -> ⊥ : bool ; + Some (var@0) -> ⊥ : () ; + Some (b) -> @shared_loan({2}, s@3 : std::boxed::Box) ; + Some (x) -> ⊥ : &'_ mut (i32) ; + Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; + Some (x) -> ⌊shared@3⌋ ; + Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; + Some (var@6) -> true ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; + abs@1{parents={}}{regions={1}} { + ⌊shared@2⌋, + @shared_loan({3}, s@5 : i32, proj_loans (s@5 : i32)) + } } - op: -copy x +move var@6 [Debug] **About to evaluate statement**: [ - var@3 := copy var@2 == -2147483648: i32; - assert(¬move var@3); - var@0 := - move var@2; + drop(b); return ] **Context**: -# Ended regions: {} +# Ended regions: {0} # 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : i32 ; - Some (x) -> s@0 : i32 ; - Some (var@2) -> s@0 : i32 ; - Some (var@3) -> ⊥ : bool ; + Some (var@0) -> ⊥ : () ; + Some (b) -> @shared_loan({2}, s@3 : std::boxed::Box) ; + Some (x) -> ⊥ : &'_ mut (i32) ; + Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; + Some (x) -> ⌊shared@3⌋ ; + Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; + abs@1{parents={}}{regions={1}} { + ⌊shared@2⌋, + @shared_loan({3}, s@5 : i32, proj_loans (s@5 : i32)) + } } [Debug] **About to evaluate statement**: [ - var@3 := copy var@2 == -2147483648: i32 + drop(b) ] **Context**: -# Ended regions: {} +# Ended regions: {0} # 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : i32 ; - Some (x) -> s@0 : i32 ; - Some (var@2) -> s@0 : i32 ; - Some (var@3) -> ⊥ : bool ; + Some (var@0) -> ⊥ : () ; + Some (b) -> @shared_loan({2}, s@3 : std::boxed::Box) ; + Some (x) -> ⊥ : &'_ mut (i32) ; + Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; + Some (x) -> ⌊shared@3⌋ ; + Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; + abs@1{parents={}}{regions={1}} { + ⌊shared@2⌋, + @shared_loan({3}, s@5 : i32, proj_loans (s@5 : i32)) + } } -[Debug] eval_operand: -- ctx: -# Ended regions: {} +[Debug] drop_value: place: b +[Debug] end borrow: 2: +- original context: +# Ended regions: {0} # 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : i32 ; - Some (x) -> s@0 : i32 ; - Some (var@2) -> s@0 : i32 ; - Some (var@3) -> ⊥ : bool ; + Some (var@0) -> ⊥ : () ; + Some (b) -> ⊥ : std::boxed::Box ; + Some (x) -> ⊥ : &'_ mut (i32) ; + Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; + Some (x) -> ⌊shared@3⌋ ; + Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; + abs@1{parents={}}{regions={1}} { + ⌊shared@2⌋, + @shared_loan({3}, s@5 : i32, proj_loans (s@5 : i32)) + } + None -> @shared_loan({2}, s@3 : std::boxed::Box) ; } +[Debug] end borrow: 2: found outer borrows/abs:(InterpreterBorrowsCore.OuterAbs 1) +[Debug] end_abstraction: 1 +- original context: +# Ended regions: {0} +# 1 frame(s) -- op: -copy var@2 +# Frame 0: +{ + Some (var@0) -> ⊥ : () ; + Some (b) -> ⊥ : std::boxed::Box ; + Some (x) -> ⊥ : &'_ mut (i32) ; + Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; + Some (x) -> ⌊shared@3⌋ ; + Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; + abs@1{parents={}}{regions={1}} { + ⌊shared@2⌋, + @shared_loan({3}, s@5 : i32, proj_loans (s@5 : i32)) + } + None -> @shared_loan({2}, s@3 : std::boxed::Box) ; +} -[Debug] eval_operand: -- ctx: -# Ended regions: {} +[Debug] end_abstraction: 1 +- context after parent abstractions ended: +# Ended regions: {0} # 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : i32 ; - Some (x) -> s@0 : i32 ; - Some (var@2) -> s@0 : i32 ; - Some (var@3) -> ⊥ : bool ; + Some (var@0) -> ⊥ : () ; + Some (b) -> ⊥ : std::boxed::Box ; + Some (x) -> ⊥ : &'_ mut (i32) ; + Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; + Some (x) -> ⌊shared@3⌋ ; + Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; + abs@1{parents={}}{regions={1}} { + ⌊shared@2⌋, + @shared_loan({3}, s@5 : i32, proj_loans (s@5 : i32)) + } + None -> @shared_loan({2}, s@3 : std::boxed::Box) ; } +[Debug] end borrow: 3: +- original context: +# Ended regions: {0} +# 1 frame(s) -- op: --2147483648: i32 - -[Debug] -**About to evaluate statement**: [ - assert(¬move var@3); - var@0 := - move var@2; - return -] +# Frame 0: +{ + Some (var@0) -> ⊥ : () ; + Some (b) -> ⊥ : std::boxed::Box ; + Some (x) -> ⊥ : &'_ mut (i32) ; + Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; + Some (x) -> ⌊shared@3⌋ ; + Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; + abs@1{parents={}}{regions={1}} { + ⌊shared@2⌋, + @shared_loan({3}, s@5 : i32, proj_loans (s@5 : i32)) + } + None -> @shared_loan({2}, s@3 : std::boxed::Box) ; +} -**Context**: -# Ended regions: {} +[Debug] give_back: +- bid: 3 +- content: ⌊shared@3⌋ +- context: +# Ended regions: {0} # 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : i32 ; - Some (x) -> s@0 : i32 ; - Some (var@2) -> s@0 : i32 ; - Some (var@3) -> s@1 : bool ; + Some (var@0) -> ⊥ : () ; + Some (b) -> ⊥ : std::boxed::Box ; + Some (x) -> ⊥ : &'_ mut (i32) ; + Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; + Some (x) -> ⊥ : &'_ (i32) ; + Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; + abs@1{parents={}}{regions={1}} { + ⌊shared@2⌋, + @shared_loan({3}, s@5 : i32, proj_loans (s@5 : i32)) + } + None -> @shared_loan({2}, s@3 : std::boxed::Box) ; } +[Debug] end_abstraction: 1 +- context after loans ended: +# Ended regions: {0} +# 1 frame(s) -[Debug] -**About to evaluate statement**: [ - assert(¬move var@3) -] +# Frame 0: +{ + Some (var@0) -> ⊥ : () ; + Some (b) -> ⊥ : std::boxed::Box ; + Some (x) -> ⊥ : &'_ mut (i32) ; + Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; + Some (x) -> ⊥ : &'_ (i32) ; + Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; + abs@1{parents={}}{regions={1}} { + ⌊shared@2⌋, + @ended_shared_loan(s@5 : i32, proj_loans (s@5 : i32)) + } + None -> @shared_loan({2}, s@3 : std::boxed::Box) ; +} -**Context**: -# Ended regions: {} +[Debug] end_abstraction: 1 +- original context: +# Ended regions: {0} # 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : i32 ; - Some (x) -> s@0 : i32 ; - Some (var@2) -> s@0 : i32 ; - Some (var@3) -> s@1 : bool ; + Some (var@0) -> ⊥ : () ; + Some (b) -> ⊥ : std::boxed::Box ; + Some (x) -> ⊥ : &'_ mut (i32) ; + Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; + Some (x) -> ⌊shared@3⌋ ; + Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; + abs@1{parents={}}{regions={1}} { + ⌊shared@2⌋, + @shared_loan({3}, s@5 : i32, proj_loans (s@5 : i32)) + } + None -> @shared_loan({2}, s@3 : std::boxed::Box) ; } +- new context: +# Ended regions: {0, 1} +# 1 frame(s) -[Debug] eval_operand: -- ctx: -# Ended regions: {} +# Frame 0: +{ + Some (var@0) -> ⊥ : () ; + Some (b) -> ⊥ : std::boxed::Box ; + Some (x) -> ⊥ : &'_ mut (i32) ; + Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; + Some (x) -> ⊥ : &'_ (i32) ; + Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; + None -> s@3 : std::boxed::Box ; +} + +[Debug] +**About to evaluate statement**: [ + return +] + +**Context**: +# Ended regions: {0, 1} # 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : i32 ; - Some (x) -> s@0 : i32 ; - Some (var@2) -> s@0 : i32 ; - Some (var@3) -> true ; + Some (var@0) -> ⊥ : () ; + Some (b) -> ⊥ : std::boxed::Box ; + Some (x) -> ⊥ : &'_ mut (i32) ; + Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; + Some (x) -> ⊥ : &'_ (i32) ; + Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; } -- op: -move var@3 +[Debug] test_function_symbolic: copy_int [Debug] **About to evaluate statement**: [ - var@0 := - move var@2; + var@0 := copy x; return ] @@ -119856,15 +118557,13 @@ move var@3 { Some (var@0) -> ⊥ : i32 ; Some (x) -> s@0 : i32 ; - Some (var@2) -> s@0 : i32 ; - Some (var@3) -> ⊥ : bool ; } [Debug] **About to evaluate statement**: [ - var@0 := - move var@2 + var@0 := copy x ] **Context**: @@ -119875,8 +118574,6 @@ move var@3 { Some (var@0) -> ⊥ : i32 ; Some (x) -> s@0 : i32 ; - Some (var@2) -> s@0 : i32 ; - Some (var@3) -> ⊥ : bool ; } @@ -119890,13 +118587,11 @@ move var@3 { Some (var@0) -> ⊥ : i32 ; Some (x) -> s@0 : i32 ; - Some (var@2) -> s@0 : i32 ; - Some (var@3) -> ⊥ : bool ; } - op: -move var@2 +copy x [Debug] **About to evaluate statement**: [ @@ -119909,19 +118604,24 @@ move var@2 # Frame 0: { - Some (var@0) -> s@2 : i32 ; + Some (var@0) -> s@0 : i32 ; Some (x) -> s@0 : i32 ; - Some (var@2) -> ⊥ : i32 ; - Some (var@3) -> ⊥ : bool ; } -[Debug] test_function_symbolic: test_neg1 +[Debug] test_function_symbolic: test_copy_int [Debug] **About to evaluate statement**: [ - x := 3: i32; - y := -3: 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); return ] @@ -119933,14 +118633,20 @@ move var@2 { Some (var@0) -> ⊥ : () ; Some (x) -> ⊥ : i32 ; + Some (px) -> ⊥ : &'_ (i32) ; Some (y) -> ⊥ : i32 ; + Some (var@4) -> ⊥ : i32 ; + Some (var@5) -> ⊥ : bool ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : i32 ; + Some (var@8) -> ⊥ : i32 ; } [Debug] **About to evaluate statement**: [ - x := 3: i32 + x := 0: i32 ] **Context**: @@ -119951,7 +118657,13 @@ move var@2 { Some (var@0) -> ⊥ : () ; Some (x) -> ⊥ : i32 ; + Some (px) -> ⊥ : &'_ (i32) ; Some (y) -> ⊥ : i32 ; + Some (var@4) -> ⊥ : i32 ; + Some (var@5) -> ⊥ : bool ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : i32 ; + Some (var@8) -> ⊥ : i32 ; } @@ -119965,16 +118677,29 @@ move var@2 { Some (var@0) -> ⊥ : () ; Some (x) -> ⊥ : i32 ; + Some (px) -> ⊥ : &'_ (i32) ; Some (y) -> ⊥ : i32 ; + Some (var@4) -> ⊥ : i32 ; + Some (var@5) -> ⊥ : bool ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : i32 ; + Some (var@8) -> ⊥ : i32 ; } - op: -3: i32 +0: i32 [Debug] **About to evaluate statement**: [ - y := -3: 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 ] @@ -119985,15 +118710,21 @@ move var@2 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 3: i32 ; + Some (x) -> 0: i32 ; + Some (px) -> ⊥ : &'_ (i32) ; Some (y) -> ⊥ : i32 ; + Some (var@4) -> ⊥ : i32 ; + Some (var@5) -> ⊥ : bool ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : i32 ; + Some (var@8) -> ⊥ : i32 ; } [Debug] **About to evaluate statement**: [ - y := -3: i32 + px := &x ] **Context**: @@ -120003,31 +118734,52 @@ move var@2 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 3: i32 ; + Some (x) -> 0: i32 ; + Some (px) -> ⊥ : &'_ (i32) ; Some (y) -> ⊥ : i32 ; + Some (var@4) -> ⊥ : i32 ; + Some (var@5) -> ⊥ : bool ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : i32 ; + Some (var@8) -> ⊥ : i32 ; } -[Debug] eval_operand: -- ctx: +[Debug] +**About to evaluate statement**: [ + var@4 := copy x; + y := move copy_int(move var@4); + var@7 := copy *(px); + var@8 := copy y; + var@6 := move var@7 == move var@8; + var@5 := ¬ move var@6; + assert(¬move var@5); + return +] + +**Context**: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 3: i32 ; + Some (x) -> @shared_loan({0}, 0: i32) ; + Some (px) -> ⌊shared@0⌋ ; Some (y) -> ⊥ : i32 ; + Some (var@4) -> ⊥ : i32 ; + Some (var@5) -> ⊥ : bool ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : i32 ; + Some (var@8) -> ⊥ : i32 ; } -- op: --3: i32 [Debug] **About to evaluate statement**: [ - return + var@4 := copy x ] **Context**: @@ -120037,46 +118789,49 @@ move var@2 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 3: i32 ; - Some (y) -> -3: i32 ; + Some (x) -> @shared_loan({0}, 0: i32) ; + Some (px) -> ⌊shared@0⌋ ; + Some (y) -> ⊥ : i32 ; + Some (var@4) -> ⊥ : i32 ; + Some (var@5) -> ⊥ : bool ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : i32 ; + Some (var@8) -> ⊥ : 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**: +[Debug] eval_operand: +- ctx: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⊥ : i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@4) -> ⊥ : bool ; + Some (x) -> @shared_loan({0}, 0: i32) ; + Some (px) -> ⌊shared@0⌋ ; + Some (y) -> ⊥ : i32 ; + Some (var@4) -> ⊥ : i32 ; Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⊥ : i32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : i32 ; + Some (var@8) -> ⊥ : i32 ; } +- op: +copy x [Debug] **About to evaluate statement**: [ - x := 0: i32 + 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**: @@ -120086,68 +118841,72 @@ move var@2 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⊥ : i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@4) -> ⊥ : bool ; + Some (x) -> @shared_loan({0}, 0: i32) ; + Some (px) -> ⌊shared@0⌋ ; + Some (y) -> ⊥ : i32 ; + Some (var@4) -> 0: i32 ; Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⊥ : i32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : i32 ; + Some (var@8) -> ⊥ : i32 ; } -[Debug] eval_operand: -- ctx: +[Debug] +**About to evaluate statement**: [ + y := move copy_int(move var@4) +] + +**Context**: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⊥ : i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@4) -> ⊥ : bool ; + Some (x) -> @shared_loan({0}, 0: i32) ; + Some (px) -> ⌊shared@0⌋ ; + Some (y) -> ⊥ : i32 ; + Some (var@4) -> 0: i32 ; Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⊥ : i32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : i32 ; + Some (var@8) -> ⊥ : 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**: +[Debug] eval_operand: +- ctx: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@4) -> ⊥ : bool ; + Some (x) -> @shared_loan({0}, 0: i32) ; + Some (px) -> ⌊shared@0⌋ ; + Some (y) -> ⊥ : i32 ; + Some (var@4) -> 0: i32 ; Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⊥ : i32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : i32 ; + Some (var@8) -> ⊥ : i32 ; } +- op: +move var@4 [Debug] **About to evaluate statement**: [ - px := &mut x + 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**: @@ -120157,25 +118916,21 @@ move var@2 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@4) -> ⊥ : bool ; + Some (x) -> @shared_loan({0}, 0: i32) ; + Some (px) -> ⌊shared@0⌋ ; + Some (y) -> s@0 : i32 ; + Some (var@4) -> ⊥ : i32 ; Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⊥ : i32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : i32 ; + Some (var@8) -> ⊥ : 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 + var@7 := copy *(px) ] **Context**: @@ -120185,45 +118940,46 @@ move var@2 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@0 (0: i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@4) -> ⊥ : bool ; + Some (x) -> @shared_loan({0}, 0: i32) ; + Some (px) -> ⌊shared@0⌋ ; + Some (y) -> s@0 : i32 ; + Some (var@4) -> ⊥ : i32 ; Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⊥ : i32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : i32 ; + Some (var@8) -> ⊥ : i32 ; } -[Debug] -**About to evaluate statement**: [ - ppx := &mut px -] - -**Context**: +[Debug] eval_operand: +- ctx: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@0 (0: i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@4) -> ⊥ : bool ; + Some (x) -> @shared_loan({0}, 0: i32) ; + Some (px) -> ⌊shared@0⌋ ; + Some (y) -> s@0 : i32 ; + Some (var@4) -> ⊥ : i32 ; Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⊥ : i32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : i32 ; + Some (var@8) -> ⊥ : i32 ; } +- op: +copy *(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); + var@8 := copy y; + var@6 := move var@7 == move var@8; + var@5 := ¬ move var@6; + assert(¬move var@5); return ] @@ -120234,19 +118990,21 @@ move var@2 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (&mut@0 (0: i32)) ; - Some (var@4) -> ⊥ : bool ; + Some (x) -> @shared_loan({0}, 0: i32) ; + Some (px) -> ⌊shared@0⌋ ; + Some (y) -> s@0 : i32 ; + Some (var@4) -> ⊥ : i32 ; Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⊥ : i32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> 0: i32 ; + Some (var@8) -> ⊥ : i32 ; } [Debug] **About to evaluate statement**: [ - *(*(ppx)) := 1: i32 + var@8 := copy y ] **Context**: @@ -120256,12 +119014,14 @@ move var@2 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (&mut@0 (0: i32)) ; - Some (var@4) -> ⊥ : bool ; + Some (x) -> @shared_loan({0}, 0: i32) ; + Some (px) -> ⌊shared@0⌋ ; + Some (y) -> s@0 : i32 ; + Some (var@4) -> ⊥ : i32 ; Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⊥ : i32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> 0: i32 ; + Some (var@8) -> ⊥ : i32 ; } @@ -120274,24 +119034,25 @@ move var@2 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (&mut@0 (0: i32)) ; - Some (var@4) -> ⊥ : bool ; + Some (x) -> @shared_loan({0}, 0: i32) ; + Some (px) -> ⌊shared@0⌋ ; + Some (y) -> s@0 : i32 ; + Some (var@4) -> ⊥ : i32 ; Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⊥ : i32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> 0: i32 ; + Some (var@8) -> ⊥ : i32 ; } - op: -1: i32 +copy y [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); + var@6 := move var@7 == move var@8; + var@5 := ¬ move var@6; + assert(¬move var@5); return ] @@ -120302,19 +119063,21 @@ move var@2 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (&mut@0 (1: i32)) ; - Some (var@4) -> ⊥ : bool ; + Some (x) -> @shared_loan({0}, 0: i32) ; + Some (px) -> ⌊shared@0⌋ ; + Some (y) -> s@0 : i32 ; + Some (var@4) -> ⊥ : i32 ; Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⊥ : i32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> 0: i32 ; + Some (var@8) -> s@0 : i32 ; } [Debug] **About to evaluate statement**: [ - var@6 := copy x + var@6 := move var@7 == move var@8 ] **Context**: @@ -120324,14 +119087,16 @@ move var@2 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (&mut@0 (1: i32)) ; - Some (var@4) -> ⊥ : bool ; + Some (x) -> @shared_loan({0}, 0: i32) ; + Some (px) -> ⌊shared@0⌋ ; + Some (y) -> s@0 : i32 ; + Some (var@4) -> ⊥ : i32 ; Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⊥ : i32 ; -} - + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> 0: i32 ; + Some (var@8) -> s@0 : i32 ; +} + [Debug] eval_operand: @@ -120342,148 +119107,117 @@ move var@2 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (&mut@0 (1: i32)) ; - Some (var@4) -> ⊥ : bool ; + Some (x) -> @shared_loan({0}, 0: i32) ; + Some (px) -> ⌊shared@0⌋ ; + Some (y) -> s@0 : i32 ; + Some (var@4) -> ⊥ : i32 ; Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⊥ : i32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> 0: i32 ; + Some (var@8) -> s@0 : i32 ; } - op: -copy x - -[Debug] end borrow: 0: -- original context: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (&mut@0 (1: i32)) ; - Some (var@4) -> ⊥ : bool ; - Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⊥ : i32 ; -} +move var@7 -[Debug] end borrow: 0: found outer borrows/abs:(InterpreterBorrowsCore.OuterBorrows (InterpreterBorrowsCore.Borrow 1)) -[Debug] end borrow: 1: -- original context: +[Debug] eval_operand: +- ctx: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (&mut@0 (1: i32)) ; - Some (var@4) -> ⊥ : bool ; + Some (x) -> @shared_loan({0}, 0: i32) ; + Some (px) -> ⌊shared@0⌋ ; + Some (y) -> s@0 : i32 ; + Some (var@4) -> ⊥ : i32 ; Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⊥ : i32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : i32 ; + Some (var@8) -> s@0 : i32 ; } -[Debug] give_back: -- bid: 1 -- content: &mut@1 (&mut@0 (1: i32)) -- context: -# Ended regions: {} -# 1 frame(s) -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@4) -> ⊥ : bool ; - Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⊥ : i32 ; -} +- op: +move var@8 +[Debug] +**About to evaluate statement**: [ + var@5 := ¬ move var@6; + assert(¬move var@5); + return +] -[Debug] give_back_value: -- bid: 1 -- value: &mut@0 (1: i32) -- context: +**Context**: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@4) -> ⊥ : bool ; + Some (x) -> @shared_loan({0}, 0: i32) ; + Some (px) -> ⌊shared@0⌋ ; + Some (y) -> s@0 : i32 ; + Some (var@4) -> ⊥ : i32 ; Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⊥ : i32 ; + Some (var@6) -> s@1 : bool ; + Some (var@7) -> ⊥ : i32 ; + Some (var@8) -> ⊥ : i32 ; } -[Debug] end borrow: 0: -- original context: -# Ended regions: {} -# 1 frame(s) -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@0 (1: i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@4) -> ⊥ : bool ; - Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⊥ : i32 ; -} +[Debug] +**About to evaluate statement**: [ + var@5 := ¬ move var@6 +] -[Debug] give_back: -- bid: 0 -- content: &mut@0 (1: i32) -- context: +**Context**: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@4) -> ⊥ : bool ; + Some (x) -> @shared_loan({0}, 0: i32) ; + Some (px) -> ⌊shared@0⌋ ; + Some (y) -> s@0 : i32 ; + Some (var@4) -> ⊥ : i32 ; Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⊥ : i32 ; + Some (var@6) -> s@1 : bool ; + Some (var@7) -> ⊥ : i32 ; + Some (var@8) -> ⊥ : i32 ; } -[Debug] give_back_value: -- bid: 0 -- value: 1: i32 -- context: + +[Debug] eval_operand: +- ctx: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@4) -> ⊥ : bool ; + Some (x) -> @shared_loan({0}, 0: i32) ; + Some (px) -> ⌊shared@0⌋ ; + Some (y) -> s@0 : i32 ; + Some (var@4) -> ⊥ : i32 ; Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⊥ : i32 ; + Some (var@6) -> s@1 : bool ; + Some (var@7) -> ⊥ : i32 ; + Some (var@8) -> ⊥ : i32 ; } +- op: +move var@6 + [Debug] **About to evaluate statement**: [ - var@5 := move var@6 == 1: i32; - var@4 := ¬ move var@5; - assert(¬move var@4); + assert(¬move var@5); return ] @@ -120494,19 +119228,21 @@ copy x # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 1: i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@4) -> ⊥ : bool ; - Some (var@5) -> ⊥ : bool ; - Some (var@6) -> 1: i32 ; + Some (x) -> @shared_loan({0}, 0: i32) ; + Some (px) -> ⌊shared@0⌋ ; + Some (y) -> s@0 : i32 ; + Some (var@4) -> ⊥ : i32 ; + Some (var@5) -> s@2 : bool ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : i32 ; + Some (var@8) -> ⊥ : i32 ; } [Debug] **About to evaluate statement**: [ - var@5 := move var@6 == 1: i32 + assert(¬move var@5) ] **Context**: @@ -120516,12 +119252,14 @@ copy x # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 1: i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@4) -> ⊥ : bool ; - Some (var@5) -> ⊥ : bool ; - Some (var@6) -> 1: i32 ; + Some (x) -> @shared_loan({0}, 0: i32) ; + Some (px) -> ⌊shared@0⌋ ; + Some (y) -> s@0 : i32 ; + Some (var@4) -> ⊥ : i32 ; + Some (var@5) -> s@2 : bool ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : i32 ; + Some (var@8) -> ⊥ : i32 ; } @@ -120534,42 +119272,59 @@ copy x # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 1: i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@4) -> ⊥ : bool ; - Some (var@5) -> ⊥ : bool ; - Some (var@6) -> 1: i32 ; + Some (x) -> @shared_loan({0}, 0: i32) ; + Some (px) -> ⌊shared@0⌋ ; + Some (y) -> s@0 : i32 ; + Some (var@4) -> ⊥ : i32 ; + Some (var@5) -> true ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : i32 ; + Some (var@8) -> ⊥ : i32 ; } - op: -move var@6 +move var@5 -[Debug] eval_operand: -- ctx: +[Debug] +**About to evaluate statement**: [ + return +] + +**Context**: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 1: i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@4) -> ⊥ : bool ; + Some (x) -> @shared_loan({0}, 0: i32) ; + Some (px) -> ⌊shared@0⌋ ; + Some (y) -> s@0 : i32 ; + Some (var@4) -> ⊥ : i32 ; Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⊥ : i32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : i32 ; + Some (var@8) -> ⊥ : i32 ; } -- op: -1: i32 +[Debug] test_function_symbolic: is_cons [Debug] **About to evaluate statement**: [ - var@4 := ¬ move var@5; - assert(¬move var@4); + var@2 := discriminant(*(l)); + switch (move var@2) { + 0: isize => { + var@0 := true + } + 1: isize => { + var@0 := false + } + _ => { + panic + } + }; return ] @@ -120579,20 +119334,19 @@ move var@6 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> 1: i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@4) -> ⊥ : bool ; - Some (var@5) -> s@0 : bool ; - Some (var@6) -> ⊥ : i32 ; + abs@0{parents={}}{regions={0}} { + proj_loans (s@0 : &r@0 (test1::List)) + } + Some (var@0) -> ⊥ : bool ; + Some (l) -> s@0 : &r@0 (test1::List) ; + Some (var@2) -> ⊥ : isize ; } [Debug] **About to evaluate statement**: [ - var@4 := ¬ move var@5 + var@2 := discriminant(*(l)) ] **Context**: @@ -120601,40 +119355,61 @@ move var@6 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> 1: i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@4) -> ⊥ : bool ; - Some (var@5) -> s@0 : bool ; - Some (var@6) -> ⊥ : i32 ; + abs@0{parents={}}{regions={0}} { + proj_loans (s@0 : &r@0 (test1::List)) + } + Some (var@0) -> ⊥ : bool ; + Some (l) -> s@0 : &r@0 (test1::List) ; + Some (var@2) -> ⊥ : isize ; } -[Debug] eval_operand: -- ctx: +[Debug] expand_symbolic_value: s@0 : &r@0 (test1::List) + +- original context: # Ended regions: {} # 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> 1: i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@4) -> ⊥ : bool ; - Some (var@5) -> s@0 : bool ; - Some (var@6) -> ⊥ : i32 ; + abs@0{parents={}}{regions={0}} { + proj_loans (s@0 : &r@0 (test1::List)) + } + Some (var@0) -> ⊥ : bool ; + Some (l) -> s@0 : &r@0 (test1::List) ; + Some (var@2) -> ⊥ : isize ; } -- op: -move var@5 +- new context: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + abs@0{parents={}}{regions={0}} { + @shared_loan({0}, s@1 : test1::List, proj_loans (s@1 : test1::List)) + } + Some (var@0) -> ⊥ : bool ; + Some (l) -> ⌊shared@0⌋ ; + Some (var@2) -> ⊥ : isize ; +} + [Debug] **About to evaluate statement**: [ - assert(¬move var@4); + switch (move var@2) { + 0: isize => { + var@0 := true + } + 1: isize => { + var@0 := false + } + _ => { + panic + } + }; return ] @@ -120644,20 +119419,29 @@ move var@5 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> 1: i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@4) -> s@1 : bool ; - Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⊥ : i32 ; + abs@0{parents={}}{regions={0}} { + @shared_loan({0}, test1::List::Cons { 0 = s@2 : T; 1 = s@3 : std::boxed::Box>; }, test1::List::Cons { 0 = proj_loans (s@2 : T); 1 = proj_loans (s@3 : std::boxed::Box>); }) + } + Some (var@0) -> ⊥ : bool ; + Some (l) -> ⌊shared@0⌋ ; + Some (var@2) -> 0: isize ; } [Debug] **About to evaluate statement**: [ - assert(¬move var@4) + switch (move var@2) { + 0: isize => { + var@0 := true + } + 1: isize => { + var@0 := false + } + _ => { + panic + } + } ] **Context**: @@ -120666,13 +119450,12 @@ move var@5 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> 1: i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@4) -> s@1 : bool ; - Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⊥ : i32 ; + abs@0{parents={}}{regions={0}} { + @shared_loan({0}, test1::List::Cons { 0 = s@2 : T; 1 = s@3 : std::boxed::Box>; }, test1::List::Cons { 0 = proj_loans (s@2 : T); 1 = proj_loans (s@3 : std::boxed::Box>); }) + } + Some (var@0) -> ⊥ : bool ; + Some (l) -> ⌊shared@0⌋ ; + Some (var@2) -> 0: isize ; } @@ -120684,22 +119467,21 @@ move var@5 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> 1: i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@4) -> true ; - Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⊥ : i32 ; + abs@0{parents={}}{regions={0}} { + @shared_loan({0}, test1::List::Cons { 0 = s@2 : T; 1 = s@3 : std::boxed::Box>; }, test1::List::Cons { 0 = proj_loans (s@2 : T); 1 = proj_loans (s@3 : std::boxed::Box>); }) + } + Some (var@0) -> ⊥ : bool ; + Some (l) -> ⌊shared@0⌋ ; + Some (var@2) -> 0: isize ; } - op: -move var@4 +move var@2 [Debug] **About to evaluate statement**: [ - return + var@0 := true ] **Context**: @@ -120708,79 +119490,38 @@ move var@4 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> 1: i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@4) -> ⊥ : bool ; - Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⊥ : i32 ; + abs@0{parents={}}{regions={0}} { + @shared_loan({0}, test1::List::Cons { 0 = s@2 : T; 1 = s@3 : std::boxed::Box>; }, test1::List::Cons { 0 = proj_loans (s@2 : T); 1 = proj_loans (s@3 : std::boxed::Box>); }) + } + Some (var@0) -> ⊥ : bool ; + Some (l) -> ⌊shared@0⌋ ; + Some (var@2) -> ⊥ : isize ; } -[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**: +[Debug] eval_operand: +- ctx: # Ended regions: {} # 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> ⊥ : i32 ; - Some (y) -> ⊥ : i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + abs@0{parents={}}{regions={0}} { + @shared_loan({0}, test1::List::Cons { 0 = s@2 : T; 1 = s@3 : std::boxed::Box>; }, test1::List::Cons { 0 = proj_loans (s@2 : T); 1 = proj_loans (s@3 : std::boxed::Box>); }) + } + Some (var@0) -> ⊥ : bool ; + Some (l) -> ⌊shared@0⌋ ; + Some (var@2) -> ⊥ : isize ; } +- op: +true [Debug] **About to evaluate statement**: [ - x := 0: i32 + return ] **Context**: @@ -120789,86 +119530,29 @@ move var@4 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> ⊥ : i32 ; - Some (y) -> ⊥ : i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⊥ : i32 ; - Some (y) -> ⊥ : i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + abs@0{parents={}}{regions={0}} { + @shared_loan({0}, test1::List::Cons { 0 = s@2 : T; 1 = s@3 : std::boxed::Box>; }, test1::List::Cons { 0 = proj_loans (s@2 : T); 1 = proj_loans (s@3 : std::boxed::Box>); }) + } + Some (var@0) -> true ; + Some (l) -> ⌊shared@0⌋ ; + Some (var@2) -> ⊥ : isize ; } -- 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); + switch (move var@2) { + 0: isize => { + var@0 := true + } + 1: isize => { + var@0 := false + } + _ => { + panic + } + }; return ] @@ -120878,32 +119562,29 @@ move var@4 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (y) -> ⊥ : i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + abs@0{parents={}}{regions={0}} { + @shared_loan({0}, test1::List::Nil, test1::List::Nil) + } + Some (var@0) -> ⊥ : bool ; + Some (l) -> ⌊shared@0⌋ ; + Some (var@2) -> 1: isize ; } [Debug] **About to evaluate statement**: [ - y := 1: i32 + switch (move var@2) { + 0: isize => { + var@0 := true + } + 1: isize => { + var@0 := false + } + _ => { + panic + } + } ] **Context**: @@ -120912,25 +119593,12 @@ move var@4 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (y) -> ⊥ : i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + abs@0{parents={}}{regions={0}} { + @shared_loan({0}, test1::List::Nil, test1::List::Nil) + } + Some (var@0) -> ⊥ : bool ; + Some (l) -> ⌊shared@0⌋ ; + Some (var@2) -> 1: isize ; } @@ -120942,56 +119610,21 @@ move var@4 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (y) -> ⊥ : i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + abs@0{parents={}}{regions={0}} { + @shared_loan({0}, test1::List::Nil, test1::List::Nil) + } + Some (var@0) -> ⊥ : bool ; + Some (l) -> ⌊shared@0⌋ ; + Some (var@2) -> 1: isize ; } - op: -1: i32 +move var@2 [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 + var@0 := false ] **Context**: @@ -121000,86 +119633,37 @@ move var@4 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (y) -> 1: i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + abs@0{parents={}}{regions={0}} { + @shared_loan({0}, test1::List::Nil, test1::List::Nil) + } + Some (var@0) -> ⊥ : bool ; + Some (l) -> ⌊shared@0⌋ ; + Some (var@2) -> ⊥ : isize ; } -[Debug] -**About to evaluate statement**: [ - px := &mut x -] - -**Context**: +[Debug] eval_operand: +- ctx: # Ended regions: {} # 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (y) -> 1: i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + abs@0{parents={}}{regions={0}} { + @shared_loan({0}, test1::List::Nil, test1::List::Nil) + } + Some (var@0) -> ⊥ : bool ; + Some (l) -> ⌊shared@0⌋ ; + Some (var@2) -> ⊥ : isize ; } +- op: +false [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 ] @@ -121089,32 +119673,31 @@ move var@4 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (y) -> 1: i32 ; - Some (px) -> &mut@0 (0: i32) ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + abs@0{parents={}}{regions={0}} { + @shared_loan({0}, test1::List::Nil, test1::List::Nil) + } + Some (var@0) -> false ; + Some (l) -> ⌊shared@0⌋ ; + Some (var@2) -> ⊥ : isize ; } +[Debug] test_function_symbolic: test_is_cons [Debug] **About to evaluate statement**: [ - py := &mut y + 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**: @@ -121124,51 +119707,20 @@ move var@4 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (y) -> 1: i32 ; - Some (px) -> &mut@0 (0: i32) ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (l) -> ⊥ : test1::List ; + Some (var@2) -> ⊥ : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; + Some (var@4) -> ⊥ : bool ; + Some (var@5) -> ⊥ : bool ; + Some (var@6) -> ⊥ : &'_ (test1::List) ; + Some (var@7) -> ⊥ : &'_ (test1::List) ; } [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 + set_discriminant(var@3, 1) ] **Context**: @@ -121178,31 +119730,30 @@ move var@4 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (y) -> ⌊mut@1⌋ ; - Some (px) -> &mut@0 (0: i32) ; - Some (py) -> &mut@1 (1: i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (l) -> ⊥ : test1::List ; + Some (var@2) -> ⊥ : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; + Some (var@4) -> ⊥ : bool ; + Some (var@5) -> ⊥ : bool ; + Some (var@6) -> ⊥ : &'_ (test1::List) ; + Some (var@7) -> ⊥ : &'_ (test1::List) ; } [Debug] **About to evaluate statement**: [ - ppx := &mut px + 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**: @@ -121212,50 +119763,20 @@ move var@4 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (y) -> ⌊mut@1⌋ ; - Some (px) -> &mut@0 (0: i32) ; - Some (py) -> &mut@1 (1: i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (l) -> ⊥ : test1::List ; + Some (var@2) -> ⊥ : std::boxed::Box> ; + Some (var@3) -> test1::List::Nil ; + Some (var@4) -> ⊥ : bool ; + Some (var@5) -> ⊥ : bool ; + Some (var@6) -> ⊥ : &'_ (test1::List) ; + Some (var@7) -> ⊥ : &'_ (test1::List) ; } [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 + var@2 := move alloc::boxed::Box>::new(move var@3) ] **Context**: @@ -121265,82 +119786,54 @@ move var@4 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (y) -> ⌊mut@1⌋ ; - Some (px) -> ⌊mut@2⌋ ; - Some (py) -> &mut@1 (1: i32) ; - Some (ppx) -> &mut@2 (&mut@0 (0: i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (l) -> ⊥ : test1::List ; + Some (var@2) -> ⊥ : std::boxed::Box> ; + Some (var@3) -> test1::List::Nil ; + Some (var@4) -> ⊥ : bool ; + Some (var@5) -> ⊥ : bool ; + Some (var@6) -> ⊥ : &'_ (test1::List) ; + Some (var@7) -> ⊥ : &'_ (test1::List) ; } -[Debug] -**About to evaluate statement**: [ - var@6 := &mut *(py) -] - -**Context**: +[Debug] eval_non_local_function_call: +- fid:CfimAst.BoxNew +- type_params: [test1::List] +- args: [move var@3] +- dest: var@2 +[Debug] eval_operand: +- ctx: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (y) -> ⌊mut@1⌋ ; - Some (px) -> ⌊mut@2⌋ ; - Some (py) -> &mut@1 (1: i32) ; - Some (ppx) -> &mut@2 (&mut@0 (0: i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (l) -> ⊥ : test1::List ; + Some (var@2) -> ⊥ : std::boxed::Box> ; + Some (var@3) -> test1::List::Nil ; + Some (var@4) -> ⊥ : bool ; + Some (var@5) -> ⊥ : bool ; + Some (var@6) -> ⊥ : &'_ (test1::List) ; + Some (var@7) -> ⊥ : &'_ (test1::List) ; } +- op: +move var@3 [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); + (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 ] @@ -121351,31 +119844,20 @@ move var@4 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (y) -> ⌊mut@1⌋ ; - Some (px) -> ⌊mut@2⌋ ; - Some (py) -> &mut@1 (⌊mut@3⌋) ; - Some (ppx) -> &mut@2 (&mut@0 (0: i32)) ; - Some (var@6) -> &mut@3 (1: i32) ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (l) -> ⊥ : test1::List ; + Some (var@2) -> s@0 : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; + Some (var@4) -> ⊥ : bool ; + Some (var@5) -> ⊥ : bool ; + Some (var@6) -> ⊥ : &'_ (test1::List) ; + Some (var@7) -> ⊥ : &'_ (test1::List) ; } [Debug] **About to evaluate statement**: [ - *(ppx) := move var@6 + (l as test1::List::Cons).0 := 0: i32 ] **Context**: @@ -121385,24 +119867,13 @@ move var@4 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (y) -> ⌊mut@1⌋ ; - Some (px) -> ⌊mut@2⌋ ; - Some (py) -> &mut@1 (⌊mut@3⌋) ; - Some (ppx) -> &mut@2 (&mut@0 (0: i32)) ; - Some (var@6) -> &mut@3 (1: i32) ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (l) -> ⊥ : test1::List ; + Some (var@2) -> s@0 : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; + Some (var@4) -> ⊥ : bool ; + Some (var@5) -> ⊥ : bool ; + Some (var@6) -> ⊥ : &'_ (test1::List) ; + Some (var@7) -> ⊥ : &'_ (test1::List) ; } @@ -121415,145 +119886,32 @@ move var@4 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (y) -> ⌊mut@1⌋ ; - Some (px) -> ⌊mut@2⌋ ; - Some (py) -> &mut@1 (⌊mut@3⌋) ; - Some (ppx) -> &mut@2 (&mut@0 (0: i32)) ; - Some (var@6) -> &mut@3 (1: i32) ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (l) -> ⊥ : test1::List ; + Some (var@2) -> s@0 : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; + Some (var@4) -> ⊥ : bool ; + Some (var@5) -> ⊥ : bool ; + Some (var@6) -> ⊥ : &'_ (test1::List) ; + Some (var@7) -> ⊥ : &'_ (test1::List) ; } - op: -move var@6 - -[Debug] end borrow: 0: -- original context: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (y) -> ⌊mut@1⌋ ; - Some (px) -> ⌊mut@2⌋ ; - Some (py) -> &mut@1 (⌊mut@3⌋) ; - Some (ppx) -> &mut@2 (⊥ : &'_ mut (i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; - None -> &mut@3 (1: i32) ; - None -> &mut@0 (0: i32) ; -} - -[Debug] give_back: -- bid: 0 -- content: &mut@0 (0: i32) -- context: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (y) -> ⌊mut@1⌋ ; - Some (px) -> ⌊mut@2⌋ ; - Some (py) -> &mut@1 (⌊mut@3⌋) ; - Some (ppx) -> &mut@2 (⊥ : &'_ mut (i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; - None -> &mut@3 (1: i32) ; - None -> ⊥ : &'_ mut (i32) ; -} - - -[Debug] give_back_value: -- bid: 0 -- value: 0: i32 -- context: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (y) -> ⌊mut@1⌋ ; - Some (px) -> ⌊mut@2⌋ ; - Some (py) -> &mut@1 (⌊mut@3⌋) ; - Some (ppx) -> &mut@2 (⊥ : &'_ mut (i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; - None -> &mut@3 (1: i32) ; - None -> ⊥ : &'_ mut (i32) ; -} - +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**: [ - *(*(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); + (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 ] @@ -121564,31 +119922,20 @@ move var@6 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (y) -> ⌊mut@1⌋ ; - Some (px) -> ⌊mut@2⌋ ; - Some (py) -> &mut@1 (⌊mut@3⌋) ; - Some (ppx) -> &mut@2 (&mut@3 (1: i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (l) -> test1::List::Cons { 0 = 0: i32; 1 = ⊥ : std::boxed::Box>; } ; + Some (var@2) -> s@0 : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; + Some (var@4) -> ⊥ : bool ; + Some (var@5) -> ⊥ : bool ; + Some (var@6) -> ⊥ : &'_ (test1::List) ; + Some (var@7) -> ⊥ : &'_ (test1::List) ; } [Debug] **About to evaluate statement**: [ - *(*(ppx)) := 2: i32 + (l as test1::List::Cons).1 := move var@2 ] **Context**: @@ -121598,24 +119945,13 @@ move var@6 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (y) -> ⌊mut@1⌋ ; - Some (px) -> ⌊mut@2⌋ ; - Some (py) -> &mut@1 (⌊mut@3⌋) ; - Some (ppx) -> &mut@2 (&mut@3 (1: i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (l) -> test1::List::Cons { 0 = 0: i32; 1 = ⊥ : std::boxed::Box>; } ; + Some (var@2) -> s@0 : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; + Some (var@4) -> ⊥ : bool ; + Some (var@5) -> ⊥ : bool ; + Some (var@6) -> ⊥ : &'_ (test1::List) ; + Some (var@7) -> ⊥ : &'_ (test1::List) ; } @@ -121628,48 +119964,28 @@ move var@6 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (y) -> ⌊mut@1⌋ ; - Some (px) -> ⌊mut@2⌋ ; - Some (py) -> &mut@1 (⌊mut@3⌋) ; - Some (ppx) -> &mut@2 (&mut@3 (1: i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (l) -> test1::List::Cons { 0 = 0: i32; 1 = ⊥ : std::boxed::Box>; } ; + Some (var@2) -> s@0 : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; + Some (var@4) -> ⊥ : bool ; + Some (var@5) -> ⊥ : bool ; + Some (var@6) -> ⊥ : &'_ (test1::List) ; + Some (var@7) -> ⊥ : &'_ (test1::List) ; } - op: -2: i32 +move var@2 [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); + 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 ] @@ -121680,31 +119996,20 @@ move var@6 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (y) -> ⌊mut@1⌋ ; - Some (px) -> ⌊mut@2⌋ ; - Some (py) -> &mut@1 (⌊mut@3⌋) ; - Some (ppx) -> &mut@2 (&mut@3 (2: i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (l) -> test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box>; } ; + Some (var@2) -> ⊥ : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; + Some (var@4) -> ⊥ : bool ; + Some (var@5) -> ⊥ : bool ; + Some (var@6) -> ⊥ : &'_ (test1::List) ; + Some (var@7) -> ⊥ : &'_ (test1::List) ; } [Debug] **About to evaluate statement**: [ - var@9 := copy *(px) + set_discriminant(l, 0) ] **Context**: @@ -121714,167 +120019,76 @@ move var@6 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (y) -> ⌊mut@1⌋ ; - Some (px) -> ⌊mut@2⌋ ; - Some (py) -> &mut@1 (⌊mut@3⌋) ; - Some (ppx) -> &mut@2 (&mut@3 (2: i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (l) -> test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box>; } ; + Some (var@2) -> ⊥ : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; + Some (var@4) -> ⊥ : bool ; + Some (var@5) -> ⊥ : bool ; + Some (var@6) -> ⊥ : &'_ (test1::List) ; + Some (var@7) -> ⊥ : &'_ (test1::List) ; } -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (y) -> ⌊mut@1⌋ ; - Some (px) -> ⌊mut@2⌋ ; - Some (py) -> &mut@1 (⌊mut@3⌋) ; - Some (ppx) -> &mut@2 (&mut@3 (2: i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; -} - - -- op: -copy *(px) +[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 +] -[Debug] end borrow: 2: -- original context: +**Context**: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (y) -> ⌊mut@1⌋ ; - Some (px) -> ⌊mut@2⌋ ; - Some (py) -> &mut@1 (⌊mut@3⌋) ; - Some (ppx) -> &mut@2 (&mut@3 (2: i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (l) -> test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box>; } ; + Some (var@2) -> ⊥ : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; + Some (var@4) -> ⊥ : bool ; + Some (var@5) -> ⊥ : bool ; + Some (var@6) -> ⊥ : &'_ (test1::List) ; + Some (var@7) -> ⊥ : &'_ (test1::List) ; } -[Debug] give_back: -- bid: 2 -- content: &mut@2 (&mut@3 (2: i32)) -- context: -# Ended regions: {} -# 1 frame(s) -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (y) -> ⌊mut@1⌋ ; - Some (px) -> ⌊mut@2⌋ ; - Some (py) -> &mut@1 (⌊mut@3⌋) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; -} +[Debug] +**About to evaluate statement**: [ + var@7 := &l +] -[Debug] give_back_value: -- bid: 2 -- value: &mut@3 (2: i32) -- context: +**Context**: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (y) -> ⌊mut@1⌋ ; - Some (px) -> ⌊mut@2⌋ ; - Some (py) -> &mut@1 (⌊mut@3⌋) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (l) -> test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box>; } ; + Some (var@2) -> ⊥ : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; + Some (var@4) -> ⊥ : bool ; + Some (var@5) -> ⊥ : bool ; + Some (var@6) -> ⊥ : &'_ (test1::List) ; + Some (var@7) -> ⊥ : &'_ (test1::List) ; } + [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); + 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 ] @@ -121885,31 +120099,20 @@ copy *(px) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (y) -> ⌊mut@1⌋ ; - Some (px) -> &mut@3 (2: i32) ; - Some (py) -> &mut@1 (⌊mut@3⌋) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> 2: i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (l) -> @shared_loan({0}, test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box>; }) ; + Some (var@2) -> ⊥ : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; + Some (var@4) -> ⊥ : bool ; + Some (var@5) -> ⊥ : bool ; + Some (var@6) -> ⊥ : &'_ (test1::List) ; + Some (var@7) -> ⌊shared@0⌋ ; } [Debug] **About to evaluate statement**: [ - var@8 := move var@9 == 2: i32 + var@6 := copy var@7 ] **Context**: @@ -121919,59 +120122,16 @@ copy *(px) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (y) -> ⌊mut@1⌋ ; - Some (px) -> &mut@3 (2: i32) ; - Some (py) -> &mut@1 (⌊mut@3⌋) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> 2: i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (y) -> ⌊mut@1⌋ ; - Some (px) -> &mut@3 (2: i32) ; - Some (py) -> &mut@1 (⌊mut@3⌋) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> 2: i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (l) -> @shared_loan({0}, test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box>; }) ; + Some (var@2) -> ⊥ : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; + Some (var@4) -> ⊥ : bool ; + Some (var@5) -> ⊥ : bool ; + Some (var@6) -> ⊥ : &'_ (test1::List) ; + Some (var@7) -> ⌊shared@0⌋ ; } -- op: -move var@9 [Debug] eval_operand: - ctx: @@ -121981,46 +120141,25 @@ move var@9 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (y) -> ⌊mut@1⌋ ; - Some (px) -> &mut@3 (2: i32) ; - Some (py) -> &mut@1 (⌊mut@3⌋) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (l) -> @shared_loan({0}, test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box>; }) ; + Some (var@2) -> ⊥ : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; + Some (var@4) -> ⊥ : bool ; + Some (var@5) -> ⊥ : bool ; + Some (var@6) -> ⊥ : &'_ (test1::List) ; + Some (var@7) -> ⌊shared@0⌋ ; } - op: -2: i32 +copy var@7 [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); + var@5 := move is_cons(move var@6); + var@4 := ¬ move var@5; + assert(¬move var@4); + drop(l); return ] @@ -122031,31 +120170,20 @@ move var@9 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (y) -> ⌊mut@1⌋ ; - Some (px) -> &mut@3 (2: i32) ; - Some (py) -> &mut@1 (⌊mut@3⌋) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> s@0 : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (l) -> @shared_loan({0, 1}, test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box>; }) ; + Some (var@2) -> ⊥ : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; + Some (var@4) -> ⊥ : bool ; + Some (var@5) -> ⊥ : bool ; + Some (var@6) -> ⌊shared@1⌋ ; + Some (var@7) -> ⌊shared@0⌋ ; } [Debug] **About to evaluate statement**: [ - var@7 := ¬ move var@8 + var@5 := move is_cons(move var@6) ] **Context**: @@ -122065,24 +120193,13 @@ move var@9 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (y) -> ⌊mut@1⌋ ; - Some (px) -> &mut@3 (2: i32) ; - Some (py) -> &mut@1 (⌊mut@3⌋) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> s@0 : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (l) -> @shared_loan({0, 1}, test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box>; }) ; + Some (var@2) -> ⊥ : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; + Some (var@4) -> ⊥ : bool ; + Some (var@5) -> ⊥ : bool ; + Some (var@6) -> ⌊shared@1⌋ ; + Some (var@7) -> ⌊shared@0⌋ ; } @@ -122095,45 +120212,24 @@ move var@9 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (y) -> ⌊mut@1⌋ ; - Some (px) -> &mut@3 (2: i32) ; - Some (py) -> &mut@1 (⌊mut@3⌋) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> s@0 : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (l) -> @shared_loan({0, 1}, test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box>; }) ; + Some (var@2) -> ⊥ : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; + Some (var@4) -> ⊥ : bool ; + Some (var@5) -> ⊥ : bool ; + Some (var@6) -> ⌊shared@1⌋ ; + Some (var@7) -> ⌊shared@0⌋ ; } - op: -move var@8 +move var@6 [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); + var@4 := ¬ move var@5; + assert(¬move var@4); + drop(l); return ] @@ -122144,31 +120240,24 @@ move var@8 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (y) -> ⌊mut@1⌋ ; - Some (px) -> &mut@3 (2: i32) ; - Some (py) -> &mut@1 (⌊mut@3⌋) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> s@1 : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (l) -> @shared_loan({0, 1}, test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box>; }) ; + Some (var@2) -> ⊥ : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; + Some (var@4) -> ⊥ : bool ; + Some (var@5) -> s@1 : bool ; + Some (var@6) -> ⊥ : &'_ (test1::List) ; + Some (var@7) -> ⌊shared@0⌋ ; + abs@0{parents={}}{regions={0}} { + ⌊shared@1⌋, + proj_loans (s@1 : bool) + } } [Debug] **About to evaluate statement**: [ - assert(¬move var@7) + var@4 := ¬ move var@5 ] **Context**: @@ -122178,24 +120267,17 @@ move var@8 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (y) -> ⌊mut@1⌋ ; - Some (px) -> &mut@3 (2: i32) ; - Some (py) -> &mut@1 (⌊mut@3⌋) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> s@1 : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (l) -> @shared_loan({0, 1}, test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box>; }) ; + Some (var@2) -> ⊥ : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; + Some (var@4) -> ⊥ : bool ; + Some (var@5) -> s@1 : bool ; + Some (var@6) -> ⊥ : &'_ (test1::List) ; + Some (var@7) -> ⌊shared@0⌋ ; + abs@0{parents={}}{regions={0}} { + ⌊shared@1⌋, + proj_loans (s@1 : bool) + } } @@ -122208,44 +120290,27 @@ move var@8 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (y) -> ⌊mut@1⌋ ; - Some (px) -> &mut@3 (2: i32) ; - Some (py) -> &mut@1 (⌊mut@3⌋) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> true ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (l) -> @shared_loan({0, 1}, test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box>; }) ; + Some (var@2) -> ⊥ : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; + Some (var@4) -> ⊥ : bool ; + Some (var@5) -> s@1 : bool ; + Some (var@6) -> ⊥ : &'_ (test1::List) ; + Some (var@7) -> ⌊shared@0⌋ ; + abs@0{parents={}}{regions={0}} { + ⌊shared@1⌋, + proj_loans (s@1 : bool) + } } - op: -move var@7 +move var@5 [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); + assert(¬move var@4); + drop(l); return ] @@ -122256,31 +120321,24 @@ move var@7 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (y) -> ⌊mut@1⌋ ; - Some (px) -> &mut@3 (2: i32) ; - Some (py) -> &mut@1 (⌊mut@3⌋) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (l) -> @shared_loan({0, 1}, test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box>; }) ; + Some (var@2) -> ⊥ : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; + Some (var@4) -> s@2 : bool ; + Some (var@5) -> ⊥ : bool ; + Some (var@6) -> ⊥ : &'_ (test1::List) ; + Some (var@7) -> ⌊shared@0⌋ ; + abs@0{parents={}}{regions={0}} { + ⌊shared@1⌋, + proj_loans (s@1 : bool) + } } [Debug] **About to evaluate statement**: [ - var@12 := copy x + assert(¬move var@4) ] **Context**: @@ -122290,24 +120348,17 @@ move var@7 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (y) -> ⌊mut@1⌋ ; - Some (px) -> &mut@3 (2: i32) ; - Some (py) -> &mut@1 (⌊mut@3⌋) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (l) -> @shared_loan({0, 1}, test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box>; }) ; + Some (var@2) -> ⊥ : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; + Some (var@4) -> s@2 : bool ; + Some (var@5) -> ⊥ : bool ; + Some (var@6) -> ⊥ : &'_ (test1::List) ; + Some (var@7) -> ⌊shared@0⌋ ; + abs@0{parents={}}{regions={0}} { + ⌊shared@1⌋, + proj_loans (s@1 : bool) + } } @@ -122320,43 +120371,26 @@ move var@7 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (y) -> ⌊mut@1⌋ ; - Some (px) -> &mut@3 (2: i32) ; - Some (py) -> &mut@1 (⌊mut@3⌋) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (l) -> @shared_loan({0, 1}, test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box>; }) ; + Some (var@2) -> ⊥ : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; + Some (var@4) -> true ; + Some (var@5) -> ⊥ : bool ; + Some (var@6) -> ⊥ : &'_ (test1::List) ; + Some (var@7) -> ⌊shared@0⌋ ; + abs@0{parents={}}{regions={0}} { + ⌊shared@1⌋, + proj_loans (s@1 : bool) + } } - op: -copy x +move var@4 [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); + drop(l); return ] @@ -122367,31 +120401,24 @@ copy x # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (y) -> ⌊mut@1⌋ ; - Some (px) -> &mut@3 (2: i32) ; - Some (py) -> &mut@1 (⌊mut@3⌋) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> 0: i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (l) -> @shared_loan({0, 1}, test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box>; }) ; + Some (var@2) -> ⊥ : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; + Some (var@4) -> ⊥ : bool ; + Some (var@5) -> ⊥ : bool ; + Some (var@6) -> ⊥ : &'_ (test1::List) ; + Some (var@7) -> ⌊shared@0⌋ ; + abs@0{parents={}}{regions={0}} { + ⌊shared@1⌋, + proj_loans (s@1 : bool) + } } [Debug] **About to evaluate statement**: [ - var@11 := move var@12 == 0: i32 + drop(l) ] **Context**: @@ -122401,214 +120428,246 @@ copy x # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (y) -> ⌊mut@1⌋ ; - Some (px) -> &mut@3 (2: i32) ; - Some (py) -> &mut@1 (⌊mut@3⌋) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> 0: i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (l) -> @shared_loan({0, 1}, test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box>; }) ; + Some (var@2) -> ⊥ : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; + Some (var@4) -> ⊥ : bool ; + Some (var@5) -> ⊥ : bool ; + Some (var@6) -> ⊥ : &'_ (test1::List) ; + Some (var@7) -> ⌊shared@0⌋ ; + abs@0{parents={}}{regions={0}} { + ⌊shared@1⌋, + proj_loans (s@1 : bool) + } } -[Debug] eval_operand: -- ctx: +[Debug] drop_value: place: l +[Debug] end borrow: 0: +- original context: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (y) -> ⌊mut@1⌋ ; - Some (px) -> &mut@3 (2: i32) ; - Some (py) -> &mut@1 (⌊mut@3⌋) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> 0: i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (l) -> ⊥ : test1::List ; + Some (var@2) -> ⊥ : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; + Some (var@4) -> ⊥ : bool ; + Some (var@5) -> ⊥ : bool ; + Some (var@6) -> ⊥ : &'_ (test1::List) ; + Some (var@7) -> ⌊shared@0⌋ ; + abs@0{parents={}}{regions={0}} { + ⌊shared@1⌋, + proj_loans (s@1 : bool) + } + None -> @shared_loan({0, 1}, test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box>; }) ; } - -- op: -move var@12 - -[Debug] eval_operand: -- ctx: +[Debug] give_back: +- bid: 0 +- content: ⌊shared@0⌋ +- context: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (y) -> ⌊mut@1⌋ ; - Some (px) -> &mut@3 (2: i32) ; - Some (py) -> &mut@1 (⌊mut@3⌋) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (l) -> ⊥ : test1::List ; + Some (var@2) -> ⊥ : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; + Some (var@4) -> ⊥ : bool ; + Some (var@5) -> ⊥ : bool ; + Some (var@6) -> ⊥ : &'_ (test1::List) ; + Some (var@7) -> ⊥ : &'_ (test1::List) ; + abs@0{parents={}}{regions={0}} { + ⌊shared@1⌋, + proj_loans (s@1 : bool) + } + None -> @shared_loan({0, 1}, test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box>; }) ; } -- op: -0: i32 +[Debug] end borrow: 1: +- original context: +# Ended regions: {} +# 1 frame(s) -[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 -] +# Frame 0: +{ + Some (var@0) -> ⊥ : () ; + Some (l) -> ⊥ : test1::List ; + Some (var@2) -> ⊥ : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; + Some (var@4) -> ⊥ : bool ; + Some (var@5) -> ⊥ : bool ; + Some (var@6) -> ⊥ : &'_ (test1::List) ; + Some (var@7) -> ⊥ : &'_ (test1::List) ; + abs@0{parents={}}{regions={0}} { + ⌊shared@1⌋, + proj_loans (s@1 : bool) + } + None -> @shared_loan({1}, test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box>; }) ; +} -**Context**: +[Debug] end borrow: 1: found outer borrows/abs:(InterpreterBorrowsCore.OuterAbs 0) +[Debug] end_abstraction: 0 +- original context: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (y) -> ⌊mut@1⌋ ; - Some (px) -> &mut@3 (2: i32) ; - Some (py) -> &mut@1 (⌊mut@3⌋) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> s@2 : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (l) -> ⊥ : test1::List ; + Some (var@2) -> ⊥ : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; + Some (var@4) -> ⊥ : bool ; + Some (var@5) -> ⊥ : bool ; + Some (var@6) -> ⊥ : &'_ (test1::List) ; + Some (var@7) -> ⊥ : &'_ (test1::List) ; + abs@0{parents={}}{regions={0}} { + ⌊shared@1⌋, + proj_loans (s@1 : bool) + } + None -> @shared_loan({1}, test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box>; }) ; } +[Debug] end_abstraction: 0 +- context after parent abstractions ended: +# Ended regions: {} +# 1 frame(s) +# Frame 0: +{ + Some (var@0) -> ⊥ : () ; + Some (l) -> ⊥ : test1::List ; + Some (var@2) -> ⊥ : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; + Some (var@4) -> ⊥ : bool ; + Some (var@5) -> ⊥ : bool ; + Some (var@6) -> ⊥ : &'_ (test1::List) ; + Some (var@7) -> ⊥ : &'_ (test1::List) ; + abs@0{parents={}}{regions={0}} { + ⌊shared@1⌋, + proj_loans (s@1 : bool) + } + None -> @shared_loan({1}, test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box>; }) ; +} -[Debug] -**About to evaluate statement**: [ - var@10 := ¬ move var@11 -] +[Debug] end_abstraction: 0 +- context after loans ended: +# Ended regions: {} +# 1 frame(s) -**Context**: +# Frame 0: +{ + Some (var@0) -> ⊥ : () ; + Some (l) -> ⊥ : test1::List ; + Some (var@2) -> ⊥ : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; + Some (var@4) -> ⊥ : bool ; + Some (var@5) -> ⊥ : bool ; + Some (var@6) -> ⊥ : &'_ (test1::List) ; + Some (var@7) -> ⊥ : &'_ (test1::List) ; + abs@0{parents={}}{regions={0}} { + ⌊shared@1⌋, + proj_loans (s@1 : bool) + } + None -> @shared_loan({1}, test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box>; }) ; +} + +[Debug] end_abstraction: 0 +- original context: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (y) -> ⌊mut@1⌋ ; - Some (px) -> &mut@3 (2: i32) ; - Some (py) -> &mut@1 (⌊mut@3⌋) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> s@2 : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (l) -> ⊥ : test1::List ; + Some (var@2) -> ⊥ : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; + Some (var@4) -> ⊥ : bool ; + Some (var@5) -> ⊥ : bool ; + Some (var@6) -> ⊥ : &'_ (test1::List) ; + Some (var@7) -> ⊥ : &'_ (test1::List) ; + abs@0{parents={}}{regions={0}} { + ⌊shared@1⌋, + proj_loans (s@1 : bool) + } + None -> @shared_loan({1}, test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box>; }) ; } +- new context: +# Ended regions: {0} +# 1 frame(s) -[Debug] eval_operand: -- ctx: -# Ended regions: {} +# Frame 0: +{ + Some (var@0) -> ⊥ : () ; + Some (l) -> ⊥ : test1::List ; + Some (var@2) -> ⊥ : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; + Some (var@4) -> ⊥ : bool ; + Some (var@5) -> ⊥ : bool ; + Some (var@6) -> ⊥ : &'_ (test1::List) ; + Some (var@7) -> ⊥ : &'_ (test1::List) ; + None -> test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box>; } ; +} + +[Debug] +**About to evaluate statement**: [ + return +] + +**Context**: +# Ended regions: {0} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (y) -> ⌊mut@1⌋ ; - Some (px) -> &mut@3 (2: i32) ; - Some (py) -> &mut@1 (⌊mut@3⌋) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> s@2 : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (l) -> ⊥ : test1::List ; + Some (var@2) -> ⊥ : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; + Some (var@4) -> ⊥ : bool ; + Some (var@5) -> ⊥ : bool ; + Some (var@6) -> ⊥ : &'_ (test1::List) ; + Some (var@7) -> ⊥ : &'_ (test1::List) ; } -- op: -move var@11 +[Debug] test_function_symbolic: split_list [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 + 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**: @@ -122617,32 +120676,24 @@ move var@11 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (y) -> ⌊mut@1⌋ ; - Some (px) -> &mut@3 (2: i32) ; - Some (py) -> &mut@1 (⌊mut@3⌋) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@0) -> ⊥ : (T, test1::List) ; + Some (l) -> s@0 : test1::List ; + Some (var@2) -> ⊥ : isize ; + Some (hd) -> ⊥ : T ; + Some (tl) -> ⊥ : std::boxed::Box> ; + Some (var@5) -> ⊥ : T ; + Some (var@6) -> ⊥ : test1::List ; Some (var@7) -> ⊥ : bool ; Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> s@3 : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (var@9) -> ⊥ : () ; + Some (var@10) -> ⊥ : isize ; } [Debug] **About to evaluate statement**: [ - assert(¬move var@10) + var@8 := false ] **Context**: @@ -122651,25 +120702,17 @@ move var@11 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (y) -> ⌊mut@1⌋ ; - Some (px) -> &mut@3 (2: i32) ; - Some (py) -> &mut@1 (⌊mut@3⌋) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@0) -> ⊥ : (T, test1::List) ; + Some (l) -> s@0 : test1::List ; + Some (var@2) -> ⊥ : isize ; + Some (hd) -> ⊥ : T ; + Some (tl) -> ⊥ : std::boxed::Box> ; + Some (var@5) -> ⊥ : T ; + Some (var@6) -> ⊥ : test1::List ; Some (var@7) -> ⊥ : bool ; Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> s@3 : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (var@9) -> ⊥ : () ; + Some (var@10) -> ⊥ : isize ; } @@ -122681,42 +120724,46 @@ move var@11 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (y) -> ⌊mut@1⌋ ; - Some (px) -> &mut@3 (2: i32) ; - Some (py) -> &mut@1 (⌊mut@3⌋) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@0) -> ⊥ : (T, test1::List) ; + Some (l) -> s@0 : test1::List ; + Some (var@2) -> ⊥ : isize ; + Some (hd) -> ⊥ : T ; + Some (tl) -> ⊥ : std::boxed::Box> ; + Some (var@5) -> ⊥ : T ; + Some (var@6) -> ⊥ : test1::List ; Some (var@7) -> ⊥ : bool ; Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> true ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (var@9) -> ⊥ : () ; + Some (var@10) -> ⊥ : isize ; } - op: -move var@10 +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 + 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**: @@ -122725,32 +120772,24 @@ move var@10 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (y) -> ⌊mut@1⌋ ; - Some (px) -> &mut@3 (2: i32) ; - Some (py) -> &mut@1 (⌊mut@3⌋) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@0) -> ⊥ : (T, test1::List) ; + Some (l) -> s@0 : test1::List ; + Some (var@2) -> ⊥ : isize ; + Some (hd) -> ⊥ : T ; + Some (tl) -> ⊥ : std::boxed::Box> ; + Some (var@5) -> ⊥ : T ; + Some (var@6) -> ⊥ : test1::List ; Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (var@8) -> false ; + Some (var@9) -> ⊥ : () ; + Some (var@10) -> ⊥ : isize ; } [Debug] **About to evaluate statement**: [ - var@15 := copy *(py) + var@7 := false ] **Context**: @@ -122759,25 +120798,17 @@ move var@10 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (y) -> ⌊mut@1⌋ ; - Some (px) -> &mut@3 (2: i32) ; - Some (py) -> &mut@1 (⌊mut@3⌋) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@0) -> ⊥ : (T, test1::List) ; + Some (l) -> s@0 : test1::List ; + Some (var@2) -> ⊥ : isize ; + Some (hd) -> ⊥ : T ; + Some (tl) -> ⊥ : std::boxed::Box> ; + Some (var@5) -> ⊥ : T ; + Some (var@6) -> ⊥ : test1::List ; Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (var@8) -> false ; + Some (var@9) -> ⊥ : () ; + Some (var@10) -> ⊥ : isize ; } @@ -122789,131 +120820,139 @@ move var@10 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (y) -> ⌊mut@1⌋ ; - Some (px) -> &mut@3 (2: i32) ; - Some (py) -> &mut@1 (⌊mut@3⌋) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@0) -> ⊥ : (T, test1::List) ; + Some (l) -> s@0 : test1::List ; + Some (var@2) -> ⊥ : isize ; + Some (hd) -> ⊥ : T ; + Some (tl) -> ⊥ : std::boxed::Box> ; + Some (var@5) -> ⊥ : T ; + Some (var@6) -> ⊥ : test1::List ; Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (var@8) -> false ; + Some (var@9) -> ⊥ : () ; + Some (var@10) -> ⊥ : isize ; } - op: -copy *(py) +false -[Debug] end borrow: 3: -- original context: +[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**: # Ended regions: {} # 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (y) -> ⌊mut@1⌋ ; - Some (px) -> &mut@3 (2: i32) ; - Some (py) -> &mut@1 (⌊mut@3⌋) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (var@0) -> ⊥ : (T, test1::List) ; + Some (l) -> s@0 : test1::List ; + Some (var@2) -> ⊥ : isize ; + Some (hd) -> ⊥ : T ; + Some (tl) -> ⊥ : std::boxed::Box> ; + Some (var@5) -> ⊥ : T ; + Some (var@6) -> ⊥ : test1::List ; + Some (var@7) -> false ; + Some (var@8) -> false ; + Some (var@9) -> ⊥ : () ; + Some (var@10) -> ⊥ : isize ; } -[Debug] give_back: -- bid: 3 -- content: &mut@3 (2: i32) -- context: + + +[Debug] +**About to evaluate statement**: [ + var@7 := true +] + +**Context**: # Ended regions: {} # 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (y) -> ⌊mut@1⌋ ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (py) -> &mut@1 (⌊mut@3⌋) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (var@0) -> ⊥ : (T, test1::List) ; + Some (l) -> s@0 : test1::List ; + Some (var@2) -> ⊥ : isize ; + Some (hd) -> ⊥ : T ; + Some (tl) -> ⊥ : std::boxed::Box> ; + Some (var@5) -> ⊥ : T ; + Some (var@6) -> ⊥ : test1::List ; + Some (var@7) -> false ; + Some (var@8) -> false ; + Some (var@9) -> ⊥ : () ; + Some (var@10) -> ⊥ : isize ; } -[Debug] give_back_value: -- bid: 3 -- value: 2: i32 -- context: + +[Debug] eval_operand: +- ctx: # Ended regions: {} # 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (y) -> ⌊mut@1⌋ ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (py) -> &mut@1 (⌊mut@3⌋) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (var@0) -> ⊥ : (T, test1::List) ; + Some (l) -> s@0 : test1::List ; + Some (var@2) -> ⊥ : isize ; + Some (hd) -> ⊥ : T ; + Some (tl) -> ⊥ : std::boxed::Box> ; + Some (var@5) -> ⊥ : T ; + Some (var@6) -> ⊥ : test1::List ; + Some (var@7) -> false ; + Some (var@8) -> false ; + Some (var@9) -> ⊥ : () ; + Some (var@10) -> ⊥ : isize ; } +- op: +true + [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 + 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**: @@ -122922,32 +120961,24 @@ copy *(py) # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (y) -> ⌊mut@1⌋ ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (py) -> &mut@1 (2: i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> 2: i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (var@0) -> ⊥ : (T, test1::List) ; + Some (l) -> s@0 : test1::List ; + Some (var@2) -> ⊥ : isize ; + Some (hd) -> ⊥ : T ; + Some (tl) -> ⊥ : std::boxed::Box> ; + Some (var@5) -> ⊥ : T ; + Some (var@6) -> ⊥ : test1::List ; + Some (var@7) -> true ; + Some (var@8) -> false ; + Some (var@9) -> ⊥ : () ; + Some (var@10) -> ⊥ : isize ; } [Debug] **About to evaluate statement**: [ - var@14 := move var@15 == 2: i32 + var@8 := true ] **Context**: @@ -122956,25 +120987,17 @@ copy *(py) # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (y) -> ⌊mut@1⌋ ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (py) -> &mut@1 (2: i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> 2: i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (var@0) -> ⊥ : (T, test1::List) ; + Some (l) -> s@0 : test1::List ; + Some (var@2) -> ⊥ : isize ; + Some (hd) -> ⊥ : T ; + Some (tl) -> ⊥ : std::boxed::Box> ; + Some (var@5) -> ⊥ : T ; + Some (var@6) -> ⊥ : test1::List ; + Some (var@7) -> true ; + Some (var@8) -> false ; + Some (var@9) -> ⊥ : () ; + Some (var@10) -> ⊥ : isize ; } @@ -122986,72 +121009,69 @@ copy *(py) # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (y) -> ⌊mut@1⌋ ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (py) -> &mut@1 (2: i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> 2: i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (var@0) -> ⊥ : (T, test1::List) ; + Some (l) -> s@0 : test1::List ; + Some (var@2) -> ⊥ : isize ; + Some (hd) -> ⊥ : T ; + Some (tl) -> ⊥ : std::boxed::Box> ; + Some (var@5) -> ⊥ : T ; + Some (var@6) -> ⊥ : test1::List ; + Some (var@7) -> true ; + Some (var@8) -> false ; + Some (var@9) -> ⊥ : () ; + Some (var@10) -> ⊥ : isize ; } - op: -move var@15 +true -[Debug] eval_operand: -- ctx: +[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**: # Ended regions: {} # 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (y) -> ⌊mut@1⌋ ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (py) -> &mut@1 (2: i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (var@0) -> ⊥ : (T, test1::List) ; + Some (l) -> s@0 : test1::List ; + Some (var@2) -> ⊥ : isize ; + Some (hd) -> ⊥ : T ; + Some (tl) -> ⊥ : std::boxed::Box> ; + Some (var@5) -> ⊥ : T ; + Some (var@6) -> ⊥ : test1::List ; + Some (var@7) -> true ; + Some (var@8) -> true ; + Some (var@9) -> ⊥ : () ; + Some (var@10) -> ⊥ : isize ; } -- 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 + var@2 := discriminant(l) ] **Context**: @@ -123060,32 +121080,40 @@ move var@15 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (y) -> ⌊mut@1⌋ ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (py) -> &mut@1 (2: i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> s@4 : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (var@0) -> ⊥ : (T, test1::List) ; + Some (l) -> s@0 : test1::List ; + Some (var@2) -> ⊥ : isize ; + Some (hd) -> ⊥ : T ; + Some (tl) -> ⊥ : std::boxed::Box> ; + Some (var@5) -> ⊥ : T ; + Some (var@6) -> ⊥ : test1::List ; + Some (var@7) -> true ; + Some (var@8) -> true ; + Some (var@9) -> ⊥ : () ; + Some (var@10) -> ⊥ : isize ; } [Debug] **About to evaluate statement**: [ - var@13 := ¬ move var@14 + 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**: @@ -123094,25 +121122,17 @@ move var@15 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (y) -> ⌊mut@1⌋ ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (py) -> &mut@1 (2: i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> s@4 : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (var@0) -> ⊥ : (T, test1::List) ; + Some (l) -> test1::List::Cons { 0 = s@1 : T; 1 = s@2 : std::boxed::Box>; } ; + Some (var@2) -> 0: isize ; + Some (hd) -> ⊥ : T ; + Some (tl) -> ⊥ : std::boxed::Box> ; + Some (var@5) -> ⊥ : T ; + Some (var@6) -> ⊥ : test1::List ; + Some (var@7) -> true ; + Some (var@8) -> true ; + Some (var@9) -> ⊥ : () ; + Some (var@10) -> ⊥ : isize ; } @@ -123124,38 +121144,34 @@ move var@15 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (y) -> ⌊mut@1⌋ ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (py) -> &mut@1 (2: i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> s@4 : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (var@0) -> ⊥ : (T, test1::List) ; + Some (l) -> test1::List::Cons { 0 = s@1 : T; 1 = s@2 : std::boxed::Box>; } ; + Some (var@2) -> 0: isize ; + Some (hd) -> ⊥ : T ; + Some (tl) -> ⊥ : std::boxed::Box> ; + Some (var@5) -> ⊥ : T ; + Some (var@6) -> ⊥ : test1::List ; + Some (var@7) -> true ; + Some (var@8) -> true ; + Some (var@9) -> ⊥ : () ; + Some (var@10) -> ⊥ : isize ; } - op: -move var@14 +move var@2 [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); + 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 ] @@ -123165,32 +121181,24 @@ move var@14 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (y) -> ⌊mut@1⌋ ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (py) -> &mut@1 (2: i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> s@5 : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (var@0) -> ⊥ : (T, test1::List) ; + Some (l) -> test1::List::Cons { 0 = s@1 : T; 1 = s@2 : std::boxed::Box>; } ; + Some (var@2) -> ⊥ : isize ; + Some (hd) -> ⊥ : T ; + Some (tl) -> ⊥ : std::boxed::Box> ; + Some (var@5) -> ⊥ : T ; + Some (var@6) -> ⊥ : test1::List ; + Some (var@7) -> true ; + Some (var@8) -> true ; + Some (var@9) -> ⊥ : () ; + Some (var@10) -> ⊥ : isize ; } [Debug] **About to evaluate statement**: [ - assert(¬move var@13) + var@8 := false ] **Context**: @@ -123199,25 +121207,17 @@ move var@14 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (y) -> ⌊mut@1⌋ ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (py) -> &mut@1 (2: i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> s@5 : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (var@0) -> ⊥ : (T, test1::List) ; + Some (l) -> test1::List::Cons { 0 = s@1 : T; 1 = s@2 : std::boxed::Box>; } ; + Some (var@2) -> ⊥ : isize ; + Some (hd) -> ⊥ : T ; + Some (tl) -> ⊥ : std::boxed::Box> ; + Some (var@5) -> ⊥ : T ; + Some (var@6) -> ⊥ : test1::List ; + Some (var@7) -> true ; + Some (var@8) -> true ; + Some (var@9) -> ⊥ : () ; + Some (var@10) -> ⊥ : isize ; } @@ -123229,37 +121229,33 @@ move var@14 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (y) -> ⌊mut@1⌋ ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (py) -> &mut@1 (2: i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> true ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (var@0) -> ⊥ : (T, test1::List) ; + Some (l) -> test1::List::Cons { 0 = s@1 : T; 1 = s@2 : std::boxed::Box>; } ; + Some (var@2) -> ⊥ : isize ; + Some (hd) -> ⊥ : T ; + Some (tl) -> ⊥ : std::boxed::Box> ; + Some (var@5) -> ⊥ : T ; + Some (var@6) -> ⊥ : test1::List ; + Some (var@7) -> true ; + Some (var@8) -> true ; + Some (var@9) -> ⊥ : () ; + Some (var@10) -> ⊥ : isize ; } - op: -move var@13 +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); + 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 ] @@ -123269,32 +121265,24 @@ move var@13 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (y) -> ⌊mut@1⌋ ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (py) -> &mut@1 (2: i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; -} + Some (var@0) -> ⊥ : (T, test1::List) ; + Some (l) -> test1::List::Cons { 0 = s@1 : T; 1 = s@2 : std::boxed::Box>; } ; + Some (var@2) -> ⊥ : isize ; + Some (hd) -> ⊥ : T ; + Some (tl) -> ⊥ : std::boxed::Box> ; + Some (var@5) -> ⊥ : T ; + Some (var@6) -> ⊥ : test1::List ; + Some (var@7) -> true ; + Some (var@8) -> false ; + Some (var@9) -> ⊥ : () ; + Some (var@10) -> ⊥ : isize ; +} [Debug] **About to evaluate statement**: [ - var@18 := copy y + hd := move (l as test1::List::Cons).0 ] **Context**: @@ -123303,25 +121291,17 @@ move var@13 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (y) -> ⌊mut@1⌋ ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (py) -> &mut@1 (2: i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (var@0) -> ⊥ : (T, test1::List) ; + Some (l) -> test1::List::Cons { 0 = s@1 : T; 1 = s@2 : std::boxed::Box>; } ; + Some (var@2) -> ⊥ : isize ; + Some (hd) -> ⊥ : T ; + Some (tl) -> ⊥ : std::boxed::Box> ; + Some (var@5) -> ⊥ : T ; + Some (var@6) -> ⊥ : test1::List ; + Some (var@7) -> true ; + Some (var@8) -> false ; + Some (var@9) -> ⊥ : () ; + Some (var@10) -> ⊥ : isize ; } @@ -123333,126 +121313,114 @@ move var@13 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (y) -> ⌊mut@1⌋ ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (py) -> &mut@1 (2: i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (var@0) -> ⊥ : (T, test1::List) ; + Some (l) -> test1::List::Cons { 0 = s@1 : T; 1 = s@2 : std::boxed::Box>; } ; + Some (var@2) -> ⊥ : isize ; + Some (hd) -> ⊥ : T ; + Some (tl) -> ⊥ : std::boxed::Box> ; + Some (var@5) -> ⊥ : T ; + Some (var@6) -> ⊥ : test1::List ; + Some (var@7) -> true ; + Some (var@8) -> false ; + Some (var@9) -> ⊥ : () ; + Some (var@10) -> ⊥ : isize ; } - op: -copy y +move (l as test1::List::Cons).0 -[Debug] end borrow: 1: -- original context: +[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**: # Ended regions: {} # 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (y) -> ⌊mut@1⌋ ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (py) -> &mut@1 (2: i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (var@0) -> ⊥ : (T, test1::List) ; + Some (l) -> test1::List::Cons { 0 = ⊥ : T; 1 = s@2 : std::boxed::Box>; } ; + Some (var@2) -> ⊥ : isize ; + Some (hd) -> s@1 : T ; + Some (tl) -> ⊥ : std::boxed::Box> ; + Some (var@5) -> ⊥ : T ; + Some (var@6) -> ⊥ : test1::List ; + Some (var@7) -> true ; + Some (var@8) -> false ; + Some (var@9) -> ⊥ : () ; + Some (var@10) -> ⊥ : isize ; } -[Debug] give_back: -- bid: 1 -- content: &mut@1 (2: i32) -- context: + + +[Debug] +**About to evaluate statement**: [ + var@7 := false +] + +**Context**: # Ended regions: {} # 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (y) -> ⌊mut@1⌋ ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (var@0) -> ⊥ : (T, test1::List) ; + Some (l) -> test1::List::Cons { 0 = ⊥ : T; 1 = s@2 : std::boxed::Box>; } ; + Some (var@2) -> ⊥ : isize ; + Some (hd) -> s@1 : T ; + Some (tl) -> ⊥ : std::boxed::Box> ; + Some (var@5) -> ⊥ : T ; + Some (var@6) -> ⊥ : test1::List ; + Some (var@7) -> true ; + Some (var@8) -> false ; + Some (var@9) -> ⊥ : () ; + Some (var@10) -> ⊥ : isize ; } -[Debug] give_back_value: -- bid: 1 -- value: 2: i32 -- context: + +[Debug] eval_operand: +- ctx: # Ended regions: {} # 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (y) -> ⌊mut@1⌋ ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (var@0) -> ⊥ : (T, test1::List) ; + Some (l) -> test1::List::Cons { 0 = ⊥ : T; 1 = s@2 : std::boxed::Box>; } ; + Some (var@2) -> ⊥ : isize ; + Some (hd) -> s@1 : T ; + Some (tl) -> ⊥ : std::boxed::Box> ; + Some (var@5) -> ⊥ : T ; + Some (var@6) -> ⊥ : test1::List ; + Some (var@7) -> true ; + Some (var@8) -> false ; + Some (var@9) -> ⊥ : () ; + Some (var@10) -> ⊥ : isize ; } +- op: +false + [Debug] **About to evaluate statement**: [ - var@17 := move var@18 == 2: i32; - var@16 := ¬ move var@17; - assert(¬move var@16); + 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 ] @@ -123462,32 +121430,24 @@ copy y # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (y) -> 2: i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> 2: i32 ; + Some (var@0) -> ⊥ : (T, test1::List) ; + Some (l) -> test1::List::Cons { 0 = ⊥ : T; 1 = s@2 : std::boxed::Box>; } ; + Some (var@2) -> ⊥ : isize ; + Some (hd) -> s@1 : T ; + Some (tl) -> ⊥ : std::boxed::Box> ; + Some (var@5) -> ⊥ : T ; + Some (var@6) -> ⊥ : test1::List ; + Some (var@7) -> false ; + Some (var@8) -> false ; + Some (var@9) -> ⊥ : () ; + Some (var@10) -> ⊥ : isize ; } [Debug] **About to evaluate statement**: [ - var@17 := move var@18 == 2: i32 + tl := move (l as test1::List::Cons).1 ] **Context**: @@ -123496,60 +121456,20 @@ copy y # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (y) -> 2: i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> 2: i32 ; -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (y) -> 2: i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> 2: i32 ; + Some (var@0) -> ⊥ : (T, test1::List) ; + Some (l) -> test1::List::Cons { 0 = ⊥ : T; 1 = s@2 : std::boxed::Box>; } ; + Some (var@2) -> ⊥ : isize ; + Some (hd) -> s@1 : T ; + Some (tl) -> ⊥ : std::boxed::Box> ; + Some (var@5) -> ⊥ : T ; + Some (var@6) -> ⊥ : test1::List ; + Some (var@7) -> false ; + Some (var@8) -> false ; + Some (var@9) -> ⊥ : () ; + Some (var@10) -> ⊥ : isize ; } -- op: -move var@18 [Debug] eval_operand: - ctx: @@ -123558,35 +121478,30 @@ move var@18 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (y) -> 2: i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (var@0) -> ⊥ : (T, test1::List) ; + Some (l) -> test1::List::Cons { 0 = ⊥ : T; 1 = s@2 : std::boxed::Box>; } ; + Some (var@2) -> ⊥ : isize ; + Some (hd) -> s@1 : T ; + Some (tl) -> ⊥ : std::boxed::Box> ; + Some (var@5) -> ⊥ : T ; + Some (var@6) -> ⊥ : test1::List ; + Some (var@7) -> false ; + Some (var@8) -> false ; + Some (var@9) -> ⊥ : () ; + Some (var@10) -> ⊥ : isize ; } - op: -2: i32 +move (l as test1::List::Cons).1 [Debug] **About to evaluate statement**: [ - var@16 := ¬ move var@17; - assert(¬move var@16); + 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 ] @@ -123596,32 +121511,24 @@ move var@18 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (y) -> 2: i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> s@6 : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (var@0) -> ⊥ : (T, test1::List) ; + Some (l) -> test1::List::Cons { 0 = ⊥ : T; 1 = ⊥ : std::boxed::Box>; } ; + Some (var@2) -> ⊥ : isize ; + Some (hd) -> s@1 : T ; + Some (tl) -> s@2 : std::boxed::Box> ; + Some (var@5) -> ⊥ : T ; + Some (var@6) -> ⊥ : test1::List ; + Some (var@7) -> false ; + Some (var@8) -> false ; + Some (var@9) -> ⊥ : () ; + Some (var@10) -> ⊥ : isize ; } [Debug] **About to evaluate statement**: [ - var@16 := ¬ move var@17 + var@5 := move hd ] **Context**: @@ -123630,25 +121537,17 @@ move var@18 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (y) -> 2: i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> s@6 : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (var@0) -> ⊥ : (T, test1::List) ; + Some (l) -> test1::List::Cons { 0 = ⊥ : T; 1 = ⊥ : std::boxed::Box>; } ; + Some (var@2) -> ⊥ : isize ; + Some (hd) -> s@1 : T ; + Some (tl) -> s@2 : std::boxed::Box> ; + Some (var@5) -> ⊥ : T ; + Some (var@6) -> ⊥ : test1::List ; + Some (var@7) -> false ; + Some (var@8) -> false ; + Some (var@9) -> ⊥ : () ; + Some (var@10) -> ⊥ : isize ; } @@ -123660,34 +121559,29 @@ move var@18 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (y) -> 2: i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> s@6 : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (var@0) -> ⊥ : (T, test1::List) ; + Some (l) -> test1::List::Cons { 0 = ⊥ : T; 1 = ⊥ : std::boxed::Box>; } ; + Some (var@2) -> ⊥ : isize ; + Some (hd) -> s@1 : T ; + Some (tl) -> s@2 : std::boxed::Box> ; + Some (var@5) -> ⊥ : T ; + Some (var@6) -> ⊥ : test1::List ; + Some (var@7) -> false ; + Some (var@8) -> false ; + Some (var@9) -> ⊥ : () ; + Some (var@10) -> ⊥ : isize ; } - op: -move var@17 +move hd [Debug] **About to evaluate statement**: [ - assert(¬move var@16); + 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 ] @@ -123697,32 +121591,24 @@ move var@17 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (y) -> 2: i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> s@7 : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (var@0) -> ⊥ : (T, test1::List) ; + Some (l) -> test1::List::Cons { 0 = ⊥ : T; 1 = ⊥ : std::boxed::Box>; } ; + Some (var@2) -> ⊥ : isize ; + Some (hd) -> ⊥ : T ; + Some (tl) -> s@2 : std::boxed::Box> ; + Some (var@5) -> s@1 : T ; + Some (var@6) -> ⊥ : test1::List ; + Some (var@7) -> false ; + Some (var@8) -> false ; + Some (var@9) -> ⊥ : () ; + Some (var@10) -> ⊥ : isize ; } [Debug] **About to evaluate statement**: [ - assert(¬move var@16) + var@6 := move deref_box(tl) ] **Context**: @@ -123731,25 +121617,17 @@ move var@17 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (y) -> 2: i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> s@7 : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (var@0) -> ⊥ : (T, test1::List) ; + Some (l) -> test1::List::Cons { 0 = ⊥ : T; 1 = ⊥ : std::boxed::Box>; } ; + Some (var@2) -> ⊥ : isize ; + Some (hd) -> ⊥ : T ; + Some (tl) -> s@2 : std::boxed::Box> ; + Some (var@5) -> s@1 : T ; + Some (var@6) -> ⊥ : test1::List ; + Some (var@7) -> false ; + Some (var@8) -> false ; + Some (var@9) -> ⊥ : () ; + Some (var@10) -> ⊥ : isize ; } @@ -123761,74 +121639,70 @@ move var@17 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (y) -> 2: i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> true ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (var@0) -> ⊥ : (T, test1::List) ; + Some (l) -> test1::List::Cons { 0 = ⊥ : T; 1 = ⊥ : std::boxed::Box>; } ; + Some (var@2) -> ⊥ : isize ; + Some (hd) -> ⊥ : T ; + Some (tl) -> s@2 : std::boxed::Box> ; + Some (var@5) -> s@1 : T ; + Some (var@6) -> ⊥ : test1::List ; + Some (var@7) -> false ; + Some (var@8) -> false ; + Some (var@9) -> ⊥ : () ; + Some (var@10) -> ⊥ : isize ; } - op: -move var@16 +move deref_box(tl) -[Debug] -**About to evaluate statement**: [ - return -] +[Debug] expand_symbolic_value: s@2 : std::boxed::Box> -**Context**: +- original context: # Ended regions: {} # 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (y) -> 2: i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : i32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (var@0) -> ⊥ : (T, test1::List) ; + Some (l) -> test1::List::Cons { 0 = ⊥ : T; 1 = ⊥ : std::boxed::Box>; } ; + Some (var@2) -> ⊥ : isize ; + Some (hd) -> ⊥ : T ; + Some (tl) -> s@2 : std::boxed::Box> ; + Some (var@5) -> s@1 : T ; + Some (var@6) -> ⊥ : test1::List ; + Some (var@7) -> false ; + Some (var@8) -> false ; + Some (var@9) -> ⊥ : () ; + Some (var@10) -> ⊥ : isize ; } +- new context: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + Some (var@0) -> ⊥ : (T, test1::List) ; + Some (l) -> test1::List::Cons { 0 = ⊥ : T; 1 = ⊥ : std::boxed::Box>; } ; + Some (var@2) -> ⊥ : isize ; + Some (hd) -> ⊥ : T ; + Some (tl) -> @Box(s@3 : test1::List) ; + Some (var@5) -> s@1 : T ; + Some (var@6) -> ⊥ : test1::List ; + Some (var@7) -> false ; + Some (var@8) -> false ; + Some (var@9) -> ⊥ : () ; + Some (var@10) -> ⊥ : isize ; +} + -[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); + (var@0).0 := move var@5; + (var@0).1 := move var@6; + var@9 := move alloc::alloc::box_free>(move tl); return ] @@ -123838,17 +121712,24 @@ move var@16 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (l) -> ⊥ : test1::List ; - Some (var@2) -> ⊥ : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; + Some (var@0) -> ⊥ : (T, test1::List) ; + Some (l) -> test1::List::Cons { 0 = ⊥ : T; 1 = ⊥ : std::boxed::Box>; } ; + Some (var@2) -> ⊥ : isize ; + Some (hd) -> ⊥ : T ; + Some (tl) -> @Box(⊥ : test1::List) ; + Some (var@5) -> s@1 : T ; + Some (var@6) -> s@3 : test1::List ; + Some (var@7) -> false ; + Some (var@8) -> false ; + Some (var@9) -> ⊥ : () ; + Some (var@10) -> ⊥ : isize ; } [Debug] **About to evaluate statement**: [ - set_discriminant(var@3, 1) + (var@0).0 := move var@5 ] **Context**: @@ -123857,21 +121738,55 @@ move var@16 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (l) -> ⊥ : test1::List ; - Some (var@2) -> ⊥ : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; + Some (var@0) -> ⊥ : (T, test1::List) ; + Some (l) -> test1::List::Cons { 0 = ⊥ : T; 1 = ⊥ : std::boxed::Box>; } ; + Some (var@2) -> ⊥ : isize ; + Some (hd) -> ⊥ : T ; + Some (tl) -> @Box(⊥ : test1::List) ; + Some (var@5) -> s@1 : T ; + Some (var@6) -> s@3 : test1::List ; + Some (var@7) -> false ; + Some (var@8) -> false ; + Some (var@9) -> ⊥ : () ; + Some (var@10) -> ⊥ : isize ; +} + + + +[Debug] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + Some (var@0) -> ⊥ : (T, test1::List) ; + Some (l) -> test1::List::Cons { 0 = ⊥ : T; 1 = ⊥ : std::boxed::Box>; } ; + Some (var@2) -> ⊥ : isize ; + Some (hd) -> ⊥ : T ; + Some (tl) -> @Box(⊥ : test1::List) ; + Some (var@5) -> s@1 : T ; + Some (var@6) -> s@3 : test1::List ; + Some (var@7) -> false ; + Some (var@8) -> false ; + Some (var@9) -> ⊥ : () ; + Some (var@10) -> ⊥ : isize ; } +- op: +move var@5 +[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@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); + (var@0).1 := move var@6; + var@9 := move alloc::alloc::box_free>(move tl); return ] @@ -123881,17 +121796,24 @@ move var@16 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (l) -> ⊥ : test1::List ; - Some (var@2) -> ⊥ : std::boxed::Box> ; - Some (var@3) -> test1::List::Nil ; + Some (var@0) -> (s@1 : T, ⊥ : test1::List) ; + Some (l) -> test1::List::Cons { 0 = ⊥ : T; 1 = ⊥ : std::boxed::Box>; } ; + Some (var@2) -> ⊥ : isize ; + Some (hd) -> ⊥ : T ; + Some (tl) -> @Box(⊥ : test1::List) ; + Some (var@5) -> ⊥ : T ; + Some (var@6) -> s@3 : test1::List ; + Some (var@7) -> false ; + Some (var@8) -> false ; + Some (var@9) -> ⊥ : () ; + Some (var@10) -> ⊥ : isize ; } [Debug] **About to evaluate statement**: [ - var@2 := move alloc::boxed::Box>::new(move var@3) + (var@0).1 := move var@6 ] **Context**: @@ -123900,19 +121822,21 @@ move var@16 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (l) -> ⊥ : test1::List ; - Some (var@2) -> ⊥ : std::boxed::Box> ; - Some (var@3) -> test1::List::Nil ; + Some (var@0) -> (s@1 : T, ⊥ : test1::List) ; + Some (l) -> test1::List::Cons { 0 = ⊥ : T; 1 = ⊥ : std::boxed::Box>; } ; + Some (var@2) -> ⊥ : isize ; + Some (hd) -> ⊥ : T ; + Some (tl) -> @Box(⊥ : test1::List) ; + Some (var@5) -> ⊥ : T ; + Some (var@6) -> s@3 : test1::List ; + Some (var@7) -> false ; + Some (var@8) -> false ; + Some (var@9) -> ⊥ : () ; + Some (var@10) -> ⊥ : isize ; } -[Debug] eval_non_local_function_call: -- fid:CfimAst.BoxNew -- type_params: [test1::List] -- args: [move var@3] -- dest: var@2 [Debug] eval_operand: - ctx: # Ended regions: {} @@ -123920,22 +121844,26 @@ move var@16 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (l) -> ⊥ : test1::List ; - Some (var@2) -> ⊥ : std::boxed::Box> ; - Some (var@3) -> test1::List::Nil ; + Some (var@0) -> (s@1 : T, ⊥ : test1::List) ; + Some (l) -> test1::List::Cons { 0 = ⊥ : T; 1 = ⊥ : std::boxed::Box>; } ; + Some (var@2) -> ⊥ : isize ; + Some (hd) -> ⊥ : T ; + Some (tl) -> @Box(⊥ : test1::List) ; + Some (var@5) -> ⊥ : T ; + Some (var@6) -> s@3 : test1::List ; + Some (var@7) -> false ; + Some (var@8) -> false ; + Some (var@9) -> ⊥ : () ; + Some (var@10) -> ⊥ : isize ; } - op: -move var@3 +move var@6 [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); + var@9 := move alloc::alloc::box_free>(move tl); return ] @@ -123945,17 +121873,24 @@ move var@3 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (l) -> ⊥ : test1::List ; - Some (var@2) -> s@0 : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; + Some (var@0) -> (s@1 : T, s@3 : test1::List) ; + Some (l) -> test1::List::Cons { 0 = ⊥ : T; 1 = ⊥ : std::boxed::Box>; } ; + Some (var@2) -> ⊥ : isize ; + Some (hd) -> ⊥ : T ; + Some (tl) -> @Box(⊥ : test1::List) ; + Some (var@5) -> ⊥ : T ; + Some (var@6) -> ⊥ : test1::List ; + Some (var@7) -> false ; + Some (var@8) -> false ; + Some (var@9) -> ⊥ : () ; + Some (var@10) -> ⊥ : isize ; } [Debug] **About to evaluate statement**: [ - (l as test1::List::Cons).0 := 0: i32 + var@9 := move alloc::alloc::box_free>(move tl) ] **Context**: @@ -123964,39 +121899,29 @@ move var@3 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (l) -> ⊥ : test1::List ; - Some (var@2) -> s@0 : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (l) -> ⊥ : test1::List ; - Some (var@2) -> s@0 : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; + Some (var@0) -> (s@1 : T, s@3 : test1::List) ; + Some (l) -> test1::List::Cons { 0 = ⊥ : T; 1 = ⊥ : std::boxed::Box>; } ; + Some (var@2) -> ⊥ : isize ; + Some (hd) -> ⊥ : T ; + Some (tl) -> @Box(⊥ : test1::List) ; + Some (var@5) -> ⊥ : T ; + Some (var@6) -> ⊥ : test1::List ; + Some (var@7) -> false ; + Some (var@8) -> false ; + Some (var@9) -> ⊥ : () ; + Some (var@10) -> ⊥ : isize ; } -- 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] 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**: [ - (l as test1::List::Cons).1 := move var@2; - set_discriminant(l, 0); - drop(l); return ] @@ -124006,17 +121931,40 @@ ty: (Types.Adt ((Types.AdtId 1), [], [(Types.Integer Types.I32)])) # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (l) -> test1::List::Cons { 0 = 0: i32; 1 = ⊥ : std::boxed::Box>; } ; - Some (var@2) -> s@0 : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; + Some (var@0) -> (s@1 : T, s@3 : test1::List) ; + Some (l) -> test1::List::Cons { 0 = ⊥ : T; 1 = ⊥ : std::boxed::Box>; } ; + Some (var@2) -> ⊥ : isize ; + Some (hd) -> ⊥ : T ; + Some (tl) -> ⊥ : std::boxed::Box> ; + Some (var@5) -> ⊥ : T ; + Some (var@6) -> ⊥ : test1::List ; + Some (var@7) -> false ; + Some (var@8) -> false ; + Some (var@9) -> () ; + Some (var@10) -> ⊥ : isize ; } [Debug] **About to evaluate statement**: [ - (l as test1::List::Cons).1 := move var@2 + 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**: @@ -124025,10 +121973,17 @@ ty: (Types.Adt ((Types.AdtId 1), [], [(Types.Integer Types.I32)])) # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (l) -> test1::List::Cons { 0 = 0: i32; 1 = ⊥ : std::boxed::Box>; } ; - Some (var@2) -> s@0 : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; + Some (var@0) -> ⊥ : (T, test1::List) ; + Some (l) -> test1::List::Nil ; + Some (var@2) -> 1: isize ; + Some (hd) -> ⊥ : T ; + Some (tl) -> ⊥ : std::boxed::Box> ; + Some (var@5) -> ⊥ : T ; + Some (var@6) -> ⊥ : test1::List ; + Some (var@7) -> true ; + Some (var@8) -> true ; + Some (var@9) -> ⊥ : () ; + Some (var@10) -> ⊥ : isize ; } @@ -124040,10 +121995,17 @@ ty: (Types.Adt ((Types.AdtId 1), [], [(Types.Integer Types.I32)])) # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (l) -> test1::List::Cons { 0 = 0: i32; 1 = ⊥ : std::boxed::Box>; } ; - Some (var@2) -> s@0 : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; + Some (var@0) -> ⊥ : (T, test1::List) ; + Some (l) -> test1::List::Nil ; + Some (var@2) -> 1: isize ; + Some (hd) -> ⊥ : T ; + Some (tl) -> ⊥ : std::boxed::Box> ; + Some (var@5) -> ⊥ : T ; + Some (var@6) -> ⊥ : test1::List ; + Some (var@7) -> true ; + Some (var@8) -> true ; + Some (var@9) -> ⊥ : () ; + Some (var@10) -> ⊥ : isize ; } @@ -124052,9 +122014,7 @@ move var@2 [Debug] **About to evaluate statement**: [ - set_discriminant(l, 0); - drop(l); - return + panic ] **Context**: @@ -124063,17 +122023,39 @@ move var@2 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (l) -> test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box>; } ; - Some (var@2) -> ⊥ : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; + Some (var@0) -> ⊥ : (T, test1::List) ; + Some (l) -> test1::List::Nil ; + Some (var@2) -> ⊥ : isize ; + Some (hd) -> ⊥ : T ; + Some (tl) -> ⊥ : std::boxed::Box> ; + Some (var@5) -> ⊥ : T ; + Some (var@6) -> ⊥ : test1::List ; + Some (var@7) -> true ; + Some (var@8) -> true ; + Some (var@9) -> ⊥ : () ; + Some (var@10) -> ⊥ : isize ; } +[Debug] test_function_symbolic: test_split_list [Debug] **About to evaluate statement**: [ - set_discriminant(l, 0) + 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**: @@ -124083,17 +122065,23 @@ move var@2 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (l) -> test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box>; } ; + Some (l) -> ⊥ : test1::List ; Some (var@2) -> ⊥ : std::boxed::Box> ; Some (var@3) -> ⊥ : test1::List ; + Some (hd) -> ⊥ : i32 ; + Some (tl) -> ⊥ : test1::List ; + Some (var@6) -> ⊥ : (i32, test1::List) ; + Some (var@7) -> ⊥ : test1::List ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : bool ; + Some (var@10) -> ⊥ : i32 ; } [Debug] **About to evaluate statement**: [ - drop(l); - return + set_discriminant(var@3, 1) ] **Context**: @@ -124103,16 +122091,36 @@ move var@2 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (l) -> test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box>; } ; + Some (l) -> ⊥ : test1::List ; Some (var@2) -> ⊥ : std::boxed::Box> ; Some (var@3) -> ⊥ : test1::List ; + Some (hd) -> ⊥ : i32 ; + Some (tl) -> ⊥ : test1::List ; + Some (var@6) -> ⊥ : (i32, test1::List) ; + Some (var@7) -> ⊥ : test1::List ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : bool ; + Some (var@10) -> ⊥ : i32 ; } [Debug] **About to evaluate statement**: [ - drop(l) + 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**: @@ -124122,17 +122130,23 @@ move var@2 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (l) -> test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box>; } ; + Some (l) -> ⊥ : test1::List ; Some (var@2) -> ⊥ : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; + Some (var@3) -> test1::List::Nil ; + Some (hd) -> ⊥ : i32 ; + Some (tl) -> ⊥ : test1::List ; + Some (var@6) -> ⊥ : (i32, test1::List) ; + Some (var@7) -> ⊥ : test1::List ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : bool ; + Some (var@10) -> ⊥ : i32 ; } -[Debug] drop_value: place: l [Debug] **About to evaluate statement**: [ - return + var@2 := move alloc::boxed::Box>::new(move var@3) ] **Context**: @@ -124144,25 +122158,61 @@ move var@2 Some (var@0) -> ⊥ : () ; Some (l) -> ⊥ : test1::List ; Some (var@2) -> ⊥ : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; + Some (var@3) -> test1::List::Nil ; + Some (hd) -> ⊥ : i32 ; + Some (tl) -> ⊥ : test1::List ; + Some (var@6) -> ⊥ : (i32, test1::List) ; + Some (var@7) -> ⊥ : test1::List ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : bool ; + Some (var@10) -> ⊥ : i32 ; } -[Debug] test_function_symbolic: test_box1 +[Debug] eval_non_local_function_call: +- fid:CfimAst.BoxNew +- type_params: [test1::List] +- args: [move var@3] +- dest: var@2 +[Debug] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + Some (var@0) -> ⊥ : () ; + Some (l) -> ⊥ : test1::List ; + Some (var@2) -> ⊥ : std::boxed::Box> ; + Some (var@3) -> test1::List::Nil ; + Some (hd) -> ⊥ : i32 ; + Some (tl) -> ⊥ : test1::List ; + Some (var@6) -> ⊥ : (i32, test1::List) ; + Some (var@7) -> ⊥ : test1::List ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : bool ; + Some (var@10) -> ⊥ : i32 ; +} + + +- op: +move var@3 + [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); + (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 ] @@ -124173,21 +122223,23 @@ move var@2 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (b) -> ⊥ : std::boxed::Box ; - Some (x) -> ⊥ : &'_ mut (i32) ; - Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; - Some (x) -> ⊥ : &'_ (i32) ; - Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; + Some (l) -> ⊥ : test1::List ; + Some (var@2) -> s@0 : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; + Some (hd) -> ⊥ : i32 ; + Some (tl) -> ⊥ : test1::List ; + Some (var@6) -> ⊥ : (i32, test1::List) ; + Some (var@7) -> ⊥ : test1::List ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : bool ; + Some (var@10) -> ⊥ : i32 ; } [Debug] **About to evaluate statement**: [ - b := move alloc::boxed::Box::new(0: i32) + (l as test1::List::Cons).0 := 0: i32 ] **Context**: @@ -124197,23 +122249,20 @@ move var@2 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (b) -> ⊥ : std::boxed::Box ; - Some (x) -> ⊥ : &'_ mut (i32) ; - Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; - Some (x) -> ⊥ : &'_ (i32) ; - Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; + Some (l) -> ⊥ : test1::List ; + Some (var@2) -> s@0 : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; + Some (hd) -> ⊥ : i32 ; + Some (tl) -> ⊥ : test1::List ; + Some (var@6) -> ⊥ : (i32, test1::List) ; + Some (var@7) -> ⊥ : test1::List ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : bool ; + Some (var@10) -> ⊥ : i32 ; } -[Debug] eval_non_local_function_call: -- fid:CfimAst.BoxNew -- type_params: [i32] -- args: [0: i32] -- dest: b [Debug] eval_operand: - ctx: # Ended regions: {} @@ -124222,32 +122271,38 @@ move var@2 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (b) -> ⊥ : std::boxed::Box ; - Some (x) -> ⊥ : &'_ mut (i32) ; - Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; - Some (x) -> ⊥ : &'_ (i32) ; - Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; + Some (l) -> ⊥ : test1::List ; + Some (var@2) -> s@0 : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; + Some (hd) -> ⊥ : i32 ; + Some (tl) -> ⊥ : test1::List ; + Some (var@6) -> ⊥ : (i32, test1::List) ; + Some (var@7) -> ⊥ : test1::List ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : bool ; + Some (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**: [ - 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); + (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 ] @@ -124258,21 +122313,23 @@ move var@2 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (b) -> s@0 : std::boxed::Box ; - Some (x) -> ⊥ : &'_ mut (i32) ; - Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; - Some (x) -> ⊥ : &'_ (i32) ; - Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; + Some (l) -> test1::List::Cons { 0 = 0: i32; 1 = ⊥ : std::boxed::Box>; } ; + Some (var@2) -> s@0 : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; + Some (hd) -> ⊥ : i32 ; + Some (tl) -> ⊥ : test1::List ; + Some (var@6) -> ⊥ : (i32, test1::List) ; + Some (var@7) -> ⊥ : test1::List ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : bool ; + Some (var@10) -> ⊥ : i32 ; } [Debug] **About to evaluate statement**: [ - var@3 := &two-phase b + (l as test1::List::Cons).1 := move var@2 ] **Context**: @@ -124282,54 +122339,57 @@ move var@2 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (b) -> s@0 : std::boxed::Box ; - Some (x) -> ⊥ : &'_ mut (i32) ; - Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; - Some (x) -> ⊥ : &'_ (i32) ; - Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; + Some (l) -> test1::List::Cons { 0 = 0: i32; 1 = ⊥ : std::boxed::Box>; } ; + Some (var@2) -> s@0 : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; + Some (hd) -> ⊥ : i32 ; + Some (tl) -> ⊥ : test1::List ; + Some (var@6) -> ⊥ : (i32, test1::List) ; + Some (var@7) -> ⊥ : test1::List ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : bool ; + Some (var@10) -> ⊥ : 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**: +[Debug] eval_operand: +- ctx: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (b) -> @shared_loan({0}, s@0 : std::boxed::Box) ; - Some (x) -> ⊥ : &'_ mut (i32) ; - Some (var@3) -> ⌊inactivated_mut@0⌋ ; - Some (x) -> ⊥ : &'_ (i32) ; - Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; + Some (l) -> test1::List::Cons { 0 = 0: i32; 1 = ⊥ : std::boxed::Box>; } ; + Some (var@2) -> s@0 : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; + Some (hd) -> ⊥ : i32 ; + Some (tl) -> ⊥ : test1::List ; + Some (var@6) -> ⊥ : (i32, test1::List) ; + Some (var@7) -> ⊥ : test1::List ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : bool ; + Some (var@10) -> ⊥ : i32 ; } +- op: +move var@2 [Debug] **About to evaluate statement**: [ - x := move core::ops::deref::DerefMut::deref_mut(move var@3) + 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**: @@ -124339,57 +122399,57 @@ move var@2 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (b) -> @shared_loan({0}, s@0 : std::boxed::Box) ; - Some (x) -> ⊥ : &'_ mut (i32) ; - Some (var@3) -> ⌊inactivated_mut@0⌋ ; - Some (x) -> ⊥ : &'_ (i32) ; - Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; + Some (l) -> test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box>; } ; + Some (var@2) -> ⊥ : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; + Some (hd) -> ⊥ : i32 ; + Some (tl) -> ⊥ : test1::List ; + Some (var@6) -> ⊥ : (i32, test1::List) ; + Some (var@7) -> ⊥ : test1::List ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : bool ; + Some (var@10) -> ⊥ : i32 ; } -[Debug] eval_non_local_function_call: -- fid:CfimAst.BoxDerefMut -- type_params: [i32] -- args: [move var@3] -- dest: x -[Debug] activate_inactivated_mut_borrow: resulting value: -s@0 : std::boxed::Box -[Debug] eval_operand: -- ctx: +[Debug] +**About to evaluate statement**: [ + set_discriminant(l, 0) +] + +**Context**: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (b) -> ⌊mut@0⌋ ; - Some (x) -> ⊥ : &'_ mut (i32) ; - Some (var@3) -> &mut@0 (s@0 : std::boxed::Box) ; - Some (x) -> ⊥ : &'_ (i32) ; - Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; + Some (l) -> test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box>; } ; + Some (var@2) -> ⊥ : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; + Some (hd) -> ⊥ : i32 ; + Some (tl) -> ⊥ : test1::List ; + Some (var@6) -> ⊥ : (i32, test1::List) ; + Some (var@7) -> ⊥ : test1::List ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : bool ; + Some (var@10) -> ⊥ : i32 ; } -- op: -move var@3 [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); + 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 ] @@ -124400,25 +122460,23 @@ move var@3 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (b) -> ⌊mut@0⌋ ; - Some (x) -> s@1 : &r@0 mut (i32) ; - Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; - Some (x) -> ⊥ : &'_ (i32) ; - Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (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)) - } + Some (l) -> test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box>; } ; + Some (var@2) -> ⊥ : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; + Some (hd) -> ⊥ : i32 ; + Some (tl) -> ⊥ : test1::List ; + Some (var@6) -> ⊥ : (i32, test1::List) ; + Some (var@7) -> ⊥ : test1::List ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : bool ; + Some (var@10) -> ⊥ : i32 ; } [Debug] **About to evaluate statement**: [ - *(x) := 1: i32 + var@7 := move l ] **Context**: @@ -124428,18 +122486,16 @@ move var@3 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (b) -> ⌊mut@0⌋ ; - Some (x) -> s@1 : &r@0 mut (i32) ; - Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; - Some (x) -> ⊥ : &'_ (i32) ; - Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (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)) - } + Some (l) -> test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box>; } ; + Some (var@2) -> ⊥ : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; + Some (hd) -> ⊥ : i32 ; + Some (tl) -> ⊥ : test1::List ; + Some (var@6) -> ⊥ : (i32, test1::List) ; + Some (var@7) -> ⊥ : test1::List ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : bool ; + Some (var@10) -> ⊥ : i32 ; } @@ -124452,81 +122508,32 @@ move var@3 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (b) -> ⌊mut@0⌋ ; - Some (x) -> s@1 : &r@0 mut (i32) ; - Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; - Some (x) -> ⊥ : &'_ (i32) ; - Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (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)) - } + Some (l) -> test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box>; } ; + Some (var@2) -> ⊥ : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; + Some (hd) -> ⊥ : i32 ; + Some (tl) -> ⊥ : test1::List ; + Some (var@6) -> ⊥ : (i32, test1::List) ; + Some (var@7) -> ⊥ : test1::List ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : bool ; + Some (var@10) -> ⊥ : i32 ; } - op: -1: i32 - -[Debug] expand_symbolic_value: s@1 : &r@0 mut (i32) - -- original context: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (b) -> ⌊mut@0⌋ ; - Some (x) -> s@1 : &r@0 mut (i32) ; - Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; - Some (x) -> ⊥ : &'_ (i32) ; - Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (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)) - } - None -> 1: i32 ; -} - - -- new context: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (b) -> ⌊mut@0⌋ ; - Some (x) -> &mut@1 (s@2 : i32) ; - Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; - Some (x) -> ⊥ : &'_ (i32) ; - Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (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)⌋ - } - None -> 1: i32 ; -} - +move l [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); + 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 ] @@ -124537,25 +122544,23 @@ move var@3 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (b) -> ⌊mut@0⌋ ; - Some (x) -> &mut@1 (1: i32) ; - Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; - Some (x) -> ⊥ : &'_ (i32) ; - Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (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)⌋ - } + Some (l) -> ⊥ : test1::List ; + Some (var@2) -> ⊥ : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; + Some (hd) -> ⊥ : i32 ; + Some (tl) -> ⊥ : test1::List ; + Some (var@6) -> ⊥ : (i32, test1::List) ; + Some (var@7) -> test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box>; } ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : bool ; + Some (var@10) -> ⊥ : i32 ; } [Debug] **About to evaluate statement**: [ - var@5 := &b + var@6 := move split_list(move var@7) ] **Context**: @@ -124565,209 +122570,129 @@ move var@3 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (b) -> ⌊mut@0⌋ ; - Some (x) -> &mut@1 (1: i32) ; - Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; - Some (x) -> ⊥ : &'_ (i32) ; - Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (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)⌋ - } + Some (l) -> ⊥ : test1::List ; + Some (var@2) -> ⊥ : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; + Some (hd) -> ⊥ : i32 ; + Some (tl) -> ⊥ : test1::List ; + Some (var@6) -> ⊥ : (i32, test1::List) ; + Some (var@7) -> test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box>; } ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : bool ; + Some (var@10) -> ⊥ : i32 ; } -[Debug] end borrow: 0: -- original context: +[Debug] eval_operand: +- ctx: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (b) -> ⌊mut@0⌋ ; - Some (x) -> &mut@1 (1: i32) ; - Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; - Some (x) -> ⊥ : &'_ (i32) ; - Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (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)⌋ - } + Some (l) -> ⊥ : test1::List ; + Some (var@2) -> ⊥ : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; + Some (hd) -> ⊥ : i32 ; + Some (tl) -> ⊥ : test1::List ; + Some (var@6) -> ⊥ : (i32, test1::List) ; + Some (var@7) -> test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box>; } ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : bool ; + Some (var@10) -> ⊥ : i32 ; } -[Debug] end borrow: 0: found outer borrows/abs:(InterpreterBorrowsCore.OuterAbs 0) -[Debug] end_abstraction: 0 -- original context: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (b) -> ⌊mut@0⌋ ; - Some (x) -> &mut@1 (1: i32) ; - Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; - Some (x) -> ⊥ : &'_ (i32) ; - Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (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] end_abstraction: 0 -- context after parent abstractions ended: -# Ended regions: {} -# 1 frame(s) +- op: +move var@7 -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (b) -> ⌊mut@0⌋ ; - Some (x) -> &mut@1 (1: i32) ; - Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; - Some (x) -> ⊥ : &'_ (i32) ; - Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (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**: [ + 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] end borrow: 1: -- original context: +**Context**: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (b) -> ⌊mut@0⌋ ; - Some (x) -> &mut@1 (1: i32) ; - Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; - Some (x) -> ⊥ : &'_ (i32) ; - Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (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)⌋ - } + Some (l) -> ⊥ : test1::List ; + Some (var@2) -> ⊥ : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; + Some (hd) -> ⊥ : i32 ; + Some (tl) -> ⊥ : test1::List ; + Some (var@6) -> s@1 : (i32, test1::List) ; + Some (var@7) -> ⊥ : test1::List ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : bool ; + Some (var@10) -> ⊥ : i32 ; } -[Debug] give_back: -- bid: 1 -- content: &mut@1 (1: i32) -- context: -# Ended regions: {} -# 1 frame(s) -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (b) -> ⌊mut@0⌋ ; - Some (x) -> ⊥ : &'_ mut (i32) ; - Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; - Some (x) -> ⊥ : &'_ (i32) ; - Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (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**: [ + hd := copy (var@6).0 +] -[Debug] give_back_value: -- bid: 1 -- value: 1: i32 -- context: +**Context**: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (b) -> ⌊mut@0⌋ ; - Some (x) -> ⊥ : &'_ mut (i32) ; - Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; - Some (x) -> ⊥ : &'_ (i32) ; - Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (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)⌋ - } + Some (l) -> ⊥ : test1::List ; + Some (var@2) -> ⊥ : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; + Some (hd) -> ⊥ : i32 ; + Some (tl) -> ⊥ : test1::List ; + Some (var@6) -> s@1 : (i32, test1::List) ; + Some (var@7) -> ⊥ : test1::List ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : bool ; + Some (var@10) -> ⊥ : i32 ; } -[Debug] end_abstraction: 0 -- context after loans ended: + +[Debug] eval_operand: +- ctx: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (b) -> ⌊mut@0⌋ ; - Some (x) -> ⊥ : &'_ mut (i32) ; - Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; - Some (x) -> ⊥ : &'_ (i32) ; - Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - &mut@0 (proj_borrows (s@0 : std::boxed::Box <: std::boxed::Box)), - @ended_mut_loan{ given_back=1: i32; child=proj_loans (s@2 : i32) } - } + Some (l) -> ⊥ : test1::List ; + Some (var@2) -> ⊥ : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; + Some (hd) -> ⊥ : i32 ; + Some (tl) -> ⊥ : test1::List ; + Some (var@6) -> s@1 : (i32, test1::List) ; + Some (var@7) -> ⊥ : test1::List ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : bool ; + Some (var@10) -> ⊥ : i32 ; } -[Debug] give_back_value: -- bid: 0 -- value: s@3 : std::boxed::Box -- context: -# Ended regions: {} -# 1 frame(s) -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (b) -> ⌊mut@0⌋ ; - Some (x) -> ⊥ : &'_ mut (i32) ; - Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; - Some (x) -> ⊥ : &'_ (i32) ; - Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - ⊥ : &r@0 mut (std::boxed::Box), - @ended_mut_loan{ given_back=1: i32; child=proj_loans (s@2 : i32) } - } -} +- op: +copy (var@6).0 +[Debug] expand_symbolic_value: s@1 : (i32, test1::List) -[Debug] end_abstraction: 0 - original context: # Ended regions: {} # 1 frame(s) @@ -124775,821 +122700,711 @@ move var@3 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (b) -> ⌊mut@0⌋ ; - Some (x) -> &mut@1 (1: i32) ; - Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; - Some (x) -> ⊥ : &'_ (i32) ; - Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (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)⌋ - } + Some (l) -> ⊥ : test1::List ; + Some (var@2) -> ⊥ : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; + Some (hd) -> ⊥ : i32 ; + Some (tl) -> ⊥ : test1::List ; + Some (var@6) -> s@1 : (i32, test1::List) ; + Some (var@7) -> ⊥ : test1::List ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : bool ; + Some (var@10) -> ⊥ : i32 ; } - new context: -# Ended regions: {0} +# Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (b) -> s@3 : std::boxed::Box ; - Some (x) -> ⊥ : &'_ mut (i32) ; - Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; - Some (x) -> ⊥ : &'_ (i32) ; - Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; + Some (l) -> ⊥ : test1::List ; + Some (var@2) -> ⊥ : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; + Some (hd) -> ⊥ : i32 ; + Some (tl) -> ⊥ : test1::List ; + Some (var@6) -> (s@2 : i32, s@3 : test1::List) ; + Some (var@7) -> ⊥ : test1::List ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : bool ; + Some (var@10) -> ⊥ : 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); + tl := move (var@6).1; + var@10 := copy hd; + var@9 := move var@10 == 0: i32; + var@8 := ¬ move var@9; + assert(¬move var@8); + drop(tl); return ] **Context**: -# Ended regions: {0} +# Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (b) -> @shared_loan({2}, s@3 : std::boxed::Box) ; - Some (x) -> ⊥ : &'_ mut (i32) ; - Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; - Some (x) -> ⊥ : &'_ (i32) ; - Some (var@5) -> ⌊shared@2⌋ ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; + Some (l) -> ⊥ : test1::List ; + Some (var@2) -> ⊥ : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; + Some (hd) -> s@2 : i32 ; + Some (tl) -> ⊥ : test1::List ; + Some (var@6) -> (s@2 : i32, s@3 : test1::List) ; + Some (var@7) -> ⊥ : test1::List ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : bool ; + Some (var@10) -> ⊥ : i32 ; } [Debug] **About to evaluate statement**: [ - x := move core::ops::deref::Deref>::deref(move var@5) + tl := move (var@6).1 ] **Context**: -# Ended regions: {0} +# Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (b) -> @shared_loan({2}, s@3 : std::boxed::Box) ; - Some (x) -> ⊥ : &'_ mut (i32) ; - Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; - Some (x) -> ⊥ : &'_ (i32) ; - Some (var@5) -> ⌊shared@2⌋ ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; + Some (l) -> ⊥ : test1::List ; + Some (var@2) -> ⊥ : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; + Some (hd) -> s@2 : i32 ; + Some (tl) -> ⊥ : test1::List ; + Some (var@6) -> (s@2 : i32, s@3 : test1::List) ; + Some (var@7) -> ⊥ : test1::List ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : bool ; + Some (var@10) -> ⊥ : i32 ; } -[Debug] eval_non_local_function_call: -- fid:CfimAst.BoxDeref -- type_params: [i32] -- args: [move var@5] -- dest: x [Debug] eval_operand: - ctx: -# Ended regions: {0} +# Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (b) -> @shared_loan({2}, s@3 : std::boxed::Box) ; - Some (x) -> ⊥ : &'_ mut (i32) ; - Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; - Some (x) -> ⊥ : &'_ (i32) ; - Some (var@5) -> ⌊shared@2⌋ ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; + Some (l) -> ⊥ : test1::List ; + Some (var@2) -> ⊥ : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; + Some (hd) -> s@2 : i32 ; + Some (tl) -> ⊥ : test1::List ; + Some (var@6) -> (s@2 : i32, s@3 : test1::List) ; + Some (var@7) -> ⊥ : test1::List ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : bool ; + Some (var@10) -> ⊥ : i32 ; } - op: -move var@5 +move (var@6).1 [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); + var@10 := copy hd; + var@9 := move var@10 == 0: i32; + var@8 := ¬ move var@9; + assert(¬move var@8); + drop(tl); return ] **Context**: -# Ended regions: {0} +# Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (b) -> @shared_loan({2}, s@3 : std::boxed::Box) ; - Some (x) -> ⊥ : &'_ mut (i32) ; - Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; - Some (x) -> s@4 : &r@1 (i32) ; - Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - ⌊shared@2⌋, - proj_loans (s@4 : &r@1 (i32)) - } + Some (l) -> ⊥ : test1::List ; + Some (var@2) -> ⊥ : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; + Some (hd) -> s@2 : i32 ; + Some (tl) -> s@3 : test1::List ; + Some (var@6) -> (s@2 : i32, ⊥ : test1::List) ; + Some (var@7) -> ⊥ : test1::List ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : bool ; + Some (var@10) -> ⊥ : i32 ; } [Debug] **About to evaluate statement**: [ - var@8 := copy *(x) + var@10 := copy hd ] **Context**: -# Ended regions: {0} +# Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (b) -> @shared_loan({2}, s@3 : std::boxed::Box) ; - Some (x) -> ⊥ : &'_ mut (i32) ; - Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; - Some (x) -> s@4 : &r@1 (i32) ; - Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - ⌊shared@2⌋, - proj_loans (s@4 : &r@1 (i32)) - } + Some (l) -> ⊥ : test1::List ; + Some (var@2) -> ⊥ : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; + Some (hd) -> s@2 : i32 ; + Some (tl) -> s@3 : test1::List ; + Some (var@6) -> (s@2 : i32, ⊥ : test1::List) ; + Some (var@7) -> ⊥ : test1::List ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : bool ; + Some (var@10) -> ⊥ : i32 ; } [Debug] eval_operand: - ctx: -# Ended regions: {0} +# Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (b) -> @shared_loan({2}, s@3 : std::boxed::Box) ; - Some (x) -> ⊥ : &'_ mut (i32) ; - Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; - Some (x) -> s@4 : &r@1 (i32) ; - Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - ⌊shared@2⌋, - proj_loans (s@4 : &r@1 (i32)) - } + Some (l) -> ⊥ : test1::List ; + Some (var@2) -> ⊥ : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; + Some (hd) -> s@2 : i32 ; + Some (tl) -> s@3 : test1::List ; + Some (var@6) -> (s@2 : i32, ⊥ : test1::List) ; + Some (var@7) -> ⊥ : test1::List ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : bool ; + Some (var@10) -> ⊥ : i32 ; } - op: -copy *(x) - -[Debug] expand_symbolic_value: s@4 : &r@1 (i32) - -- original context: -# Ended regions: {0} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (b) -> @shared_loan({2}, s@3 : std::boxed::Box) ; - Some (x) -> ⊥ : &'_ mut (i32) ; - Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; - Some (x) -> s@4 : &r@1 (i32) ; - Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - ⌊shared@2⌋, - proj_loans (s@4 : &r@1 (i32)) - } -} - - -- new context: -# Ended regions: {0} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (b) -> @shared_loan({2}, s@3 : std::boxed::Box) ; - Some (x) -> ⊥ : &'_ mut (i32) ; - Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; - Some (x) -> ⌊shared@3⌋ ; - Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - ⌊shared@2⌋, - @shared_loan({3}, s@5 : i32, proj_loans (s@5 : i32)) - } -} - +copy hd [Debug] **About to evaluate statement**: [ - var@7 := move var@8 == 1: i32; - var@6 := ¬ move var@7; - assert(¬move var@6); - drop(b); + var@9 := move var@10 == 0: i32; + var@8 := ¬ move var@9; + assert(¬move var@8); + drop(tl); return ] **Context**: -# Ended regions: {0} +# Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (b) -> @shared_loan({2}, s@3 : std::boxed::Box) ; - Some (x) -> ⊥ : &'_ mut (i32) ; - Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; - Some (x) -> ⌊shared@3⌋ ; - Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> s@5 : i32 ; - abs@1{parents={}}{regions={1}} { - ⌊shared@2⌋, - @shared_loan({3}, s@5 : i32, proj_loans (s@5 : i32)) - } + Some (l) -> ⊥ : test1::List ; + Some (var@2) -> ⊥ : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; + Some (hd) -> s@2 : i32 ; + Some (tl) -> s@3 : test1::List ; + Some (var@6) -> (s@2 : i32, ⊥ : test1::List) ; + Some (var@7) -> ⊥ : test1::List ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : bool ; + Some (var@10) -> s@2 : i32 ; } [Debug] **About to evaluate statement**: [ - var@7 := move var@8 == 1: i32 + var@9 := move var@10 == 0: i32 ] **Context**: -# Ended regions: {0} +# Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (b) -> @shared_loan({2}, s@3 : std::boxed::Box) ; - Some (x) -> ⊥ : &'_ mut (i32) ; - Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; - Some (x) -> ⌊shared@3⌋ ; - Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> s@5 : i32 ; - abs@1{parents={}}{regions={1}} { - ⌊shared@2⌋, - @shared_loan({3}, s@5 : i32, proj_loans (s@5 : i32)) - } + Some (l) -> ⊥ : test1::List ; + Some (var@2) -> ⊥ : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; + Some (hd) -> s@2 : i32 ; + Some (tl) -> s@3 : test1::List ; + Some (var@6) -> (s@2 : i32, ⊥ : test1::List) ; + Some (var@7) -> ⊥ : test1::List ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : bool ; + Some (var@10) -> s@2 : i32 ; } [Debug] eval_operand: - ctx: -# Ended regions: {0} +# Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (b) -> @shared_loan({2}, s@3 : std::boxed::Box) ; - Some (x) -> ⊥ : &'_ mut (i32) ; - Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; - Some (x) -> ⌊shared@3⌋ ; - Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> s@5 : i32 ; - abs@1{parents={}}{regions={1}} { - ⌊shared@2⌋, - @shared_loan({3}, s@5 : i32, proj_loans (s@5 : i32)) - } + Some (l) -> ⊥ : test1::List ; + Some (var@2) -> ⊥ : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; + Some (hd) -> s@2 : i32 ; + Some (tl) -> s@3 : test1::List ; + Some (var@6) -> (s@2 : i32, ⊥ : test1::List) ; + Some (var@7) -> ⊥ : test1::List ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : bool ; + Some (var@10) -> s@2 : i32 ; } - op: -move var@8 +move var@10 [Debug] eval_operand: - ctx: -# Ended regions: {0} +# Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (b) -> @shared_loan({2}, s@3 : std::boxed::Box) ; - Some (x) -> ⊥ : &'_ mut (i32) ; - Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; - Some (x) -> ⌊shared@3⌋ ; - Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - ⌊shared@2⌋, - @shared_loan({3}, s@5 : i32, proj_loans (s@5 : i32)) - } + Some (l) -> ⊥ : test1::List ; + Some (var@2) -> ⊥ : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; + Some (hd) -> s@2 : i32 ; + Some (tl) -> s@3 : test1::List ; + Some (var@6) -> (s@2 : i32, ⊥ : test1::List) ; + Some (var@7) -> ⊥ : test1::List ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : bool ; + Some (var@10) -> ⊥ : i32 ; } - op: -1: i32 +0: i32 [Debug] **About to evaluate statement**: [ - var@6 := ¬ move var@7; - assert(¬move var@6); - drop(b); + var@8 := ¬ move var@9; + assert(¬move var@8); + drop(tl); return ] **Context**: -# Ended regions: {0} +# Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (b) -> @shared_loan({2}, s@3 : std::boxed::Box) ; - Some (x) -> ⊥ : &'_ mut (i32) ; - Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; - Some (x) -> ⌊shared@3⌋ ; - Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> s@6 : bool ; - Some (var@8) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - ⌊shared@2⌋, - @shared_loan({3}, s@5 : i32, proj_loans (s@5 : i32)) - } + Some (l) -> ⊥ : test1::List ; + Some (var@2) -> ⊥ : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; + Some (hd) -> s@2 : i32 ; + Some (tl) -> s@3 : test1::List ; + Some (var@6) -> (s@2 : i32, ⊥ : test1::List) ; + Some (var@7) -> ⊥ : test1::List ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> s@4 : bool ; + Some (var@10) -> ⊥ : i32 ; } [Debug] **About to evaluate statement**: [ - var@6 := ¬ move var@7 + var@8 := ¬ move var@9 ] **Context**: -# Ended regions: {0} +# Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (b) -> @shared_loan({2}, s@3 : std::boxed::Box) ; - Some (x) -> ⊥ : &'_ mut (i32) ; - Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; - Some (x) -> ⌊shared@3⌋ ; - Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> s@6 : bool ; - Some (var@8) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - ⌊shared@2⌋, - @shared_loan({3}, s@5 : i32, proj_loans (s@5 : i32)) - } + Some (l) -> ⊥ : test1::List ; + Some (var@2) -> ⊥ : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; + Some (hd) -> s@2 : i32 ; + Some (tl) -> s@3 : test1::List ; + Some (var@6) -> (s@2 : i32, ⊥ : test1::List) ; + Some (var@7) -> ⊥ : test1::List ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> s@4 : bool ; + Some (var@10) -> ⊥ : i32 ; } [Debug] eval_operand: - ctx: -# Ended regions: {0} +# Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (b) -> @shared_loan({2}, s@3 : std::boxed::Box) ; - Some (x) -> ⊥ : &'_ mut (i32) ; - Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; - Some (x) -> ⌊shared@3⌋ ; - Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> s@6 : bool ; - Some (var@8) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - ⌊shared@2⌋, - @shared_loan({3}, s@5 : i32, proj_loans (s@5 : i32)) - } + Some (l) -> ⊥ : test1::List ; + Some (var@2) -> ⊥ : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; + Some (hd) -> s@2 : i32 ; + Some (tl) -> s@3 : test1::List ; + Some (var@6) -> (s@2 : i32, ⊥ : test1::List) ; + Some (var@7) -> ⊥ : test1::List ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> s@4 : bool ; + Some (var@10) -> ⊥ : i32 ; } - op: -move var@7 +move var@9 [Debug] **About to evaluate statement**: [ - assert(¬move var@6); - drop(b); + assert(¬move var@8); + drop(tl); return ] **Context**: -# Ended regions: {0} +# Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (b) -> @shared_loan({2}, s@3 : std::boxed::Box) ; - Some (x) -> ⊥ : &'_ mut (i32) ; - Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; - Some (x) -> ⌊shared@3⌋ ; - Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; - Some (var@6) -> s@7 : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - ⌊shared@2⌋, - @shared_loan({3}, s@5 : i32, proj_loans (s@5 : i32)) - } + Some (l) -> ⊥ : test1::List ; + Some (var@2) -> ⊥ : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; + Some (hd) -> s@2 : i32 ; + Some (tl) -> s@3 : test1::List ; + Some (var@6) -> (s@2 : i32, ⊥ : test1::List) ; + Some (var@7) -> ⊥ : test1::List ; + Some (var@8) -> s@5 : bool ; + Some (var@9) -> ⊥ : bool ; + Some (var@10) -> ⊥ : i32 ; } [Debug] **About to evaluate statement**: [ - assert(¬move var@6) + assert(¬move var@8) ] **Context**: -# Ended regions: {0} +# Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (b) -> @shared_loan({2}, s@3 : std::boxed::Box) ; - Some (x) -> ⊥ : &'_ mut (i32) ; - Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; - Some (x) -> ⌊shared@3⌋ ; - Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; - Some (var@6) -> s@7 : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - ⌊shared@2⌋, - @shared_loan({3}, s@5 : i32, proj_loans (s@5 : i32)) - } + Some (l) -> ⊥ : test1::List ; + Some (var@2) -> ⊥ : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; + Some (hd) -> s@2 : i32 ; + Some (tl) -> s@3 : test1::List ; + Some (var@6) -> (s@2 : i32, ⊥ : test1::List) ; + Some (var@7) -> ⊥ : test1::List ; + Some (var@8) -> s@5 : bool ; + Some (var@9) -> ⊥ : bool ; + Some (var@10) -> ⊥ : i32 ; } [Debug] eval_operand: - ctx: -# Ended regions: {0} +# Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (b) -> @shared_loan({2}, s@3 : std::boxed::Box) ; - Some (x) -> ⊥ : &'_ mut (i32) ; - Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; - Some (x) -> ⌊shared@3⌋ ; - Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; - Some (var@6) -> true ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - ⌊shared@2⌋, - @shared_loan({3}, s@5 : i32, proj_loans (s@5 : i32)) - } + Some (l) -> ⊥ : test1::List ; + Some (var@2) -> ⊥ : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; + Some (hd) -> s@2 : i32 ; + Some (tl) -> s@3 : test1::List ; + Some (var@6) -> (s@2 : i32, ⊥ : test1::List) ; + Some (var@7) -> ⊥ : test1::List ; + Some (var@8) -> true ; + Some (var@9) -> ⊥ : bool ; + Some (var@10) -> ⊥ : i32 ; } - op: -move var@6 +move var@8 [Debug] **About to evaluate statement**: [ - drop(b); + drop(tl); return ] **Context**: -# Ended regions: {0} +# Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (b) -> @shared_loan({2}, s@3 : std::boxed::Box) ; - Some (x) -> ⊥ : &'_ mut (i32) ; - Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; - Some (x) -> ⌊shared@3⌋ ; - Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - ⌊shared@2⌋, - @shared_loan({3}, s@5 : i32, proj_loans (s@5 : i32)) - } + Some (l) -> ⊥ : test1::List ; + Some (var@2) -> ⊥ : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; + Some (hd) -> s@2 : i32 ; + Some (tl) -> s@3 : test1::List ; + Some (var@6) -> (s@2 : i32, ⊥ : test1::List) ; + Some (var@7) -> ⊥ : test1::List ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : bool ; + Some (var@10) -> ⊥ : i32 ; } [Debug] **About to evaluate statement**: [ - drop(b) + drop(tl) ] **Context**: -# Ended regions: {0} +# Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (b) -> @shared_loan({2}, s@3 : std::boxed::Box) ; - Some (x) -> ⊥ : &'_ mut (i32) ; - Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; - Some (x) -> ⌊shared@3⌋ ; - Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - ⌊shared@2⌋, - @shared_loan({3}, s@5 : i32, proj_loans (s@5 : i32)) - } + Some (l) -> ⊥ : test1::List ; + Some (var@2) -> ⊥ : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; + Some (hd) -> s@2 : i32 ; + Some (tl) -> s@3 : test1::List ; + Some (var@6) -> (s@2 : i32, ⊥ : test1::List) ; + Some (var@7) -> ⊥ : test1::List ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : bool ; + Some (var@10) -> ⊥ : i32 ; } -[Debug] drop_value: place: b -[Debug] end borrow: 2: -- original context: -# Ended regions: {0} +[Debug] drop_value: place: tl +[Debug] +**About to evaluate statement**: [ + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (b) -> ⊥ : std::boxed::Box ; - Some (x) -> ⊥ : &'_ mut (i32) ; - Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; - Some (x) -> ⌊shared@3⌋ ; - Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - ⌊shared@2⌋, - @shared_loan({3}, s@5 : i32, proj_loans (s@5 : i32)) - } - None -> @shared_loan({2}, s@3 : std::boxed::Box) ; + Some (l) -> ⊥ : test1::List ; + Some (var@2) -> ⊥ : std::boxed::Box> ; + Some (var@3) -> ⊥ : test1::List ; + Some (hd) -> s@2 : i32 ; + Some (tl) -> ⊥ : test1::List ; + Some (var@6) -> (s@2 : i32, ⊥ : test1::List) ; + Some (var@7) -> ⊥ : test1::List ; + Some (var@8) -> ⊥ : bool ; + Some (var@9) -> ⊥ : bool ; + Some (var@10) -> ⊥ : i32 ; } -[Debug] end borrow: 2: found outer borrows/abs:(InterpreterBorrowsCore.OuterAbs 1) -[Debug] end_abstraction: 1 -- original context: -# Ended regions: {0} -# 1 frame(s) -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (b) -> ⊥ : std::boxed::Box ; - Some (x) -> ⊥ : &'_ mut (i32) ; - Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; - Some (x) -> ⌊shared@3⌋ ; - Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - ⌊shared@2⌋, - @shared_loan({3}, s@5 : i32, proj_loans (s@5 : i32)) + +[Debug] test_function_symbolic: get_elem +[Debug] +**About to evaluate statement**: [ + var@4 := copy b; + if (move var@4) { + var@0 := &mut *(x) } - None -> @shared_loan({2}, s@3 : std::boxed::Box) ; -} + else { + var@0 := move y + }; + return +] -[Debug] end_abstraction: 1 -- context after parent abstractions ended: -# Ended regions: {0} +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (b) -> ⊥ : std::boxed::Box ; - Some (x) -> ⊥ : &'_ mut (i32) ; - Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; - Some (x) -> ⌊shared@3⌋ ; - Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - ⌊shared@2⌋, - @shared_loan({3}, s@5 : i32, proj_loans (s@5 : i32)) + 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)) } - None -> @shared_loan({2}, s@3 : std::boxed::Box) ; + Some (var@0) -> ⊥ : &'_ mut (T) ; + Some (b) -> s@0 : bool ; + Some (x) -> s@1 : &r@0 mut (T) ; + Some (y) -> s@2 : &r@0 mut (T) ; + Some (var@4) -> ⊥ : bool ; } -[Debug] end borrow: 3: -- original context: -# Ended regions: {0} + + +[Debug] +**About to evaluate statement**: [ + var@4 := copy b +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (b) -> ⊥ : std::boxed::Box ; - Some (x) -> ⊥ : &'_ mut (i32) ; - Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; - Some (x) -> ⌊shared@3⌋ ; - Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - ⌊shared@2⌋, - @shared_loan({3}, s@5 : i32, proj_loans (s@5 : i32)) + 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)) } - None -> @shared_loan({2}, s@3 : std::boxed::Box) ; + Some (var@0) -> ⊥ : &'_ mut (T) ; + Some (b) -> s@0 : bool ; + Some (x) -> s@1 : &r@0 mut (T) ; + Some (y) -> s@2 : &r@0 mut (T) ; + Some (var@4) -> ⊥ : bool ; } -[Debug] give_back: -- bid: 3 -- content: ⌊shared@3⌋ -- context: -# Ended regions: {0} + + +[Debug] eval_operand: +- ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (b) -> ⊥ : std::boxed::Box ; - Some (x) -> ⊥ : &'_ mut (i32) ; - Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; - Some (x) -> ⊥ : &'_ (i32) ; - Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - ⌊shared@2⌋, - @shared_loan({3}, s@5 : i32, proj_loans (s@5 : i32)) + 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)) } - None -> @shared_loan({2}, s@3 : std::boxed::Box) ; + Some (var@0) -> ⊥ : &'_ mut (T) ; + Some (b) -> s@0 : bool ; + Some (x) -> s@1 : &r@0 mut (T) ; + Some (y) -> s@2 : &r@0 mut (T) ; + Some (var@4) -> ⊥ : bool ; } -[Debug] end_abstraction: 1 -- context after loans ended: -# Ended regions: {0} -# 1 frame(s) +- op: +copy b -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (b) -> ⊥ : std::boxed::Box ; - Some (x) -> ⊥ : &'_ mut (i32) ; - Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; - Some (x) -> ⊥ : &'_ (i32) ; - Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - ⌊shared@2⌋, - @ended_shared_loan(s@5 : i32, proj_loans (s@5 : i32)) +[Debug] +**About to evaluate statement**: [ + if (move var@4) { + var@0 := &mut *(x) } - None -> @shared_loan({2}, s@3 : std::boxed::Box) ; -} + else { + var@0 := move y + }; + return +] -[Debug] end_abstraction: 1 -- original context: -# Ended regions: {0} +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (b) -> ⊥ : std::boxed::Box ; - Some (x) -> ⊥ : &'_ mut (i32) ; - Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; - Some (x) -> ⌊shared@3⌋ ; - Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - ⌊shared@2⌋, - @shared_loan({3}, s@5 : i32, proj_loans (s@5 : i32)) + 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)) } - None -> @shared_loan({2}, s@3 : std::boxed::Box) ; + Some (var@0) -> ⊥ : &'_ mut (T) ; + Some (b) -> s@0 : bool ; + Some (x) -> s@1 : &r@0 mut (T) ; + Some (y) -> s@2 : &r@0 mut (T) ; + Some (var@4) -> s@0 : bool ; } -- new context: -# Ended regions: {0, 1} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (b) -> ⊥ : std::boxed::Box ; - Some (x) -> ⊥ : &'_ mut (i32) ; - Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; - Some (x) -> ⊥ : &'_ (i32) ; - Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - None -> s@3 : std::boxed::Box ; -} [Debug] **About to evaluate statement**: [ - return + if (move var@4) { + var@0 := &mut *(x) + } + else { + var@0 := move y + } ] **Context**: -# Ended regions: {0, 1} +# Ended regions: {} # 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (b) -> ⊥ : std::boxed::Box ; - Some (x) -> ⊥ : &'_ mut (i32) ; - Some (var@3) -> ⊥ : &'_ mut (std::boxed::Box) ; - Some (x) -> ⊥ : &'_ (i32) ; - Some (var@5) -> ⊥ : &'_ (std::boxed::Box) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; + 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)) + } + Some (var@0) -> ⊥ : &'_ mut (T) ; + Some (b) -> s@0 : bool ; + Some (x) -> s@1 : &r@0 mut (T) ; + Some (y) -> s@2 : &r@0 mut (T) ; + Some (var@4) -> s@0 : bool ; } -[Debug] test_function_symbolic: copy_int -[Debug] -**About to evaluate statement**: [ - var@0 := copy x; - return -] - -**Context**: +[Debug] eval_operand: +- ctx: # Ended regions: {} # 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : i32 ; - Some (x) -> s@0 : i32 ; + abs@0{parents={}}{regions={0}} { + true, + proj_loans (s@1 : &r@0 mut (T)), + proj_loans (s@2 : &r@0 mut (T)) + } + Some (var@0) -> ⊥ : &'_ mut (T) ; + Some (b) -> true ; + Some (x) -> s@1 : &r@0 mut (T) ; + Some (y) -> s@2 : &r@0 mut (T) ; + Some (var@4) -> true ; } +- op: +move var@4 [Debug] **About to evaluate statement**: [ - var@0 := copy x + var@0 := &mut *(x) ] **Context**: @@ -125598,81 +123413,86 @@ move var@6 # Frame 0: { - Some (var@0) -> ⊥ : i32 ; - Some (x) -> s@0 : i32 ; + abs@0{parents={}}{regions={0}} { + true, + proj_loans (s@1 : &r@0 mut (T)), + proj_loans (s@2 : &r@0 mut (T)) + } + Some (var@0) -> ⊥ : &'_ mut (T) ; + Some (b) -> true ; + Some (x) -> s@1 : &r@0 mut (T) ; + Some (y) -> s@2 : &r@0 mut (T) ; + Some (var@4) -> ⊥ : bool ; } -[Debug] eval_operand: -- ctx: +[Debug] expand_symbolic_value: s@1 : &r@0 mut (T) + +- original context: # Ended regions: {} # 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : i32 ; - Some (x) -> s@0 : i32 ; + abs@0{parents={}}{regions={0}} { + true, + proj_loans (s@1 : &r@0 mut (T)), + proj_loans (s@2 : &r@0 mut (T)) + } + Some (var@0) -> ⊥ : &'_ mut (T) ; + Some (b) -> true ; + Some (x) -> s@1 : &r@0 mut (T) ; + Some (y) -> s@2 : &r@0 mut (T) ; + Some (var@4) -> ⊥ : bool ; } -- op: -copy x - -[Debug] -**About to evaluate statement**: [ - return -] - -**Context**: +- new context: # Ended regions: {} # 1 frame(s) # Frame 0: { - Some (var@0) -> s@0 : i32 ; - Some (x) -> s@0 : i32 ; + abs@0{parents={}}{regions={0}} { + true, + ⌊mut@0, proj_loans (s@3 : T)⌋, + proj_loans (s@2 : &r@0 mut (T)) + } + Some (var@0) -> ⊥ : &'_ mut (T) ; + Some (b) -> true ; + Some (x) -> &mut@0 (s@3 : T) ; + Some (y) -> s@2 : &r@0 mut (T) ; + Some (var@4) -> ⊥ : bool ; } - -[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**: +[Debug] eval_operand: +- ctx: # Ended regions: {} # 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> ⊥ : i32 ; - Some (px) -> ⊥ : &'_ (i32) ; - Some (y) -> ⊥ : i32 ; - Some (var@4) -> ⊥ : i32 ; - Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : i32 ; - Some (var@8) -> ⊥ : i32 ; + abs@0{parents={}}{regions={0}} { + false, + proj_loans (s@1 : &r@0 mut (T)), + proj_loans (s@2 : &r@0 mut (T)) + } + Some (var@0) -> ⊥ : &'_ mut (T) ; + Some (b) -> false ; + Some (x) -> s@1 : &r@0 mut (T) ; + Some (y) -> s@2 : &r@0 mut (T) ; + Some (var@4) -> false ; } +- op: +move var@4 [Debug] **About to evaluate statement**: [ - x := 0: i32 + var@0 := move y ] **Context**: @@ -125681,15 +123501,16 @@ copy x # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> ⊥ : i32 ; - Some (px) -> ⊥ : &'_ (i32) ; - Some (y) -> ⊥ : i32 ; - Some (var@4) -> ⊥ : i32 ; - Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : i32 ; - Some (var@8) -> ⊥ : i32 ; + abs@0{parents={}}{regions={0}} { + false, + proj_loans (s@1 : &r@0 mut (T)), + proj_loans (s@2 : &r@0 mut (T)) + } + Some (var@0) -> ⊥ : &'_ mut (T) ; + Some (b) -> false ; + Some (x) -> s@1 : &r@0 mut (T) ; + Some (y) -> s@2 : &r@0 mut (T) ; + Some (var@4) -> ⊥ : bool ; } @@ -125701,31 +123522,24 @@ copy x # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> ⊥ : i32 ; - Some (px) -> ⊥ : &'_ (i32) ; - Some (y) -> ⊥ : i32 ; - Some (var@4) -> ⊥ : i32 ; - Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : i32 ; - Some (var@8) -> ⊥ : i32 ; + abs@0{parents={}}{regions={0}} { + false, + proj_loans (s@1 : &r@0 mut (T)), + proj_loans (s@2 : &r@0 mut (T)) + } + Some (var@0) -> ⊥ : &'_ mut (T) ; + Some (b) -> false ; + Some (x) -> s@1 : &r@0 mut (T) ; + Some (y) -> s@2 : &r@0 mut (T) ; + Some (var@4) -> ⊥ : bool ; } - op: -0: i32 +move y [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 ] @@ -125735,22 +123549,23 @@ copy x # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (px) -> ⊥ : &'_ (i32) ; - Some (y) -> ⊥ : i32 ; - Some (var@4) -> ⊥ : i32 ; - Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : i32 ; - Some (var@8) -> ⊥ : i32 ; + abs@0{parents={}}{regions={0}} { + true, + ⌊mut@0, proj_loans (s@3 : T)⌋, + proj_loans (s@2 : &r@0 mut (T)) + } + Some (var@0) -> &mut@1 (s@3 : T) ; + Some (b) -> true ; + Some (x) -> &mut@0 (⌊mut@1⌋) ; + Some (y) -> s@2 : &r@0 mut (T) ; + Some (var@4) -> ⊥ : bool ; } [Debug] **About to evaluate statement**: [ - px := &x + return ] **Context**: @@ -125759,28 +123574,44 @@ copy x # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (px) -> ⊥ : &'_ (i32) ; - Some (y) -> ⊥ : i32 ; - Some (var@4) -> ⊥ : i32 ; - Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : i32 ; - Some (var@8) -> ⊥ : i32 ; + abs@0{parents={}}{regions={0}} { + false, + proj_loans (s@1 : &r@0 mut (T)), + proj_loans (s@2 : &r@0 mut (T)) + } + Some (var@0) -> s@2 : &r@0 mut (T) ; + Some (b) -> false ; + Some (x) -> s@1 : &r@0 mut (T) ; + Some (y) -> ⊥ : &'_ mut (T) ; + Some (var@4) -> ⊥ : bool ; } +[Debug] test_function_symbolic: get_elem_test [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); + 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 ] @@ -125791,21 +123622,31 @@ copy x # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> @shared_loan({0}, 0: i32) ; - Some (px) -> ⌊shared@0⌋ ; + Some (x) -> ⊥ : i32 ; Some (y) -> ⊥ : i32 ; - Some (var@4) -> ⊥ : i32 ; - Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : i32 ; + Some (z) -> ⊥ : &'_ mut (i32) ; + Some (var@4) -> ⊥ : &'_ mut (i32) ; + Some (var@5) -> ⊥ : &'_ mut (i32) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : &'_ mut (i32) ; Some (var@8) -> ⊥ : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } [Debug] **About to evaluate statement**: [ - var@4 := copy x + x := 0: i32 ] **Context**: @@ -125815,14 +123656,24 @@ copy x # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> @shared_loan({0}, 0: i32) ; - Some (px) -> ⌊shared@0⌋ ; + Some (x) -> ⊥ : i32 ; Some (y) -> ⊥ : i32 ; - Some (var@4) -> ⊥ : i32 ; - Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : i32 ; + Some (z) -> ⊥ : &'_ mut (i32) ; + Some (var@4) -> ⊥ : &'_ mut (i32) ; + Some (var@5) -> ⊥ : &'_ mut (i32) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : &'_ mut (i32) ; Some (var@8) -> ⊥ : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } @@ -125835,28 +123686,52 @@ copy x # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> @shared_loan({0}, 0: i32) ; - Some (px) -> ⌊shared@0⌋ ; + Some (x) -> ⊥ : i32 ; Some (y) -> ⊥ : i32 ; - Some (var@4) -> ⊥ : i32 ; - Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : i32 ; + Some (z) -> ⊥ : &'_ mut (i32) ; + Some (var@4) -> ⊥ : &'_ mut (i32) ; + Some (var@5) -> ⊥ : &'_ mut (i32) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : &'_ mut (i32) ; Some (var@8) -> ⊥ : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } - op: -copy x +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); + 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 ] @@ -125867,21 +123742,31 @@ copy x # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> @shared_loan({0}, 0: i32) ; - Some (px) -> ⌊shared@0⌋ ; + Some (x) -> 0: i32 ; Some (y) -> ⊥ : i32 ; - Some (var@4) -> 0: i32 ; - Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : i32 ; + Some (z) -> ⊥ : &'_ mut (i32) ; + Some (var@4) -> ⊥ : &'_ mut (i32) ; + Some (var@5) -> ⊥ : &'_ mut (i32) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : &'_ mut (i32) ; Some (var@8) -> ⊥ : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } [Debug] **About to evaluate statement**: [ - y := move copy_int(move var@4) + y := 0: i32 ] **Context**: @@ -125891,14 +123776,24 @@ copy x # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> @shared_loan({0}, 0: i32) ; - Some (px) -> ⌊shared@0⌋ ; + Some (x) -> 0: i32 ; Some (y) -> ⊥ : i32 ; - Some (var@4) -> 0: i32 ; - Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : i32 ; + Some (z) -> ⊥ : &'_ mut (i32) ; + Some (var@4) -> ⊥ : &'_ mut (i32) ; + Some (var@5) -> ⊥ : &'_ mut (i32) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : &'_ mut (i32) ; Some (var@8) -> ⊥ : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } @@ -125911,27 +123806,51 @@ copy x # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> @shared_loan({0}, 0: i32) ; - Some (px) -> ⌊shared@0⌋ ; + Some (x) -> 0: i32 ; Some (y) -> ⊥ : i32 ; - Some (var@4) -> 0: i32 ; - Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : i32 ; + Some (z) -> ⊥ : &'_ mut (i32) ; + Some (var@4) -> ⊥ : &'_ mut (i32) ; + Some (var@5) -> ⊥ : &'_ mut (i32) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : &'_ mut (i32) ; Some (var@8) -> ⊥ : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } - op: -move var@4 +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); + 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 ] @@ -125942,21 +123861,31 @@ move var@4 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> @shared_loan({0}, 0: i32) ; - Some (px) -> ⌊shared@0⌋ ; - Some (y) -> s@0 : i32 ; - Some (var@4) -> ⊥ : i32 ; - Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : i32 ; + Some (x) -> 0: i32 ; + Some (y) -> 0: i32 ; + Some (z) -> ⊥ : &'_ mut (i32) ; + Some (var@4) -> ⊥ : &'_ mut (i32) ; + Some (var@5) -> ⊥ : &'_ mut (i32) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : &'_ mut (i32) ; Some (var@8) -> ⊥ : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } [Debug] **About to evaluate statement**: [ - var@7 := copy *(px) + var@5 := &mut x ] **Context**: @@ -125966,47 +123895,83 @@ move var@4 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> @shared_loan({0}, 0: i32) ; - Some (px) -> ⌊shared@0⌋ ; - Some (y) -> s@0 : i32 ; - Some (var@4) -> ⊥ : i32 ; - Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : i32 ; + Some (x) -> 0: i32 ; + Some (y) -> 0: i32 ; + Some (z) -> ⊥ : &'_ mut (i32) ; + Some (var@4) -> ⊥ : &'_ mut (i32) ; + Some (var@5) -> ⊥ : &'_ mut (i32) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : &'_ mut (i32) ; Some (var@8) -> ⊥ : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } -[Debug] eval_operand: -- ctx: +[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**: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> @shared_loan({0}, 0: i32) ; - Some (px) -> ⌊shared@0⌋ ; - Some (y) -> s@0 : i32 ; - Some (var@4) -> ⊥ : i32 ; - Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : i32 ; + Some (x) -> ⌊mut@0⌋ ; + Some (y) -> 0: i32 ; + Some (z) -> ⊥ : &'_ mut (i32) ; + Some (var@4) -> ⊥ : &'_ mut (i32) ; + Some (var@5) -> &mut@0 (0: i32) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : &'_ mut (i32) ; Some (var@8) -> ⊥ : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } -- op: -copy *(px) [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 + var@4 := &two-phase *(var@5) ] **Context**: @@ -126016,21 +123981,48 @@ copy *(px) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> @shared_loan({0}, 0: i32) ; - Some (px) -> ⌊shared@0⌋ ; - Some (y) -> s@0 : i32 ; - Some (var@4) -> ⊥ : i32 ; - Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> 0: i32 ; + Some (x) -> ⌊mut@0⌋ ; + Some (y) -> 0: i32 ; + Some (z) -> ⊥ : &'_ mut (i32) ; + Some (var@4) -> ⊥ : &'_ mut (i32) ; + Some (var@5) -> &mut@0 (0: i32) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : &'_ mut (i32) ; Some (var@8) -> ⊥ : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } [Debug] **About to evaluate statement**: [ - var@8 := copy y + 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**: @@ -126040,45 +124032,80 @@ copy *(px) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> @shared_loan({0}, 0: i32) ; - Some (px) -> ⌊shared@0⌋ ; - Some (y) -> s@0 : i32 ; - Some (var@4) -> ⊥ : i32 ; - Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> 0: i32 ; + Some (x) -> ⌊mut@0⌋ ; + Some (y) -> 0: i32 ; + Some (z) -> ⊥ : &'_ mut (i32) ; + Some (var@4) -> ⌊inactivated_mut@1⌋ ; + Some (var@5) -> &mut@0 (@shared_loan({1}, 0: i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : &'_ mut (i32) ; Some (var@8) -> ⊥ : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } -[Debug] eval_operand: -- ctx: +[Debug] +**About to evaluate statement**: [ + var@7 := &mut y +] + +**Context**: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> @shared_loan({0}, 0: i32) ; - Some (px) -> ⌊shared@0⌋ ; - Some (y) -> s@0 : i32 ; - Some (var@4) -> ⊥ : i32 ; - Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> 0: i32 ; + Some (x) -> ⌊mut@0⌋ ; + Some (y) -> 0: i32 ; + Some (z) -> ⊥ : &'_ mut (i32) ; + Some (var@4) -> ⌊inactivated_mut@1⌋ ; + Some (var@5) -> &mut@0 (@shared_loan({1}, 0: i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : &'_ mut (i32) ; Some (var@8) -> ⊥ : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } -- op: -copy y [Debug] **About to evaluate statement**: [ - var@6 := move var@7 == move var@8; - var@5 := ¬ move var@6; - assert(¬move var@5); + 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 ] @@ -126089,21 +124116,31 @@ copy y # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> @shared_loan({0}, 0: i32) ; - Some (px) -> ⌊shared@0⌋ ; - Some (y) -> s@0 : i32 ; - Some (var@4) -> ⊥ : i32 ; - Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> 0: i32 ; - Some (var@8) -> s@0 : i32 ; + Some (x) -> ⌊mut@0⌋ ; + Some (y) -> ⌊mut@2⌋ ; + Some (z) -> ⊥ : &'_ mut (i32) ; + Some (var@4) -> ⌊inactivated_mut@1⌋ ; + Some (var@5) -> &mut@0 (@shared_loan({1}, 0: i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> &mut@2 (0: i32) ; + Some (var@8) -> ⊥ : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } [Debug] **About to evaluate statement**: [ - var@6 := move var@7 == move var@8 + var@6 := &two-phase *(var@7) ] **Context**: @@ -126113,66 +124150,45 @@ copy y # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> @shared_loan({0}, 0: i32) ; - Some (px) -> ⌊shared@0⌋ ; - Some (y) -> s@0 : i32 ; - Some (var@4) -> ⊥ : i32 ; - Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> 0: i32 ; - Some (var@8) -> s@0 : i32 ; -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> @shared_loan({0}, 0: i32) ; - Some (px) -> ⌊shared@0⌋ ; - Some (y) -> s@0 : i32 ; - Some (var@4) -> ⊥ : i32 ; - Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> 0: i32 ; - Some (var@8) -> s@0 : i32 ; -} - - -- op: -move var@7 - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> @shared_loan({0}, 0: i32) ; - Some (px) -> ⌊shared@0⌋ ; - Some (y) -> s@0 : i32 ; - Some (var@4) -> ⊥ : i32 ; - Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : i32 ; - Some (var@8) -> s@0 : i32 ; + Some (x) -> ⌊mut@0⌋ ; + Some (y) -> ⌊mut@2⌋ ; + Some (z) -> ⊥ : &'_ mut (i32) ; + Some (var@4) -> ⌊inactivated_mut@1⌋ ; + Some (var@5) -> &mut@0 (@shared_loan({1}, 0: i32)) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> &mut@2 (0: i32) ; + Some (var@8) -> ⊥ : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } -- op: -move var@8 [Debug] **About to evaluate statement**: [ - var@5 := ¬ move var@6; - assert(¬move var@5); + 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 ] @@ -126183,21 +124199,31 @@ move var@8 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> @shared_loan({0}, 0: i32) ; - Some (px) -> ⌊shared@0⌋ ; - Some (y) -> s@0 : i32 ; - Some (var@4) -> ⊥ : i32 ; - Some (var@5) -> ⊥ : bool ; - Some (var@6) -> s@1 : bool ; - Some (var@7) -> ⊥ : i32 ; + Some (x) -> ⌊mut@0⌋ ; + Some (y) -> ⌊mut@2⌋ ; + Some (z) -> ⊥ : &'_ mut (i32) ; + Some (var@4) -> ⌊inactivated_mut@1⌋ ; + Some (var@5) -> &mut@0 (@shared_loan({1}, 0: i32)) ; + Some (var@6) -> ⌊inactivated_mut@3⌋ ; + Some (var@7) -> &mut@2 (@shared_loan({3}, 0: i32)) ; Some (var@8) -> ⊥ : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } [Debug] **About to evaluate statement**: [ - var@5 := ¬ move var@6 + z := move get_elem(true, move var@4, move var@6) ] **Context**: @@ -126207,18 +124233,32 @@ move var@8 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> @shared_loan({0}, 0: i32) ; - Some (px) -> ⌊shared@0⌋ ; - Some (y) -> s@0 : i32 ; - Some (var@4) -> ⊥ : i32 ; - Some (var@5) -> ⊥ : bool ; - Some (var@6) -> s@1 : bool ; - Some (var@7) -> ⊥ : i32 ; + Some (x) -> ⌊mut@0⌋ ; + Some (y) -> ⌊mut@2⌋ ; + Some (z) -> ⊥ : &'_ mut (i32) ; + Some (var@4) -> ⌊inactivated_mut@1⌋ ; + Some (var@5) -> &mut@0 (@shared_loan({1}, 0: i32)) ; + Some (var@6) -> ⌊inactivated_mut@3⌋ ; + Some (var@7) -> &mut@2 (@shared_loan({3}, 0: i32)) ; Some (var@8) -> ⊥ : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } +[Debug] activate_inactivated_mut_borrow: resulting value: +0: i32 +[Debug] activate_inactivated_mut_borrow: resulting value: +0: i32 [Debug] eval_operand: - ctx: # Ended regions: {} @@ -126227,68 +124267,61 @@ move var@8 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> @shared_loan({0}, 0: i32) ; - Some (px) -> ⌊shared@0⌋ ; - Some (y) -> s@0 : i32 ; - Some (var@4) -> ⊥ : i32 ; - Some (var@5) -> ⊥ : bool ; - Some (var@6) -> s@1 : bool ; - Some (var@7) -> ⊥ : i32 ; + Some (x) -> ⌊mut@0⌋ ; + Some (y) -> ⌊mut@2⌋ ; + Some (z) -> ⊥ : &'_ mut (i32) ; + Some (var@4) -> &mut@1 (0: i32) ; + Some (var@5) -> &mut@0 (⌊mut@1⌋) ; + Some (var@6) -> &mut@3 (0: i32) ; + Some (var@7) -> &mut@2 (⌊mut@3⌋) ; Some (var@8) -> ⊥ : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } - op: -move var@6 - -[Debug] -**About to evaluate statement**: [ - assert(¬move var@5); - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> @shared_loan({0}, 0: i32) ; - Some (px) -> ⌊shared@0⌋ ; - Some (y) -> s@0 : i32 ; - Some (var@4) -> ⊥ : i32 ; - Some (var@5) -> s@2 : bool ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : i32 ; - Some (var@8) -> ⊥ : i32 ; -} - - - -[Debug] -**About to evaluate statement**: [ - assert(¬move var@5) -] +true -**Context**: +[Debug] eval_operand: +- ctx: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> @shared_loan({0}, 0: i32) ; - Some (px) -> ⌊shared@0⌋ ; - Some (y) -> s@0 : i32 ; - Some (var@4) -> ⊥ : i32 ; - Some (var@5) -> s@2 : bool ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : i32 ; + Some (x) -> ⌊mut@0⌋ ; + Some (y) -> ⌊mut@2⌋ ; + Some (z) -> ⊥ : &'_ mut (i32) ; + Some (var@4) -> &mut@1 (0: i32) ; + Some (var@5) -> &mut@0 (⌊mut@1⌋) ; + Some (var@6) -> &mut@3 (0: i32) ; + Some (var@7) -> &mut@2 (⌊mut@3⌋) ; Some (var@8) -> ⊥ : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } +- op: +move var@4 [Debug] eval_operand: - ctx: @@ -126298,22 +124331,46 @@ move var@6 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> @shared_loan({0}, 0: i32) ; - Some (px) -> ⌊shared@0⌋ ; - Some (y) -> s@0 : i32 ; - Some (var@4) -> ⊥ : i32 ; - Some (var@5) -> true ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : i32 ; + Some (x) -> ⌊mut@0⌋ ; + Some (y) -> ⌊mut@2⌋ ; + Some (z) -> ⊥ : &'_ mut (i32) ; + Some (var@4) -> ⊥ : &'_ mut (i32) ; + Some (var@5) -> &mut@0 (⌊mut@1⌋) ; + Some (var@6) -> &mut@3 (0: i32) ; + Some (var@7) -> &mut@2 (⌊mut@3⌋) ; Some (var@8) -> ⊥ : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } - op: -move var@5 +move var@6 [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 ] @@ -126324,34 +124381,37 @@ move var@5 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> @shared_loan({0}, 0: i32) ; - Some (px) -> ⌊shared@0⌋ ; - Some (y) -> s@0 : i32 ; - Some (var@4) -> ⊥ : i32 ; - Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : i32 ; + Some (x) -> ⌊mut@0⌋ ; + Some (y) -> ⌊mut@2⌋ ; + Some (z) -> s@0 : &r@0 mut (i32) ; + Some (var@4) -> ⊥ : &'_ mut (i32) ; + Some (var@5) -> &mut@0 (⌊mut@1⌋) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> &mut@2 (⌊mut@3⌋) ; Some (var@8) -> ⊥ : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (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] 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 + var@8 := copy *(z) ] **Context**: @@ -126360,38 +124420,74 @@ move var@5 # Frame 0: { + Some (var@0) -> ⊥ : () ; + Some (x) -> ⌊mut@0⌋ ; + Some (y) -> ⌊mut@2⌋ ; + Some (z) -> s@0 : &r@0 mut (i32) ; + Some (var@4) -> ⊥ : &'_ mut (i32) ; + Some (var@5) -> &mut@0 (⌊mut@1⌋) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> &mut@2 (⌊mut@3⌋) ; + Some (var@8) -> ⊥ : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; abs@0{parents={}}{regions={0}} { - proj_loans (s@0 : &r@0 (test1::List)) + true, + &mut@1 (0: i32), + &mut@3 (0: i32), + proj_loans (s@0 : &r@0 mut (i32)) } - Some (var@0) -> ⊥ : bool ; - Some (l) -> s@0 : &r@0 (test1::List) ; - Some (var@2) -> ⊥ : isize ; } -[Debug] -**About to evaluate statement**: [ - var@2 := discriminant(*(l)) -] - -**Context**: +[Debug] eval_operand: +- ctx: # Ended regions: {} # 1 frame(s) # Frame 0: { + Some (var@0) -> ⊥ : () ; + Some (x) -> ⌊mut@0⌋ ; + Some (y) -> ⌊mut@2⌋ ; + Some (z) -> s@0 : &r@0 mut (i32) ; + Some (var@4) -> ⊥ : &'_ mut (i32) ; + Some (var@5) -> &mut@0 (⌊mut@1⌋) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> &mut@2 (⌊mut@3⌋) ; + Some (var@8) -> ⊥ : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; abs@0{parents={}}{regions={0}} { - proj_loans (s@0 : &r@0 (test1::List)) + true, + &mut@1 (0: i32), + &mut@3 (0: i32), + proj_loans (s@0 : &r@0 mut (i32)) } - Some (var@0) -> ⊥ : bool ; - Some (l) -> s@0 : &r@0 (test1::List) ; - Some (var@2) -> ⊥ : isize ; } +- op: +copy *(z) -[Debug] expand_symbolic_value: s@0 : &r@0 (test1::List) +[Debug] expand_symbolic_value: s@0 : &r@0 mut (i32) - original context: # Ended regions: {} @@ -126399,12 +124495,31 @@ move var@5 # Frame 0: { + Some (var@0) -> ⊥ : () ; + Some (x) -> ⌊mut@0⌋ ; + Some (y) -> ⌊mut@2⌋ ; + Some (z) -> s@0 : &r@0 mut (i32) ; + Some (var@4) -> ⊥ : &'_ mut (i32) ; + Some (var@5) -> &mut@0 (⌊mut@1⌋) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> &mut@2 (⌊mut@3⌋) ; + Some (var@8) -> ⊥ : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; abs@0{parents={}}{regions={0}} { - proj_loans (s@0 : &r@0 (test1::List)) + true, + &mut@1 (0: i32), + &mut@3 (0: i32), + proj_loans (s@0 : &r@0 mut (i32)) } - Some (var@0) -> ⊥ : bool ; - Some (l) -> s@0 : &r@0 (test1::List) ; - Some (var@2) -> ⊥ : isize ; } @@ -126414,28 +124529,49 @@ move var@5 # Frame 0: { + Some (var@0) -> ⊥ : () ; + Some (x) -> ⌊mut@0⌋ ; + Some (y) -> ⌊mut@2⌋ ; + Some (z) -> &mut@4 (s@1 : i32) ; + Some (var@4) -> ⊥ : &'_ mut (i32) ; + Some (var@5) -> &mut@0 (⌊mut@1⌋) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> &mut@2 (⌊mut@3⌋) ; + Some (var@8) -> ⊥ : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; abs@0{parents={}}{regions={0}} { - @shared_loan({0}, s@1 : test1::List, proj_loans (s@1 : test1::List)) + true, + &mut@1 (0: i32), + &mut@3 (0: i32), + ⌊mut@4, proj_loans (s@1 : i32)⌋ } - Some (var@0) -> ⊥ : bool ; - Some (l) -> ⌊shared@0⌋ ; - Some (var@2) -> ⊥ : isize ; } [Debug] **About to evaluate statement**: [ - switch (move var@2) { - 0: isize => { - var@0 := true - } - 1: isize => { - var@0 := false - } - _ => { - panic - } - }; + *(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 ] @@ -126445,29 +124581,38 @@ move var@5 # Frame 0: { + Some (var@0) -> ⊥ : () ; + Some (x) -> ⌊mut@0⌋ ; + Some (y) -> ⌊mut@2⌋ ; + Some (z) -> &mut@4 (s@1 : i32) ; + Some (var@4) -> ⊥ : &'_ mut (i32) ; + Some (var@5) -> &mut@0 (⌊mut@1⌋) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> &mut@2 (⌊mut@3⌋) ; + Some (var@8) -> s@1 : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; abs@0{parents={}}{regions={0}} { - @shared_loan({0}, test1::List::Cons { 0 = s@2 : T; 1 = s@3 : std::boxed::Box>; }, test1::List::Cons { 0 = proj_loans (s@2 : T); 1 = proj_loans (s@3 : std::boxed::Box>); }) + true, + &mut@1 (0: i32), + &mut@3 (0: i32), + ⌊mut@4, proj_loans (s@1 : i32)⌋ } - Some (var@0) -> ⊥ : bool ; - Some (l) -> ⌊shared@0⌋ ; - Some (var@2) -> 0: isize ; } [Debug] **About to evaluate statement**: [ - switch (move var@2) { - 0: isize => { - var@0 := true - } - 1: isize => { - var@0 := false - } - _ => { - panic - } - } + *(z) := copy var@8 + 1: i32 ] **Context**: @@ -126476,12 +124621,31 @@ move var@5 # Frame 0: { + Some (var@0) -> ⊥ : () ; + Some (x) -> ⌊mut@0⌋ ; + Some (y) -> ⌊mut@2⌋ ; + Some (z) -> &mut@4 (s@1 : i32) ; + Some (var@4) -> ⊥ : &'_ mut (i32) ; + Some (var@5) -> &mut@0 (⌊mut@1⌋) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> &mut@2 (⌊mut@3⌋) ; + Some (var@8) -> s@1 : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; abs@0{parents={}}{regions={0}} { - @shared_loan({0}, test1::List::Cons { 0 = s@2 : T; 1 = s@3 : std::boxed::Box>; }, test1::List::Cons { 0 = proj_loans (s@2 : T); 1 = proj_loans (s@3 : std::boxed::Box>); }) + true, + &mut@1 (0: i32), + &mut@3 (0: i32), + ⌊mut@4, proj_loans (s@1 : i32)⌋ } - Some (var@0) -> ⊥ : bool ; - Some (l) -> ⌊shared@0⌋ ; - Some (var@2) -> 0: isize ; } @@ -126493,38 +124657,36 @@ move var@5 # Frame 0: { + Some (var@0) -> ⊥ : () ; + Some (x) -> ⌊mut@0⌋ ; + Some (y) -> ⌊mut@2⌋ ; + Some (z) -> &mut@4 (s@1 : i32) ; + Some (var@4) -> ⊥ : &'_ mut (i32) ; + Some (var@5) -> &mut@0 (⌊mut@1⌋) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> &mut@2 (⌊mut@3⌋) ; + Some (var@8) -> s@1 : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; abs@0{parents={}}{regions={0}} { - @shared_loan({0}, test1::List::Cons { 0 = s@2 : T; 1 = s@3 : std::boxed::Box>; }, test1::List::Cons { 0 = proj_loans (s@2 : T); 1 = proj_loans (s@3 : std::boxed::Box>); }) + true, + &mut@1 (0: i32), + &mut@3 (0: i32), + ⌊mut@4, proj_loans (s@1 : i32)⌋ } - Some (var@0) -> ⊥ : bool ; - Some (l) -> ⌊shared@0⌋ ; - Some (var@2) -> 0: isize ; } - op: -move var@2 - -[Debug] -**About to evaluate statement**: [ - var@0 := true -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - abs@0{parents={}}{regions={0}} { - @shared_loan({0}, test1::List::Cons { 0 = s@2 : T; 1 = s@3 : std::boxed::Box>; }, test1::List::Cons { 0 = proj_loans (s@2 : T); 1 = proj_loans (s@3 : std::boxed::Box>); }) - } - Some (var@0) -> ⊥ : bool ; - Some (l) -> ⌊shared@0⌋ ; - Some (var@2) -> ⊥ : isize ; -} - - +copy var@8 [Debug] eval_operand: - ctx: @@ -126533,20 +124695,51 @@ move var@2 # Frame 0: { + Some (var@0) -> ⊥ : () ; + Some (x) -> ⌊mut@0⌋ ; + Some (y) -> ⌊mut@2⌋ ; + Some (z) -> &mut@4 (s@1 : i32) ; + Some (var@4) -> ⊥ : &'_ mut (i32) ; + Some (var@5) -> &mut@0 (⌊mut@1⌋) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> &mut@2 (⌊mut@3⌋) ; + Some (var@8) -> s@1 : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; abs@0{parents={}}{regions={0}} { - @shared_loan({0}, test1::List::Cons { 0 = s@2 : T; 1 = s@3 : std::boxed::Box>; }, test1::List::Cons { 0 = proj_loans (s@2 : T); 1 = proj_loans (s@3 : std::boxed::Box>); }) + true, + &mut@1 (0: i32), + &mut@3 (0: i32), + ⌊mut@4, proj_loans (s@1 : i32)⌋ } - Some (var@0) -> ⊥ : bool ; - Some (l) -> ⌊shared@0⌋ ; - Some (var@2) -> ⊥ : isize ; } - op: -true +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 ] @@ -126556,30 +124749,38 @@ true # Frame 0: { + Some (var@0) -> ⊥ : () ; + Some (x) -> ⌊mut@0⌋ ; + Some (y) -> ⌊mut@2⌋ ; + Some (z) -> &mut@4 (s@2 : i32) ; + Some (var@4) -> ⊥ : &'_ mut (i32) ; + Some (var@5) -> &mut@0 (⌊mut@1⌋) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> &mut@2 (⌊mut@3⌋) ; + Some (var@8) -> s@1 : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; abs@0{parents={}}{regions={0}} { - @shared_loan({0}, test1::List::Cons { 0 = s@2 : T; 1 = s@3 : std::boxed::Box>; }, test1::List::Cons { 0 = proj_loans (s@2 : T); 1 = proj_loans (s@3 : std::boxed::Box>); }) + true, + &mut@1 (0: i32), + &mut@3 (0: i32), + ⌊mut@4, proj_loans (s@1 : i32)⌋ } - Some (var@0) -> true ; - Some (l) -> ⌊shared@0⌋ ; - Some (var@2) -> ⊥ : isize ; } [Debug] **About to evaluate statement**: [ - switch (move var@2) { - 0: isize => { - var@0 := true - } - 1: isize => { - var@0 := false - } - _ => { - panic - } - }; - return + var@12 := copy *(z) ] **Context**: @@ -126588,69 +124789,127 @@ true # Frame 0: { + Some (var@0) -> ⊥ : () ; + Some (x) -> ⌊mut@0⌋ ; + Some (y) -> ⌊mut@2⌋ ; + Some (z) -> &mut@4 (s@2 : i32) ; + Some (var@4) -> ⊥ : &'_ mut (i32) ; + Some (var@5) -> &mut@0 (⌊mut@1⌋) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> &mut@2 (⌊mut@3⌋) ; + Some (var@8) -> s@1 : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; abs@0{parents={}}{regions={0}} { - @shared_loan({0}, test1::List::Nil, test1::List::Nil) + true, + &mut@1 (0: i32), + &mut@3 (0: i32), + ⌊mut@4, proj_loans (s@1 : i32)⌋ } - Some (var@0) -> ⊥ : bool ; - Some (l) -> ⌊shared@0⌋ ; - Some (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**: +[Debug] eval_operand: +- ctx: # Ended regions: {} # 1 frame(s) # Frame 0: { + Some (var@0) -> ⊥ : () ; + Some (x) -> ⌊mut@0⌋ ; + Some (y) -> ⌊mut@2⌋ ; + Some (z) -> &mut@4 (s@2 : i32) ; + Some (var@4) -> ⊥ : &'_ mut (i32) ; + Some (var@5) -> &mut@0 (⌊mut@1⌋) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> &mut@2 (⌊mut@3⌋) ; + Some (var@8) -> s@1 : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; abs@0{parents={}}{regions={0}} { - @shared_loan({0}, test1::List::Nil, test1::List::Nil) + true, + &mut@1 (0: i32), + &mut@3 (0: i32), + ⌊mut@4, proj_loans (s@1 : i32)⌋ } - Some (var@0) -> ⊥ : bool ; - Some (l) -> ⌊shared@0⌋ ; - Some (var@2) -> 1: isize ; } +- op: +copy *(z) -[Debug] eval_operand: -- ctx: +[Debug] +**About to evaluate statement**: [ + var@11 := move var@12 == 1: i32; + var@10 := ¬ move var@11; + assert(¬move var@10); + var@15 := copy x; + var@14 := move var@15 == 1: i32; + var@13 := ¬ move var@14; + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 0: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: # Ended regions: {} # 1 frame(s) # Frame 0: { + Some (var@0) -> ⊥ : () ; + Some (x) -> ⌊mut@0⌋ ; + Some (y) -> ⌊mut@2⌋ ; + Some (z) -> &mut@4 (s@2 : i32) ; + Some (var@4) -> ⊥ : &'_ mut (i32) ; + Some (var@5) -> &mut@0 (⌊mut@1⌋) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> &mut@2 (⌊mut@3⌋) ; + Some (var@8) -> s@1 : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> s@2 : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; abs@0{parents={}}{regions={0}} { - @shared_loan({0}, test1::List::Nil, test1::List::Nil) + true, + &mut@1 (0: i32), + &mut@3 (0: i32), + ⌊mut@4, proj_loans (s@1 : i32)⌋ } - Some (var@0) -> ⊥ : bool ; - Some (l) -> ⌊shared@0⌋ ; - Some (var@2) -> 1: isize ; } -- op: -move var@2 [Debug] **About to evaluate statement**: [ - var@0 := false + var@11 := move var@12 == 1: i32 ] **Context**: @@ -126659,12 +124918,31 @@ move var@2 # Frame 0: { + Some (var@0) -> ⊥ : () ; + Some (x) -> ⌊mut@0⌋ ; + Some (y) -> ⌊mut@2⌋ ; + Some (z) -> &mut@4 (s@2 : i32) ; + Some (var@4) -> ⊥ : &'_ mut (i32) ; + Some (var@5) -> &mut@0 (⌊mut@1⌋) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> &mut@2 (⌊mut@3⌋) ; + Some (var@8) -> s@1 : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> s@2 : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; abs@0{parents={}}{regions={0}} { - @shared_loan({0}, test1::List::Nil, test1::List::Nil) + true, + &mut@1 (0: i32), + &mut@3 (0: i32), + ⌊mut@4, proj_loans (s@1 : i32)⌋ } - Some (var@0) -> ⊥ : bool ; - Some (l) -> ⌊shared@0⌋ ; - Some (var@2) -> ⊥ : isize ; } @@ -126676,53 +124954,87 @@ move var@2 # Frame 0: { + Some (var@0) -> ⊥ : () ; + Some (x) -> ⌊mut@0⌋ ; + Some (y) -> ⌊mut@2⌋ ; + Some (z) -> &mut@4 (s@2 : i32) ; + Some (var@4) -> ⊥ : &'_ mut (i32) ; + Some (var@5) -> &mut@0 (⌊mut@1⌋) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> &mut@2 (⌊mut@3⌋) ; + Some (var@8) -> s@1 : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> s@2 : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; abs@0{parents={}}{regions={0}} { - @shared_loan({0}, test1::List::Nil, test1::List::Nil) + true, + &mut@1 (0: i32), + &mut@3 (0: i32), + ⌊mut@4, proj_loans (s@1 : i32)⌋ } - Some (var@0) -> ⊥ : bool ; - Some (l) -> ⌊shared@0⌋ ; - Some (var@2) -> ⊥ : isize ; } - op: -false - -[Debug] -**About to evaluate statement**: [ - return -] +move var@12 -**Context**: +[Debug] eval_operand: +- ctx: # Ended regions: {} # 1 frame(s) # Frame 0: { + Some (var@0) -> ⊥ : () ; + Some (x) -> ⌊mut@0⌋ ; + Some (y) -> ⌊mut@2⌋ ; + Some (z) -> &mut@4 (s@2 : i32) ; + Some (var@4) -> ⊥ : &'_ mut (i32) ; + Some (var@5) -> &mut@0 (⌊mut@1⌋) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> &mut@2 (⌊mut@3⌋) ; + Some (var@8) -> s@1 : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; abs@0{parents={}}{regions={0}} { - @shared_loan({0}, test1::List::Nil, test1::List::Nil) + true, + &mut@1 (0: i32), + &mut@3 (0: i32), + ⌊mut@4, proj_loans (s@1 : i32)⌋ } - Some (var@0) -> false ; - Some (l) -> ⌊shared@0⌋ ; - Some (var@2) -> ⊥ : isize ; } +- op: +1: i32 -[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); + 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 ] @@ -126733,20 +125045,37 @@ false # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (l) -> ⊥ : test1::List ; - Some (var@2) -> ⊥ : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; - Some (var@4) -> ⊥ : bool ; - Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⊥ : &'_ (test1::List) ; - Some (var@7) -> ⊥ : &'_ (test1::List) ; + Some (x) -> ⌊mut@0⌋ ; + Some (y) -> ⌊mut@2⌋ ; + Some (z) -> &mut@4 (s@2 : i32) ; + Some (var@4) -> ⊥ : &'_ mut (i32) ; + Some (var@5) -> &mut@0 (⌊mut@1⌋) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> &mut@2 (⌊mut@3⌋) ; + Some (var@8) -> s@1 : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> s@3 : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (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**: [ - set_discriminant(var@3, 1) + var@10 := ¬ move var@11 ] **Context**: @@ -126756,78 +125085,34 @@ false # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (l) -> ⊥ : test1::List ; - Some (var@2) -> ⊥ : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; - Some (var@4) -> ⊥ : bool ; - Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⊥ : &'_ (test1::List) ; - Some (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**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (l) -> ⊥ : test1::List ; - Some (var@2) -> ⊥ : std::boxed::Box> ; - Some (var@3) -> test1::List::Nil ; - Some (var@4) -> ⊥ : bool ; - Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⊥ : &'_ (test1::List) ; - Some (var@7) -> ⊥ : &'_ (test1::List) ; -} - - - -[Debug] -**About to evaluate statement**: [ - var@2 := move alloc::boxed::Box>::new(move var@3) -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (l) -> ⊥ : test1::List ; - Some (var@2) -> ⊥ : std::boxed::Box> ; - Some (var@3) -> test1::List::Nil ; - Some (var@4) -> ⊥ : bool ; - Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⊥ : &'_ (test1::List) ; - Some (var@7) -> ⊥ : &'_ (test1::List) ; + Some (x) -> ⌊mut@0⌋ ; + Some (y) -> ⌊mut@2⌋ ; + Some (z) -> &mut@4 (s@2 : i32) ; + Some (var@4) -> ⊥ : &'_ mut (i32) ; + Some (var@5) -> &mut@0 (⌊mut@1⌋) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> &mut@2 (⌊mut@3⌋) ; + Some (var@8) -> s@1 : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> s@3 : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (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_non_local_function_call: -- fid:CfimAst.BoxNew -- type_params: [test1::List] -- args: [move var@3] -- dest: var@2 [Debug] eval_operand: - ctx: # Ended regions: {} @@ -126836,30 +125121,47 @@ false # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (l) -> ⊥ : test1::List ; - Some (var@2) -> ⊥ : std::boxed::Box> ; - Some (var@3) -> test1::List::Nil ; - Some (var@4) -> ⊥ : bool ; - Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⊥ : &'_ (test1::List) ; - Some (var@7) -> ⊥ : &'_ (test1::List) ; + Some (x) -> ⌊mut@0⌋ ; + Some (y) -> ⌊mut@2⌋ ; + Some (z) -> &mut@4 (s@2 : i32) ; + Some (var@4) -> ⊥ : &'_ mut (i32) ; + Some (var@5) -> &mut@0 (⌊mut@1⌋) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> &mut@2 (⌊mut@3⌋) ; + Some (var@8) -> s@1 : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> s@3 : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (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@3 +move var@11 [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); + 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 ] @@ -126870,20 +125172,37 @@ move var@3 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (l) -> ⊥ : test1::List ; - Some (var@2) -> s@0 : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; - Some (var@4) -> ⊥ : bool ; - Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⊥ : &'_ (test1::List) ; - Some (var@7) -> ⊥ : &'_ (test1::List) ; + Some (x) -> ⌊mut@0⌋ ; + Some (y) -> ⌊mut@2⌋ ; + Some (z) -> &mut@4 (s@2 : i32) ; + Some (var@4) -> ⊥ : &'_ mut (i32) ; + Some (var@5) -> &mut@0 (⌊mut@1⌋) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> &mut@2 (⌊mut@3⌋) ; + Some (var@8) -> s@1 : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> s@4 : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (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**: [ - (l as test1::List::Cons).0 := 0: i32 + assert(¬move var@10) ] **Context**: @@ -126893,13 +125212,30 @@ move var@3 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (l) -> ⊥ : test1::List ; - Some (var@2) -> s@0 : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; - Some (var@4) -> ⊥ : bool ; - Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⊥ : &'_ (test1::List) ; - Some (var@7) -> ⊥ : &'_ (test1::List) ; + Some (x) -> ⌊mut@0⌋ ; + Some (y) -> ⌊mut@2⌋ ; + Some (z) -> &mut@4 (s@2 : i32) ; + Some (var@4) -> ⊥ : &'_ mut (i32) ; + Some (var@5) -> &mut@0 (⌊mut@1⌋) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> &mut@2 (⌊mut@3⌋) ; + Some (var@8) -> s@1 : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> s@4 : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; + abs@0{parents={}}{regions={0}} { + true, + &mut@1 (0: i32), + &mut@3 (0: i32), + ⌊mut@4, proj_loans (s@1 : i32)⌋ + } } @@ -126912,32 +125248,46 @@ move var@3 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (l) -> ⊥ : test1::List ; - Some (var@2) -> s@0 : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; - Some (var@4) -> ⊥ : bool ; - Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⊥ : &'_ (test1::List) ; - Some (var@7) -> ⊥ : &'_ (test1::List) ; + Some (x) -> ⌊mut@0⌋ ; + Some (y) -> ⌊mut@2⌋ ; + Some (z) -> &mut@4 (s@2 : i32) ; + Some (var@4) -> ⊥ : &'_ mut (i32) ; + Some (var@5) -> &mut@0 (⌊mut@1⌋) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> &mut@2 (⌊mut@3⌋) ; + Some (var@8) -> s@1 : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> true ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (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: -0: i32 +move var@10 -[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); + 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 ] @@ -126948,20 +125298,37 @@ ty: (Types.Adt ((Types.AdtId 1), [], [(Types.Integer Types.I32)])) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (l) -> test1::List::Cons { 0 = 0: i32; 1 = ⊥ : std::boxed::Box>; } ; - Some (var@2) -> s@0 : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; - Some (var@4) -> ⊥ : bool ; - Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⊥ : &'_ (test1::List) ; - Some (var@7) -> ⊥ : &'_ (test1::List) ; + Some (x) -> ⌊mut@0⌋ ; + Some (y) -> ⌊mut@2⌋ ; + Some (z) -> &mut@4 (s@2 : i32) ; + Some (var@4) -> ⊥ : &'_ mut (i32) ; + Some (var@5) -> &mut@0 (⌊mut@1⌋) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> &mut@2 (⌊mut@3⌋) ; + Some (var@8) -> s@1 : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (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**: [ - (l as test1::List::Cons).1 := move var@2 + var@15 := copy x ] **Context**: @@ -126971,13 +125338,30 @@ ty: (Types.Adt ((Types.AdtId 1), [], [(Types.Integer Types.I32)])) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (l) -> test1::List::Cons { 0 = 0: i32; 1 = ⊥ : std::boxed::Box>; } ; - Some (var@2) -> s@0 : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; - Some (var@4) -> ⊥ : bool ; - Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⊥ : &'_ (test1::List) ; - Some (var@7) -> ⊥ : &'_ (test1::List) ; + Some (x) -> ⌊mut@0⌋ ; + Some (y) -> ⌊mut@2⌋ ; + Some (z) -> &mut@4 (s@2 : i32) ; + Some (var@4) -> ⊥ : &'_ mut (i32) ; + Some (var@5) -> &mut@0 (⌊mut@1⌋) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> &mut@2 (⌊mut@3⌋) ; + Some (var@8) -> s@1 : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; + abs@0{parents={}}{regions={0}} { + true, + &mut@1 (0: i32), + &mut@3 (0: i32), + ⌊mut@4, proj_loans (s@1 : i32)⌋ + } } @@ -126990,664 +125374,1091 @@ ty: (Types.Adt ((Types.AdtId 1), [], [(Types.Integer Types.I32)])) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (l) -> test1::List::Cons { 0 = 0: i32; 1 = ⊥ : std::boxed::Box>; } ; - Some (var@2) -> s@0 : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; - Some (var@4) -> ⊥ : bool ; - Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⊥ : &'_ (test1::List) ; - Some (var@7) -> ⊥ : &'_ (test1::List) ; + Some (x) -> ⌊mut@0⌋ ; + Some (y) -> ⌊mut@2⌋ ; + Some (z) -> &mut@4 (s@2 : i32) ; + Some (var@4) -> ⊥ : &'_ mut (i32) ; + Some (var@5) -> &mut@0 (⌊mut@1⌋) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> &mut@2 (⌊mut@3⌋) ; + Some (var@8) -> s@1 : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (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@2 - -[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 -] +copy x -**Context**: +[Debug] end borrow: 0: +- original context: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (l) -> test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box>; } ; - Some (var@2) -> ⊥ : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; - Some (var@4) -> ⊥ : bool ; - Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⊥ : &'_ (test1::List) ; - Some (var@7) -> ⊥ : &'_ (test1::List) ; + Some (x) -> ⌊mut@0⌋ ; + Some (y) -> ⌊mut@2⌋ ; + Some (z) -> &mut@4 (s@2 : i32) ; + Some (var@4) -> ⊥ : &'_ mut (i32) ; + Some (var@5) -> &mut@0 (⌊mut@1⌋) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> &mut@2 (⌊mut@3⌋) ; + Some (var@8) -> s@1 : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (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**: [ - set_discriminant(l, 0) -] - -**Context**: +[Debug] end borrow: 0: found outer borrows/abs:(InterpreterBorrowsCore.InnerLoans (InterpreterBorrowsCore.Borrow 1)) +[Debug] end borrow: 1: +- original context: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (l) -> test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box>; } ; - Some (var@2) -> ⊥ : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; - Some (var@4) -> ⊥ : bool ; - Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⊥ : &'_ (test1::List) ; - Some (var@7) -> ⊥ : &'_ (test1::List) ; + Some (x) -> ⌊mut@0⌋ ; + Some (y) -> ⌊mut@2⌋ ; + Some (z) -> &mut@4 (s@2 : i32) ; + Some (var@4) -> ⊥ : &'_ mut (i32) ; + Some (var@5) -> &mut@0 (⌊mut@1⌋) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> &mut@2 (⌊mut@3⌋) ; + Some (var@8) -> s@1 : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (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@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**: +[Debug] end borrow: 1: found outer borrows/abs:(InterpreterBorrowsCore.OuterAbs 0) +[Debug] end_abstraction: 0 +- original context: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (l) -> test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box>; } ; - Some (var@2) -> ⊥ : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; - Some (var@4) -> ⊥ : bool ; - Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⊥ : &'_ (test1::List) ; - Some (var@7) -> ⊥ : &'_ (test1::List) ; + Some (x) -> ⌊mut@0⌋ ; + Some (y) -> ⌊mut@2⌋ ; + Some (z) -> &mut@4 (s@2 : i32) ; + Some (var@4) -> ⊥ : &'_ mut (i32) ; + Some (var@5) -> &mut@0 (⌊mut@1⌋) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> &mut@2 (⌊mut@3⌋) ; + Some (var@8) -> s@1 : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (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@7 := &l -] - -**Context**: +[Debug] end_abstraction: 0 +- context after parent abstractions ended: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (l) -> test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box>; } ; - Some (var@2) -> ⊥ : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; - Some (var@4) -> ⊥ : bool ; - Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⊥ : &'_ (test1::List) ; - Some (var@7) -> ⊥ : &'_ (test1::List) ; + Some (x) -> ⌊mut@0⌋ ; + Some (y) -> ⌊mut@2⌋ ; + Some (z) -> &mut@4 (s@2 : i32) ; + Some (var@4) -> ⊥ : &'_ mut (i32) ; + Some (var@5) -> &mut@0 (⌊mut@1⌋) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> &mut@2 (⌊mut@3⌋) ; + Some (var@8) -> s@1 : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (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@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**: +[Debug] end borrow: 4: +- original context: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (l) -> @shared_loan({0}, test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box>; }) ; - Some (var@2) -> ⊥ : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; - Some (var@4) -> ⊥ : bool ; - Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⊥ : &'_ (test1::List) ; - Some (var@7) -> ⌊shared@0⌋ ; + Some (x) -> ⌊mut@0⌋ ; + Some (y) -> ⌊mut@2⌋ ; + Some (z) -> &mut@4 (s@2 : i32) ; + Some (var@4) -> ⊥ : &'_ mut (i32) ; + Some (var@5) -> &mut@0 (⌊mut@1⌋) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> &mut@2 (⌊mut@3⌋) ; + Some (var@8) -> s@1 : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (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@6 := copy var@7 -] - -**Context**: +[Debug] give_back: +- bid: 4 +- content: &mut@4 (s@2 : i32) +- context: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (l) -> @shared_loan({0}, test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box>; }) ; - Some (var@2) -> ⊥ : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; - Some (var@4) -> ⊥ : bool ; - Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⊥ : &'_ (test1::List) ; - Some (var@7) -> ⌊shared@0⌋ ; + Some (x) -> ⌊mut@0⌋ ; + Some (y) -> ⌊mut@2⌋ ; + Some (z) -> ⊥ : &'_ mut (i32) ; + Some (var@4) -> ⊥ : &'_ mut (i32) ; + Some (var@5) -> &mut@0 (⌊mut@1⌋) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> &mut@2 (⌊mut@3⌋) ; + Some (var@8) -> s@1 : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (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: +[Debug] give_back_value: +- bid: 4 +- value: s@2 : i32 +- context: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (l) -> @shared_loan({0}, test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box>; }) ; - Some (var@2) -> ⊥ : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; - Some (var@4) -> ⊥ : bool ; - Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⊥ : &'_ (test1::List) ; - Some (var@7) -> ⌊shared@0⌋ ; + Some (x) -> ⌊mut@0⌋ ; + Some (y) -> ⌊mut@2⌋ ; + Some (z) -> ⊥ : &'_ mut (i32) ; + Some (var@4) -> ⊥ : &'_ mut (i32) ; + Some (var@5) -> &mut@0 (⌊mut@1⌋) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> &mut@2 (⌊mut@3⌋) ; + Some (var@8) -> s@1 : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (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@7 - -[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**: +[Debug] end_abstraction: 0 +- context after loans ended: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (l) -> @shared_loan({0, 1}, test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box>; }) ; - Some (var@2) -> ⊥ : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; - Some (var@4) -> ⊥ : bool ; - Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⌊shared@1⌋ ; - Some (var@7) -> ⌊shared@0⌋ ; + Some (x) -> ⌊mut@0⌋ ; + Some (y) -> ⌊mut@2⌋ ; + Some (z) -> ⊥ : &'_ mut (i32) ; + Some (var@4) -> ⊥ : &'_ mut (i32) ; + Some (var@5) -> &mut@0 (⌊mut@1⌋) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> &mut@2 (⌊mut@3⌋) ; + Some (var@8) -> s@1 : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; + abs@0{parents={}}{regions={0}} { + true, + &mut@1 (0: i32), + &mut@3 (0: i32), + @ended_mut_loan{ given_back=proj_borrows (s@2 : i32 <: i32); child=proj_loans (s@1 : i32) } + } } - - -[Debug] -**About to evaluate statement**: [ - var@5 := move is_cons(move var@6) -] - -**Context**: +[Debug] give_back_value: +- bid: 1 +- value: s@5 : i32 +- context: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (l) -> @shared_loan({0, 1}, test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box>; }) ; - Some (var@2) -> ⊥ : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; - Some (var@4) -> ⊥ : bool ; - Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⌊shared@1⌋ ; - Some (var@7) -> ⌊shared@0⌋ ; + Some (x) -> ⌊mut@0⌋ ; + Some (y) -> ⌊mut@2⌋ ; + Some (z) -> ⊥ : &'_ mut (i32) ; + Some (var@4) -> ⊥ : &'_ mut (i32) ; + Some (var@5) -> &mut@0 (⌊mut@1⌋) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> &mut@2 (⌊mut@3⌋) ; + Some (var@8) -> s@1 : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; + abs@0{parents={}}{regions={0}} { + true, + ⊥ : &r@0 mut (i32), + &mut@3 (0: i32), + @ended_mut_loan{ given_back=proj_borrows (s@2 : i32 <: i32); child=proj_loans (s@1 : i32) } + } } - -[Debug] eval_operand: -- ctx: +[Debug] give_back_value: +- bid: 3 +- value: s@6 : i32 +- context: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (l) -> @shared_loan({0, 1}, test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box>; }) ; - Some (var@2) -> ⊥ : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; - Some (var@4) -> ⊥ : bool ; - Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⌊shared@1⌋ ; - Some (var@7) -> ⌊shared@0⌋ ; + Some (x) -> ⌊mut@0⌋ ; + Some (y) -> ⌊mut@2⌋ ; + Some (z) -> ⊥ : &'_ mut (i32) ; + Some (var@4) -> ⊥ : &'_ mut (i32) ; + Some (var@5) -> &mut@0 (s@5 : i32) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> &mut@2 (⌊mut@3⌋) ; + Some (var@8) -> s@1 : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; + abs@0{parents={}}{regions={0}} { + true, + ⊥ : &r@0 mut (i32), + ⊥ : &r@0 mut (i32), + @ended_mut_loan{ given_back=proj_borrows (s@2 : i32 <: i32); child=proj_loans (s@1 : i32) } + } } -- op: -move var@6 - -[Debug] -**About to evaluate statement**: [ - var@4 := ¬ move var@5; - assert(¬move var@4); - drop(l); - return -] - -**Context**: +[Debug] end_abstraction: 0 +- original context: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (l) -> @shared_loan({0, 1}, test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box>; }) ; - Some (var@2) -> ⊥ : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; - Some (var@4) -> ⊥ : bool ; - Some (var@5) -> s@1 : bool ; - Some (var@6) -> ⊥ : &'_ (test1::List) ; - Some (var@7) -> ⌊shared@0⌋ ; + Some (x) -> ⌊mut@0⌋ ; + Some (y) -> ⌊mut@2⌋ ; + Some (z) -> &mut@4 (s@2 : i32) ; + Some (var@4) -> ⊥ : &'_ mut (i32) ; + Some (var@5) -> &mut@0 (⌊mut@1⌋) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> &mut@2 (⌊mut@3⌋) ; + Some (var@8) -> s@1 : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; abs@0{parents={}}{regions={0}} { - ⌊shared@1⌋, - proj_loans (s@1 : bool) + true, + &mut@1 (0: i32), + &mut@3 (0: i32), + ⌊mut@4, proj_loans (s@1 : i32)⌋ } } - -[Debug] -**About to evaluate statement**: [ - var@4 := ¬ move var@5 -] - -**Context**: -# Ended regions: {} +- new context: +# Ended regions: {0} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (l) -> @shared_loan({0, 1}, test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box>; }) ; - Some (var@2) -> ⊥ : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; - Some (var@4) -> ⊥ : bool ; - Some (var@5) -> s@1 : bool ; - Some (var@6) -> ⊥ : &'_ (test1::List) ; - Some (var@7) -> ⌊shared@0⌋ ; - abs@0{parents={}}{regions={0}} { - ⌊shared@1⌋, - proj_loans (s@1 : bool) - } + Some (x) -> ⌊mut@0⌋ ; + Some (y) -> ⌊mut@2⌋ ; + Some (z) -> ⊥ : &'_ mut (i32) ; + Some (var@4) -> ⊥ : &'_ mut (i32) ; + Some (var@5) -> &mut@0 (s@5 : i32) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> &mut@2 (s@6 : i32) ; + Some (var@8) -> s@1 : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } - - -[Debug] eval_operand: -- ctx: -# Ended regions: {} +[Debug] end borrow: 0: +- original context: +# Ended regions: {0} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (l) -> @shared_loan({0, 1}, test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box>; }) ; - Some (var@2) -> ⊥ : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; - Some (var@4) -> ⊥ : bool ; - Some (var@5) -> s@1 : bool ; - Some (var@6) -> ⊥ : &'_ (test1::List) ; - Some (var@7) -> ⌊shared@0⌋ ; - abs@0{parents={}}{regions={0}} { - ⌊shared@1⌋, - proj_loans (s@1 : bool) - } + Some (x) -> ⌊mut@0⌋ ; + Some (y) -> ⌊mut@2⌋ ; + Some (z) -> ⊥ : &'_ mut (i32) ; + Some (var@4) -> ⊥ : &'_ mut (i32) ; + Some (var@5) -> &mut@0 (s@5 : i32) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> &mut@2 (s@6 : i32) ; + Some (var@8) -> s@1 : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } +[Debug] give_back: +- bid: 0 +- content: &mut@0 (s@5 : i32) +- context: +# Ended regions: {0} +# 1 frame(s) -- op: -move var@5 +# Frame 0: +{ + Some (var@0) -> ⊥ : () ; + Some (x) -> ⌊mut@0⌋ ; + Some (y) -> ⌊mut@2⌋ ; + Some (z) -> ⊥ : &'_ mut (i32) ; + Some (var@4) -> ⊥ : &'_ mut (i32) ; + Some (var@5) -> ⊥ : &'_ mut (i32) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> &mut@2 (s@6 : i32) ; + Some (var@8) -> s@1 : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; +} -[Debug] -**About to evaluate statement**: [ - assert(¬move var@4); - drop(l); - return -] -**Context**: -# Ended regions: {} +[Debug] give_back_value: +- bid: 0 +- value: s@5 : i32 +- context: +# Ended regions: {0} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (l) -> @shared_loan({0, 1}, test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box>; }) ; - Some (var@2) -> ⊥ : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; - Some (var@4) -> s@2 : bool ; - Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⊥ : &'_ (test1::List) ; - Some (var@7) -> ⌊shared@0⌋ ; - abs@0{parents={}}{regions={0}} { - ⌊shared@1⌋, - proj_loans (s@1 : bool) - } + Some (x) -> ⌊mut@0⌋ ; + Some (y) -> ⌊mut@2⌋ ; + Some (z) -> ⊥ : &'_ mut (i32) ; + Some (var@4) -> ⊥ : &'_ mut (i32) ; + Some (var@5) -> ⊥ : &'_ mut (i32) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> &mut@2 (s@6 : i32) ; + Some (var@8) -> s@1 : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } - [Debug] **About to evaluate statement**: [ - assert(¬move var@4) + var@14 := move var@15 == 1: i32; + var@13 := ¬ move var@14; + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 0: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return ] **Context**: -# Ended regions: {} +# Ended regions: {0} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (l) -> @shared_loan({0, 1}, test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box>; }) ; - Some (var@2) -> ⊥ : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; - Some (var@4) -> s@2 : bool ; - Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⊥ : &'_ (test1::List) ; - Some (var@7) -> ⌊shared@0⌋ ; - abs@0{parents={}}{regions={0}} { - ⌊shared@1⌋, - proj_loans (s@1 : bool) - } + Some (x) -> s@5 : i32 ; + Some (y) -> ⌊mut@2⌋ ; + Some (z) -> ⊥ : &'_ mut (i32) ; + Some (var@4) -> ⊥ : &'_ mut (i32) ; + Some (var@5) -> ⊥ : &'_ mut (i32) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> &mut@2 (s@6 : i32) ; + Some (var@8) -> s@1 : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> s@5 : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } -[Debug] eval_operand: -- ctx: -# Ended regions: {} +[Debug] +**About to evaluate statement**: [ + var@14 := move var@15 == 1: i32 +] + +**Context**: +# Ended regions: {0} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (l) -> @shared_loan({0, 1}, test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box>; }) ; - Some (var@2) -> ⊥ : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; - Some (var@4) -> true ; - Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⊥ : &'_ (test1::List) ; - Some (var@7) -> ⌊shared@0⌋ ; - abs@0{parents={}}{regions={0}} { - ⌊shared@1⌋, - proj_loans (s@1 : bool) - } + Some (x) -> s@5 : i32 ; + Some (y) -> ⌊mut@2⌋ ; + Some (z) -> ⊥ : &'_ mut (i32) ; + Some (var@4) -> ⊥ : &'_ mut (i32) ; + Some (var@5) -> ⊥ : &'_ mut (i32) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> &mut@2 (s@6 : i32) ; + Some (var@8) -> s@1 : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> s@5 : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; +} + + + +[Debug] eval_operand: +- ctx: +# Ended regions: {0} +# 1 frame(s) + +# Frame 0: +{ + Some (var@0) -> ⊥ : () ; + Some (x) -> s@5 : i32 ; + Some (y) -> ⌊mut@2⌋ ; + Some (z) -> ⊥ : &'_ mut (i32) ; + Some (var@4) -> ⊥ : &'_ mut (i32) ; + Some (var@5) -> ⊥ : &'_ mut (i32) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> &mut@2 (s@6 : i32) ; + Some (var@8) -> s@1 : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> s@5 : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } - op: -move var@4 +move var@15 + +[Debug] eval_operand: +- ctx: +# Ended regions: {0} +# 1 frame(s) + +# Frame 0: +{ + Some (var@0) -> ⊥ : () ; + Some (x) -> s@5 : i32 ; + Some (y) -> ⌊mut@2⌋ ; + Some (z) -> ⊥ : &'_ mut (i32) ; + Some (var@4) -> ⊥ : &'_ mut (i32) ; + Some (var@5) -> ⊥ : &'_ mut (i32) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> &mut@2 (s@6 : i32) ; + Some (var@8) -> s@1 : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; +} + + +- op: +1: i32 [Debug] **About to evaluate statement**: [ - drop(l); + var@13 := ¬ move var@14; + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 0: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); return ] **Context**: -# Ended regions: {} +# Ended regions: {0} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (l) -> @shared_loan({0, 1}, test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box>; }) ; - Some (var@2) -> ⊥ : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; - Some (var@4) -> ⊥ : bool ; - Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⊥ : &'_ (test1::List) ; - Some (var@7) -> ⌊shared@0⌋ ; - abs@0{parents={}}{regions={0}} { - ⌊shared@1⌋, - proj_loans (s@1 : bool) - } + Some (x) -> s@5 : i32 ; + Some (y) -> ⌊mut@2⌋ ; + Some (z) -> ⊥ : &'_ mut (i32) ; + Some (var@4) -> ⊥ : &'_ mut (i32) ; + Some (var@5) -> ⊥ : &'_ mut (i32) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> &mut@2 (s@6 : i32) ; + Some (var@8) -> s@1 : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> s@7 : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } [Debug] **About to evaluate statement**: [ - drop(l) + var@13 := ¬ move var@14 ] **Context**: -# Ended regions: {} +# Ended regions: {0} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (l) -> @shared_loan({0, 1}, test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box>; }) ; - Some (var@2) -> ⊥ : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; - Some (var@4) -> ⊥ : bool ; - Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⊥ : &'_ (test1::List) ; - Some (var@7) -> ⌊shared@0⌋ ; - abs@0{parents={}}{regions={0}} { - ⌊shared@1⌋, - proj_loans (s@1 : bool) - } + Some (x) -> s@5 : i32 ; + Some (y) -> ⌊mut@2⌋ ; + Some (z) -> ⊥ : &'_ mut (i32) ; + Some (var@4) -> ⊥ : &'_ mut (i32) ; + Some (var@5) -> ⊥ : &'_ mut (i32) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> &mut@2 (s@6 : i32) ; + Some (var@8) -> s@1 : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> s@7 : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } -[Debug] drop_value: place: l -[Debug] end borrow: 0: -- original context: -# Ended regions: {} +[Debug] eval_operand: +- ctx: +# Ended regions: {0} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (l) -> ⊥ : test1::List ; - Some (var@2) -> ⊥ : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; - Some (var@4) -> ⊥ : bool ; - Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⊥ : &'_ (test1::List) ; - Some (var@7) -> ⌊shared@0⌋ ; - abs@0{parents={}}{regions={0}} { - ⌊shared@1⌋, - proj_loans (s@1 : bool) - } - None -> @shared_loan({0, 1}, test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box>; }) ; + Some (x) -> s@5 : i32 ; + Some (y) -> ⌊mut@2⌋ ; + Some (z) -> ⊥ : &'_ mut (i32) ; + Some (var@4) -> ⊥ : &'_ mut (i32) ; + Some (var@5) -> ⊥ : &'_ mut (i32) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> &mut@2 (s@6 : i32) ; + Some (var@8) -> s@1 : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> s@7 : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } -[Debug] give_back: -- bid: 0 -- content: ⌊shared@0⌋ -- context: -# Ended regions: {} + +- op: +move var@14 + +[Debug] +**About to evaluate statement**: [ + assert(¬move var@13); + var@18 := copy y; + var@17 := move var@18 == 0: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {0} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (l) -> ⊥ : test1::List ; - Some (var@2) -> ⊥ : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; - Some (var@4) -> ⊥ : bool ; - Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⊥ : &'_ (test1::List) ; - Some (var@7) -> ⊥ : &'_ (test1::List) ; - abs@0{parents={}}{regions={0}} { - ⌊shared@1⌋, - proj_loans (s@1 : bool) - } - None -> @shared_loan({0, 1}, test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box>; }) ; + Some (x) -> s@5 : i32 ; + Some (y) -> ⌊mut@2⌋ ; + Some (z) -> ⊥ : &'_ mut (i32) ; + Some (var@4) -> ⊥ : &'_ mut (i32) ; + Some (var@5) -> ⊥ : &'_ mut (i32) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> &mut@2 (s@6 : i32) ; + Some (var@8) -> s@1 : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> s@8 : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } -[Debug] end borrow: 1: -- original context: -# Ended regions: {} + +[Debug] +**About to evaluate statement**: [ + assert(¬move var@13) +] + +**Context**: +# Ended regions: {0} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (l) -> ⊥ : test1::List ; - Some (var@2) -> ⊥ : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; - Some (var@4) -> ⊥ : bool ; - Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⊥ : &'_ (test1::List) ; - Some (var@7) -> ⊥ : &'_ (test1::List) ; - abs@0{parents={}}{regions={0}} { - ⌊shared@1⌋, - proj_loans (s@1 : bool) - } - None -> @shared_loan({1}, test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box>; }) ; + Some (x) -> s@5 : i32 ; + Some (y) -> ⌊mut@2⌋ ; + Some (z) -> ⊥ : &'_ mut (i32) ; + Some (var@4) -> ⊥ : &'_ mut (i32) ; + Some (var@5) -> ⊥ : &'_ mut (i32) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> &mut@2 (s@6 : i32) ; + Some (var@8) -> s@1 : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> s@8 : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } -[Debug] end borrow: 1: found outer borrows/abs:(InterpreterBorrowsCore.OuterAbs 0) -[Debug] end_abstraction: 0 -- original context: -# Ended regions: {} + + +[Debug] eval_operand: +- ctx: +# Ended regions: {0} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (l) -> ⊥ : test1::List ; - Some (var@2) -> ⊥ : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; - Some (var@4) -> ⊥ : bool ; - Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⊥ : &'_ (test1::List) ; - Some (var@7) -> ⊥ : &'_ (test1::List) ; - abs@0{parents={}}{regions={0}} { - ⌊shared@1⌋, - proj_loans (s@1 : bool) - } - None -> @shared_loan({1}, test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box>; }) ; + Some (x) -> s@5 : i32 ; + Some (y) -> ⌊mut@2⌋ ; + Some (z) -> ⊥ : &'_ mut (i32) ; + Some (var@4) -> ⊥ : &'_ mut (i32) ; + Some (var@5) -> ⊥ : &'_ mut (i32) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> &mut@2 (s@6 : i32) ; + Some (var@8) -> s@1 : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> true ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } -[Debug] end_abstraction: 0 -- context after parent abstractions ended: -# Ended regions: {} + +- op: +move var@13 + +[Debug] +**About to evaluate statement**: [ + var@18 := copy y; + var@17 := move var@18 == 0: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); + return +] + +**Context**: +# Ended regions: {0} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (l) -> ⊥ : test1::List ; - Some (var@2) -> ⊥ : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; - Some (var@4) -> ⊥ : bool ; - Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⊥ : &'_ (test1::List) ; - Some (var@7) -> ⊥ : &'_ (test1::List) ; - abs@0{parents={}}{regions={0}} { - ⌊shared@1⌋, - proj_loans (s@1 : bool) - } - None -> @shared_loan({1}, test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box>; }) ; + Some (x) -> s@5 : i32 ; + Some (y) -> ⌊mut@2⌋ ; + Some (z) -> ⊥ : &'_ mut (i32) ; + Some (var@4) -> ⊥ : &'_ mut (i32) ; + Some (var@5) -> ⊥ : &'_ mut (i32) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> &mut@2 (s@6 : i32) ; + Some (var@8) -> s@1 : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } -[Debug] end_abstraction: 0 -- context after loans ended: -# Ended regions: {} + + +[Debug] +**About to evaluate statement**: [ + var@18 := copy y +] + +**Context**: +# Ended regions: {0} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (l) -> ⊥ : test1::List ; - Some (var@2) -> ⊥ : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; - Some (var@4) -> ⊥ : bool ; - Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⊥ : &'_ (test1::List) ; - Some (var@7) -> ⊥ : &'_ (test1::List) ; - abs@0{parents={}}{regions={0}} { - ⌊shared@1⌋, - proj_loans (s@1 : bool) - } - None -> @shared_loan({1}, test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box>; }) ; + Some (x) -> s@5 : i32 ; + Some (y) -> ⌊mut@2⌋ ; + Some (z) -> ⊥ : &'_ mut (i32) ; + Some (var@4) -> ⊥ : &'_ mut (i32) ; + Some (var@5) -> ⊥ : &'_ mut (i32) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> &mut@2 (s@6 : i32) ; + Some (var@8) -> s@1 : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } -[Debug] end_abstraction: 0 + + +[Debug] eval_operand: +- ctx: +# Ended regions: {0} +# 1 frame(s) + +# Frame 0: +{ + Some (var@0) -> ⊥ : () ; + Some (x) -> s@5 : i32 ; + Some (y) -> ⌊mut@2⌋ ; + Some (z) -> ⊥ : &'_ mut (i32) ; + Some (var@4) -> ⊥ : &'_ mut (i32) ; + Some (var@5) -> ⊥ : &'_ mut (i32) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> &mut@2 (s@6 : i32) ; + Some (var@8) -> s@1 : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; +} + + +- op: +copy y + +[Debug] end borrow: 2: - original context: -# Ended regions: {} +# Ended regions: {0} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (l) -> ⊥ : test1::List ; - Some (var@2) -> ⊥ : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; - Some (var@4) -> ⊥ : bool ; - Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⊥ : &'_ (test1::List) ; - Some (var@7) -> ⊥ : &'_ (test1::List) ; - abs@0{parents={}}{regions={0}} { - ⌊shared@1⌋, - proj_loans (s@1 : bool) - } - None -> @shared_loan({1}, test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box>; }) ; + Some (x) -> s@5 : i32 ; + Some (y) -> ⌊mut@2⌋ ; + Some (z) -> ⊥ : &'_ mut (i32) ; + Some (var@4) -> ⊥ : &'_ mut (i32) ; + Some (var@5) -> ⊥ : &'_ mut (i32) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> &mut@2 (s@6 : i32) ; + Some (var@8) -> s@1 : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } +[Debug] give_back: +- bid: 2 +- content: &mut@2 (s@6 : i32) +- context: +# Ended regions: {0} +# 1 frame(s) -- new context: +# Frame 0: +{ + Some (var@0) -> ⊥ : () ; + Some (x) -> s@5 : i32 ; + Some (y) -> ⌊mut@2⌋ ; + Some (z) -> ⊥ : &'_ mut (i32) ; + Some (var@4) -> ⊥ : &'_ mut (i32) ; + Some (var@5) -> ⊥ : &'_ mut (i32) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : &'_ mut (i32) ; + Some (var@8) -> s@1 : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; +} + + +[Debug] give_back_value: +- bid: 2 +- value: s@6 : i32 +- context: # Ended regions: {0} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (l) -> ⊥ : test1::List ; - Some (var@2) -> ⊥ : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; - Some (var@4) -> ⊥ : bool ; - Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⊥ : &'_ (test1::List) ; - Some (var@7) -> ⊥ : &'_ (test1::List) ; - None -> test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box>; } ; + Some (x) -> s@5 : i32 ; + Some (y) -> ⌊mut@2⌋ ; + Some (z) -> ⊥ : &'_ mut (i32) ; + Some (var@4) -> ⊥ : &'_ mut (i32) ; + Some (var@5) -> ⊥ : &'_ mut (i32) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : &'_ mut (i32) ; + Some (var@8) -> s@1 : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } + [Debug] **About to evaluate statement**: [ + var@17 := move var@18 == 0: i32; + var@16 := ¬ move var@17; + assert(¬move var@16); return ] @@ -127658,353 +126469,369 @@ move var@4 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (l) -> ⊥ : test1::List ; - Some (var@2) -> ⊥ : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; - Some (var@4) -> ⊥ : bool ; - Some (var@5) -> ⊥ : bool ; - Some (var@6) -> ⊥ : &'_ (test1::List) ; - Some (var@7) -> ⊥ : &'_ (test1::List) ; + Some (x) -> s@5 : i32 ; + Some (y) -> s@6 : i32 ; + Some (z) -> ⊥ : &'_ mut (i32) ; + Some (var@4) -> ⊥ : &'_ mut (i32) ; + Some (var@5) -> ⊥ : &'_ mut (i32) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : &'_ mut (i32) ; + Some (var@8) -> s@1 : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> s@6 : i32 ; } -[Debug] test_function_symbolic: split_list [Debug] **About to evaluate statement**: [ - var@8 := false; - var@7 := false; - var@7 := true; - var@8 := true; - var@2 := discriminant(l); - switch (move var@2) { - 0: isize => { - var@8 := false; - hd := move (l as test1::List::Cons).0; - var@7 := false; - tl := move (l as test1::List::Cons).1; - var@5 := move hd; - var@6 := move deref_box(tl); - (var@0).0 := move var@5; - (var@0).1 := move var@6; - var@9 := move alloc::alloc::box_free>(move tl); - return - } - _ => { - panic - } - } + var@17 := move var@18 == 0: i32 ] **Context**: -# Ended regions: {} +# Ended regions: {0} # 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : (T, test1::List) ; - Some (l) -> s@0 : test1::List ; - Some (var@2) -> ⊥ : isize ; - Some (hd) -> ⊥ : T ; - Some (tl) -> ⊥ : std::boxed::Box> ; - Some (var@5) -> ⊥ : T ; - Some (var@6) -> ⊥ : test1::List ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : () ; - Some (var@10) -> ⊥ : isize ; + Some (var@0) -> ⊥ : () ; + Some (x) -> s@5 : i32 ; + Some (y) -> s@6 : i32 ; + Some (z) -> ⊥ : &'_ mut (i32) ; + Some (var@4) -> ⊥ : &'_ mut (i32) ; + Some (var@5) -> ⊥ : &'_ mut (i32) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : &'_ mut (i32) ; + Some (var@8) -> s@1 : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> s@6 : i32 ; } -[Debug] -**About to evaluate statement**: [ - var@8 := false -] - -**Context**: -# Ended regions: {} +[Debug] eval_operand: +- ctx: +# Ended regions: {0} # 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : (T, test1::List) ; - Some (l) -> s@0 : test1::List ; - Some (var@2) -> ⊥ : isize ; - Some (hd) -> ⊥ : T ; - Some (tl) -> ⊥ : std::boxed::Box> ; - Some (var@5) -> ⊥ : T ; - Some (var@6) -> ⊥ : test1::List ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : () ; - Some (var@10) -> ⊥ : isize ; + Some (var@0) -> ⊥ : () ; + Some (x) -> s@5 : i32 ; + Some (y) -> s@6 : i32 ; + Some (z) -> ⊥ : &'_ mut (i32) ; + Some (var@4) -> ⊥ : &'_ mut (i32) ; + Some (var@5) -> ⊥ : &'_ mut (i32) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : &'_ mut (i32) ; + Some (var@8) -> s@1 : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> s@6 : i32 ; } +- op: +move var@18 [Debug] eval_operand: - ctx: -# Ended regions: {} +# Ended regions: {0} # 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : (T, test1::List) ; - Some (l) -> s@0 : test1::List ; - Some (var@2) -> ⊥ : isize ; - Some (hd) -> ⊥ : T ; - Some (tl) -> ⊥ : std::boxed::Box> ; - Some (var@5) -> ⊥ : T ; - Some (var@6) -> ⊥ : test1::List ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : () ; - Some (var@10) -> ⊥ : isize ; + Some (var@0) -> ⊥ : () ; + Some (x) -> s@5 : i32 ; + Some (y) -> s@6 : i32 ; + Some (z) -> ⊥ : &'_ mut (i32) ; + Some (var@4) -> ⊥ : &'_ mut (i32) ; + Some (var@5) -> ⊥ : &'_ mut (i32) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : &'_ mut (i32) ; + Some (var@8) -> s@1 : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } - op: -false +0: i32 [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 - } - } + var@16 := ¬ move var@17; + assert(¬move var@16); + return ] **Context**: -# Ended regions: {} +# Ended regions: {0} # 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : (T, test1::List) ; - Some (l) -> s@0 : test1::List ; - Some (var@2) -> ⊥ : isize ; - Some (hd) -> ⊥ : T ; - Some (tl) -> ⊥ : std::boxed::Box> ; - Some (var@5) -> ⊥ : T ; - Some (var@6) -> ⊥ : test1::List ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> false ; - Some (var@9) -> ⊥ : () ; - Some (var@10) -> ⊥ : isize ; + Some (var@0) -> ⊥ : () ; + Some (x) -> s@5 : i32 ; + Some (y) -> s@6 : i32 ; + Some (z) -> ⊥ : &'_ mut (i32) ; + Some (var@4) -> ⊥ : &'_ mut (i32) ; + Some (var@5) -> ⊥ : &'_ mut (i32) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : &'_ mut (i32) ; + Some (var@8) -> s@1 : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> s@9 : bool ; + Some (var@18) -> ⊥ : i32 ; } [Debug] **About to evaluate statement**: [ - var@7 := false + var@16 := ¬ move var@17 ] **Context**: -# Ended regions: {} +# Ended regions: {0} # 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : (T, test1::List) ; - Some (l) -> s@0 : test1::List ; - Some (var@2) -> ⊥ : isize ; - Some (hd) -> ⊥ : T ; - Some (tl) -> ⊥ : std::boxed::Box> ; - Some (var@5) -> ⊥ : T ; - Some (var@6) -> ⊥ : test1::List ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> false ; - Some (var@9) -> ⊥ : () ; - Some (var@10) -> ⊥ : isize ; + Some (var@0) -> ⊥ : () ; + Some (x) -> s@5 : i32 ; + Some (y) -> s@6 : i32 ; + Some (z) -> ⊥ : &'_ mut (i32) ; + Some (var@4) -> ⊥ : &'_ mut (i32) ; + Some (var@5) -> ⊥ : &'_ mut (i32) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : &'_ mut (i32) ; + Some (var@8) -> s@1 : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> s@9 : bool ; + Some (var@18) -> ⊥ : i32 ; } [Debug] eval_operand: - ctx: -# Ended regions: {} +# Ended regions: {0} # 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : (T, test1::List) ; - Some (l) -> s@0 : test1::List ; - Some (var@2) -> ⊥ : isize ; - Some (hd) -> ⊥ : T ; - Some (tl) -> ⊥ : std::boxed::Box> ; - Some (var@5) -> ⊥ : T ; - Some (var@6) -> ⊥ : test1::List ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> false ; - Some (var@9) -> ⊥ : () ; - Some (var@10) -> ⊥ : isize ; + Some (var@0) -> ⊥ : () ; + Some (x) -> s@5 : i32 ; + Some (y) -> s@6 : i32 ; + Some (z) -> ⊥ : &'_ mut (i32) ; + Some (var@4) -> ⊥ : &'_ mut (i32) ; + Some (var@5) -> ⊥ : &'_ mut (i32) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : &'_ mut (i32) ; + Some (var@8) -> s@1 : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> s@9 : bool ; + Some (var@18) -> ⊥ : i32 ; } - op: -false +move var@17 [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 - } - } + assert(¬move var@16); + return ] **Context**: -# Ended regions: {} +# Ended regions: {0} # 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : (T, test1::List) ; - Some (l) -> s@0 : test1::List ; - Some (var@2) -> ⊥ : isize ; - Some (hd) -> ⊥ : T ; - Some (tl) -> ⊥ : std::boxed::Box> ; - Some (var@5) -> ⊥ : T ; - Some (var@6) -> ⊥ : test1::List ; - Some (var@7) -> false ; - Some (var@8) -> false ; - Some (var@9) -> ⊥ : () ; - Some (var@10) -> ⊥ : isize ; + Some (var@0) -> ⊥ : () ; + Some (x) -> s@5 : i32 ; + Some (y) -> s@6 : i32 ; + Some (z) -> ⊥ : &'_ mut (i32) ; + Some (var@4) -> ⊥ : &'_ mut (i32) ; + Some (var@5) -> ⊥ : &'_ mut (i32) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : &'_ mut (i32) ; + Some (var@8) -> s@1 : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> s@10 : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } [Debug] **About to evaluate statement**: [ - var@7 := true + assert(¬move var@16) ] **Context**: -# Ended regions: {} +# Ended regions: {0} # 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : (T, test1::List) ; - Some (l) -> s@0 : test1::List ; - Some (var@2) -> ⊥ : isize ; - Some (hd) -> ⊥ : T ; - Some (tl) -> ⊥ : std::boxed::Box> ; - Some (var@5) -> ⊥ : T ; - Some (var@6) -> ⊥ : test1::List ; - Some (var@7) -> false ; - Some (var@8) -> false ; - Some (var@9) -> ⊥ : () ; - Some (var@10) -> ⊥ : isize ; + Some (var@0) -> ⊥ : () ; + Some (x) -> s@5 : i32 ; + Some (y) -> s@6 : i32 ; + Some (z) -> ⊥ : &'_ mut (i32) ; + Some (var@4) -> ⊥ : &'_ mut (i32) ; + Some (var@5) -> ⊥ : &'_ mut (i32) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : &'_ mut (i32) ; + Some (var@8) -> s@1 : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> s@10 : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } [Debug] eval_operand: - ctx: -# Ended regions: {} +# Ended regions: {0} # 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : (T, test1::List) ; - Some (l) -> s@0 : test1::List ; - Some (var@2) -> ⊥ : isize ; - Some (hd) -> ⊥ : T ; - Some (tl) -> ⊥ : std::boxed::Box> ; - Some (var@5) -> ⊥ : T ; - Some (var@6) -> ⊥ : test1::List ; - Some (var@7) -> false ; - Some (var@8) -> false ; - Some (var@9) -> ⊥ : () ; - Some (var@10) -> ⊥ : isize ; + Some (var@0) -> ⊥ : () ; + Some (x) -> s@5 : i32 ; + Some (y) -> s@6 : i32 ; + Some (z) -> ⊥ : &'_ mut (i32) ; + Some (var@4) -> ⊥ : &'_ mut (i32) ; + Some (var@5) -> ⊥ : &'_ mut (i32) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : &'_ mut (i32) ; + Some (var@8) -> s@1 : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> true ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } - op: -true +move var@16 [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 - } - } + return ] **Context**: -# Ended regions: {} +# Ended regions: {0} # 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : (T, test1::List) ; - Some (l) -> s@0 : test1::List ; - Some (var@2) -> ⊥ : isize ; - Some (hd) -> ⊥ : T ; - Some (tl) -> ⊥ : std::boxed::Box> ; - Some (var@5) -> ⊥ : T ; - Some (var@6) -> ⊥ : test1::List ; - Some (var@7) -> true ; - Some (var@8) -> false ; - Some (var@9) -> ⊥ : () ; - Some (var@10) -> ⊥ : isize ; + Some (var@0) -> ⊥ : () ; + Some (x) -> s@5 : i32 ; + Some (y) -> s@6 : i32 ; + Some (z) -> ⊥ : &'_ mut (i32) ; + Some (var@4) -> ⊥ : &'_ mut (i32) ; + Some (var@5) -> ⊥ : &'_ mut (i32) ; + Some (var@6) -> ⊥ : &'_ mut (i32) ; + Some (var@7) -> ⊥ : &'_ mut (i32) ; + Some (var@8) -> s@1 : i32 ; + Some (var@9) -> ⊥ : (i32, bool) ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : i32 ; + Some (var@13) -> ⊥ : bool ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : bool ; + Some (var@17) -> ⊥ : bool ; + Some (var@18) -> ⊥ : i32 ; } +[Debug] test_function_symbolic: id_mut_mut [Debug] **About to evaluate statement**: [ - var@8 := true + var@2 := &mut *(x); + var@0 := &mut *(var@2); + return ] **Context**: @@ -128013,91 +126840,85 @@ true # Frame 0: { - Some (var@0) -> ⊥ : (T, test1::List) ; - Some (l) -> s@0 : test1::List ; - Some (var@2) -> ⊥ : isize ; - Some (hd) -> ⊥ : T ; - Some (tl) -> ⊥ : std::boxed::Box> ; - Some (var@5) -> ⊥ : T ; - Some (var@6) -> ⊥ : test1::List ; - Some (var@7) -> true ; - Some (var@8) -> false ; - Some (var@9) -> ⊥ : () ; - Some (var@10) -> ⊥ : isize ; + 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))) + } + Some (var@0) -> ⊥ : &'_ mut (&'_ mut (T)) ; + Some (x) -> s@0 : &r@0 mut (&r@1 mut (T)) ; + Some (var@2) -> ⊥ : &'_ mut (&'_ mut (T)) ; } -[Debug] eval_operand: -- ctx: +[Debug] +**About to evaluate statement**: [ + var@2 := &mut *(x) +] + +**Context**: # Ended regions: {} # 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : (T, test1::List) ; - Some (l) -> s@0 : test1::List ; - Some (var@2) -> ⊥ : isize ; - Some (hd) -> ⊥ : T ; - Some (tl) -> ⊥ : std::boxed::Box> ; - Some (var@5) -> ⊥ : T ; - Some (var@6) -> ⊥ : test1::List ; - Some (var@7) -> true ; - Some (var@8) -> false ; - Some (var@9) -> ⊥ : () ; - Some (var@10) -> ⊥ : isize ; + 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))) + } + Some (var@0) -> ⊥ : &'_ mut (&'_ mut (T)) ; + Some (x) -> s@0 : &r@0 mut (&r@1 mut (T)) ; + Some (var@2) -> ⊥ : &'_ mut (&'_ mut (T)) ; } -- 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 - } - } -] +[Debug] expand_symbolic_value: s@0 : &r@0 mut (&r@1 mut (T)) -**Context**: +- original context: # Ended regions: {} # 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : (T, test1::List) ; - Some (l) -> s@0 : test1::List ; - Some (var@2) -> ⊥ : isize ; - Some (hd) -> ⊥ : T ; - Some (tl) -> ⊥ : std::boxed::Box> ; - Some (var@5) -> ⊥ : T ; - Some (var@6) -> ⊥ : test1::List ; - Some (var@7) -> true ; - Some (var@8) -> true ; - Some (var@9) -> ⊥ : () ; - Some (var@10) -> ⊥ : isize ; + 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))) + } + Some (var@0) -> ⊥ : &'_ mut (&'_ mut (T)) ; + Some (x) -> s@0 : &r@0 mut (&r@1 mut (T)) ; + Some (var@2) -> ⊥ : &'_ mut (&'_ mut (T)) ; } +- new context: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + abs@0{parents={}}{regions={0}} { + ⌊mut@0, proj_loans (s@1 : &r@1 mut (T))⌋ + } + abs@1{parents={0}}{regions={1}} { + @ignored_mut_loan(0, proj_loans (s@1 : &r@1 mut (T))) + } + Some (var@0) -> ⊥ : &'_ mut (&'_ mut (T)) ; + Some (x) -> &mut@0 (s@1 : &r@1 mut (T)) ; + Some (var@2) -> ⊥ : &'_ mut (&'_ mut (T)) ; +} + [Debug] **About to evaluate statement**: [ - var@2 := discriminant(l) + var@0 := &mut *(var@2); + return ] **Context**: @@ -128106,40 +126927,22 @@ true # Frame 0: { - Some (var@0) -> ⊥ : (T, test1::List) ; - Some (l) -> s@0 : test1::List ; - Some (var@2) -> ⊥ : isize ; - Some (hd) -> ⊥ : T ; - Some (tl) -> ⊥ : std::boxed::Box> ; - Some (var@5) -> ⊥ : T ; - Some (var@6) -> ⊥ : test1::List ; - Some (var@7) -> true ; - Some (var@8) -> true ; - Some (var@9) -> ⊥ : () ; - Some (var@10) -> ⊥ : isize ; + 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))) + } + Some (var@0) -> ⊥ : &'_ mut (&'_ mut (T)) ; + Some (x) -> &mut@0 (⌊mut@1⌋) ; + Some (var@2) -> &mut@1 (s@1 : &r@1 mut (T)) ; } [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 - } - } + var@0 := &mut *(var@2) ] **Context**: @@ -128148,56 +126951,48 @@ true # Frame 0: { - Some (var@0) -> ⊥ : (T, test1::List) ; - Some (l) -> test1::List::Cons { 0 = s@1 : T; 1 = s@2 : std::boxed::Box>; } ; - Some (var@2) -> 0: isize ; - Some (hd) -> ⊥ : T ; - Some (tl) -> ⊥ : std::boxed::Box> ; - Some (var@5) -> ⊥ : T ; - Some (var@6) -> ⊥ : test1::List ; - Some (var@7) -> true ; - Some (var@8) -> true ; - Some (var@9) -> ⊥ : () ; - Some (var@10) -> ⊥ : isize ; + 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))) + } + Some (var@0) -> ⊥ : &'_ mut (&'_ mut (T)) ; + Some (x) -> &mut@0 (⌊mut@1⌋) ; + Some (var@2) -> &mut@1 (s@1 : &r@1 mut (T)) ; } -[Debug] eval_operand: -- ctx: +[Debug] +**About to evaluate statement**: [ + return +] + +**Context**: # Ended regions: {} # 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : (T, test1::List) ; - Some (l) -> test1::List::Cons { 0 = s@1 : T; 1 = s@2 : std::boxed::Box>; } ; - Some (var@2) -> 0: isize ; - Some (hd) -> ⊥ : T ; - Some (tl) -> ⊥ : std::boxed::Box> ; - Some (var@5) -> ⊥ : T ; - Some (var@6) -> ⊥ : test1::List ; - Some (var@7) -> true ; - Some (var@8) -> true ; - Some (var@9) -> ⊥ : () ; - Some (var@10) -> ⊥ : isize ; + 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))) + } + Some (var@0) -> &mut@2 (s@1 : &r@1 mut (T)) ; + Some (x) -> &mut@0 (⌊mut@1⌋) ; + Some (var@2) -> &mut@1 (⌊mut@2⌋) ; } -- op: -move var@2 +[Debug] test_function_symbolic: id_mut_pair [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); + var@2 := &mut *(x); + var@0 := &mut *(var@2); return ] @@ -128207,24 +127002,19 @@ move var@2 # Frame 0: { - Some (var@0) -> ⊥ : (T, test1::List) ; - Some (l) -> test1::List::Cons { 0 = s@1 : T; 1 = s@2 : std::boxed::Box>; } ; - Some (var@2) -> ⊥ : isize ; - Some (hd) -> ⊥ : T ; - Some (tl) -> ⊥ : std::boxed::Box> ; - Some (var@5) -> ⊥ : T ; - Some (var@6) -> ⊥ : test1::List ; - Some (var@7) -> true ; - Some (var@8) -> true ; - Some (var@9) -> ⊥ : () ; - Some (var@10) -> ⊥ : isize ; + abs@0{parents={}}{regions={0}} { + proj_loans (s@0 : &r@0 mut ((&r@0 mut (T), u32))) + } + Some (var@0) -> ⊥ : &'_ mut ((&'_ mut (T), u32)) ; + Some (x) -> s@0 : &r@0 mut ((&r@0 mut (T), u32)) ; + Some (var@2) -> ⊥ : &'_ mut ((&'_ mut (T), u32)) ; } [Debug] **About to evaluate statement**: [ - var@8 := false + var@2 := &mut *(x) ] **Context**: @@ -128233,55 +127023,51 @@ move var@2 # Frame 0: { - Some (var@0) -> ⊥ : (T, test1::List) ; - Some (l) -> test1::List::Cons { 0 = s@1 : T; 1 = s@2 : std::boxed::Box>; } ; - Some (var@2) -> ⊥ : isize ; - Some (hd) -> ⊥ : T ; - Some (tl) -> ⊥ : std::boxed::Box> ; - Some (var@5) -> ⊥ : T ; - Some (var@6) -> ⊥ : test1::List ; - Some (var@7) -> true ; - Some (var@8) -> true ; - Some (var@9) -> ⊥ : () ; - Some (var@10) -> ⊥ : isize ; + abs@0{parents={}}{regions={0}} { + proj_loans (s@0 : &r@0 mut ((&r@0 mut (T), u32))) + } + Some (var@0) -> ⊥ : &'_ mut ((&'_ mut (T), u32)) ; + Some (x) -> s@0 : &r@0 mut ((&r@0 mut (T), u32)) ; + Some (var@2) -> ⊥ : &'_ mut ((&'_ mut (T), u32)) ; } -[Debug] eval_operand: -- ctx: +[Debug] expand_symbolic_value: s@0 : &r@0 mut ((&r@0 mut (T), u32)) + +- original context: # Ended regions: {} # 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : (T, test1::List) ; - Some (l) -> test1::List::Cons { 0 = s@1 : T; 1 = s@2 : std::boxed::Box>; } ; - Some (var@2) -> ⊥ : isize ; - Some (hd) -> ⊥ : T ; - Some (tl) -> ⊥ : std::boxed::Box> ; - Some (var@5) -> ⊥ : T ; - Some (var@6) -> ⊥ : test1::List ; - Some (var@7) -> true ; - Some (var@8) -> true ; - Some (var@9) -> ⊥ : () ; - Some (var@10) -> ⊥ : isize ; + abs@0{parents={}}{regions={0}} { + proj_loans (s@0 : &r@0 mut ((&r@0 mut (T), u32))) + } + Some (var@0) -> ⊥ : &'_ mut ((&'_ mut (T), u32)) ; + Some (x) -> s@0 : &r@0 mut ((&r@0 mut (T), u32)) ; + Some (var@2) -> ⊥ : &'_ mut ((&'_ mut (T), u32)) ; } -- op: -false +- new context: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + abs@0{parents={}}{regions={0}} { + ⌊mut@0, proj_loans (s@1 : (&r@0 mut (T), u32))⌋ + } + Some (var@0) -> ⊥ : &'_ mut ((&'_ mut (T), u32)) ; + Some (x) -> &mut@0 (s@1 : (&r@0 mut (T), u32)) ; + Some (var@2) -> ⊥ : &'_ mut ((&'_ mut (T), u32)) ; +} + [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); + var@0 := &mut *(var@2); return ] @@ -128291,24 +127077,19 @@ false # Frame 0: { - Some (var@0) -> ⊥ : (T, test1::List) ; - Some (l) -> test1::List::Cons { 0 = s@1 : T; 1 = s@2 : std::boxed::Box>; } ; - Some (var@2) -> ⊥ : isize ; - Some (hd) -> ⊥ : T ; - Some (tl) -> ⊥ : std::boxed::Box> ; - Some (var@5) -> ⊥ : T ; - Some (var@6) -> ⊥ : test1::List ; - Some (var@7) -> true ; - Some (var@8) -> false ; - Some (var@9) -> ⊥ : () ; - Some (var@10) -> ⊥ : isize ; + abs@0{parents={}}{regions={0}} { + ⌊mut@0, proj_loans (s@1 : (&r@0 mut (T), u32))⌋ + } + Some (var@0) -> ⊥ : &'_ mut ((&'_ mut (T), u32)) ; + Some (x) -> &mut@0 (⌊mut@1⌋) ; + Some (var@2) -> &mut@1 (s@1 : (&r@0 mut (T), u32)) ; } [Debug] **About to evaluate statement**: [ - hd := move (l as test1::List::Cons).0 + var@0 := &mut *(var@2) ] **Context**: @@ -128317,54 +127098,53 @@ false # Frame 0: { - Some (var@0) -> ⊥ : (T, test1::List) ; - Some (l) -> test1::List::Cons { 0 = s@1 : T; 1 = s@2 : std::boxed::Box>; } ; - Some (var@2) -> ⊥ : isize ; - Some (hd) -> ⊥ : T ; - Some (tl) -> ⊥ : std::boxed::Box> ; - Some (var@5) -> ⊥ : T ; - Some (var@6) -> ⊥ : test1::List ; - Some (var@7) -> true ; - Some (var@8) -> false ; - Some (var@9) -> ⊥ : () ; - Some (var@10) -> ⊥ : isize ; + abs@0{parents={}}{regions={0}} { + ⌊mut@0, proj_loans (s@1 : (&r@0 mut (T), u32))⌋ + } + Some (var@0) -> ⊥ : &'_ mut ((&'_ mut (T), u32)) ; + Some (x) -> &mut@0 (⌊mut@1⌋) ; + Some (var@2) -> &mut@1 (s@1 : (&r@0 mut (T), u32)) ; } -[Debug] eval_operand: -- ctx: +[Debug] +**About to evaluate statement**: [ + return +] + +**Context**: # Ended regions: {} # 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : (T, test1::List) ; - Some (l) -> test1::List::Cons { 0 = s@1 : T; 1 = s@2 : std::boxed::Box>; } ; - Some (var@2) -> ⊥ : isize ; - Some (hd) -> ⊥ : T ; - Some (tl) -> ⊥ : std::boxed::Box> ; - Some (var@5) -> ⊥ : T ; - Some (var@6) -> ⊥ : test1::List ; - Some (var@7) -> true ; - Some (var@8) -> false ; - Some (var@9) -> ⊥ : () ; - Some (var@10) -> ⊥ : isize ; + abs@0{parents={}}{regions={0}} { + ⌊mut@0, proj_loans (s@1 : (&r@0 mut (T), u32))⌋ + } + Some (var@0) -> &mut@2 (s@1 : (&r@0 mut (T), u32)) ; + Some (x) -> &mut@0 (⌊mut@1⌋) ; + Some (var@2) -> &mut@1 (⌊mut@2⌋) ; } -- op: -move (l as test1::List::Cons).0 +[Debug] test_function_symbolic: id_mut_pair_test1 [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); + 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 ] @@ -128374,24 +127154,24 @@ move (l as test1::List::Cons).0 # Frame 0: { - Some (var@0) -> ⊥ : (T, test1::List) ; - Some (l) -> test1::List::Cons { 0 = ⊥ : T; 1 = s@2 : std::boxed::Box>; } ; - Some (var@2) -> ⊥ : isize ; - Some (hd) -> s@1 : T ; - Some (tl) -> ⊥ : std::boxed::Box> ; - Some (var@5) -> ⊥ : T ; - Some (var@6) -> ⊥ : test1::List ; - Some (var@7) -> true ; - Some (var@8) -> false ; - Some (var@9) -> ⊥ : () ; - Some (var@10) -> ⊥ : isize ; + Some (var@0) -> ⊥ : () ; + Some (x) -> ⊥ : u32 ; + Some (px) -> ⊥ : &'_ mut (u32) ; + Some (p) -> ⊥ : (&'_ mut (u32), u32) ; + Some (var@4) -> ⊥ : &'_ mut (u32) ; + Some (pp0) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + Some (pp1) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + Some (var@7) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + Some (y) -> ⊥ : u32 ; + Some (var@9) -> ⊥ : &'_ mut (u32) ; + Some (var@10) -> ⊥ : &'_ mut (u32) ; } [Debug] **About to evaluate statement**: [ - var@7 := false + x := 0: u32 ] **Context**: @@ -128400,17 +127180,17 @@ move (l as test1::List::Cons).0 # Frame 0: { - Some (var@0) -> ⊥ : (T, test1::List) ; - Some (l) -> test1::List::Cons { 0 = ⊥ : T; 1 = s@2 : std::boxed::Box>; } ; - Some (var@2) -> ⊥ : isize ; - Some (hd) -> s@1 : T ; - Some (tl) -> ⊥ : std::boxed::Box> ; - Some (var@5) -> ⊥ : T ; - Some (var@6) -> ⊥ : test1::List ; - Some (var@7) -> true ; - Some (var@8) -> false ; - Some (var@9) -> ⊥ : () ; - Some (var@10) -> ⊥ : isize ; + Some (var@0) -> ⊥ : () ; + Some (x) -> ⊥ : u32 ; + Some (px) -> ⊥ : &'_ mut (u32) ; + Some (p) -> ⊥ : (&'_ mut (u32), u32) ; + Some (var@4) -> ⊥ : &'_ mut (u32) ; + Some (pp0) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + Some (pp1) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + Some (var@7) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + Some (y) -> ⊥ : u32 ; + Some (var@9) -> ⊥ : &'_ mut (u32) ; + Some (var@10) -> ⊥ : &'_ mut (u32) ; } @@ -128422,31 +127202,37 @@ move (l as test1::List::Cons).0 # Frame 0: { - Some (var@0) -> ⊥ : (T, test1::List) ; - Some (l) -> test1::List::Cons { 0 = ⊥ : T; 1 = s@2 : std::boxed::Box>; } ; - Some (var@2) -> ⊥ : isize ; - Some (hd) -> s@1 : T ; - Some (tl) -> ⊥ : std::boxed::Box> ; - Some (var@5) -> ⊥ : T ; - Some (var@6) -> ⊥ : test1::List ; - Some (var@7) -> true ; - Some (var@8) -> false ; - Some (var@9) -> ⊥ : () ; - Some (var@10) -> ⊥ : isize ; + Some (var@0) -> ⊥ : () ; + Some (x) -> ⊥ : u32 ; + Some (px) -> ⊥ : &'_ mut (u32) ; + Some (p) -> ⊥ : (&'_ mut (u32), u32) ; + Some (var@4) -> ⊥ : &'_ mut (u32) ; + Some (pp0) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + Some (pp1) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + Some (var@7) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + Some (y) -> ⊥ : u32 ; + Some (var@9) -> ⊥ : &'_ mut (u32) ; + Some (var@10) -> ⊥ : &'_ mut (u32) ; } - op: -false +0: u32 [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); + 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 ] @@ -128456,24 +127242,24 @@ false # Frame 0: { - Some (var@0) -> ⊥ : (T, test1::List) ; - Some (l) -> test1::List::Cons { 0 = ⊥ : T; 1 = s@2 : std::boxed::Box>; } ; - Some (var@2) -> ⊥ : isize ; - Some (hd) -> s@1 : T ; - Some (tl) -> ⊥ : std::boxed::Box> ; - Some (var@5) -> ⊥ : T ; - Some (var@6) -> ⊥ : test1::List ; - Some (var@7) -> false ; - Some (var@8) -> false ; - Some (var@9) -> ⊥ : () ; - Some (var@10) -> ⊥ : isize ; + Some (var@0) -> ⊥ : () ; + Some (x) -> 0: u32 ; + Some (px) -> ⊥ : &'_ mut (u32) ; + Some (p) -> ⊥ : (&'_ mut (u32), u32) ; + Some (var@4) -> ⊥ : &'_ mut (u32) ; + Some (pp0) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + Some (pp1) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + Some (var@7) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + Some (y) -> ⊥ : u32 ; + Some (var@9) -> ⊥ : &'_ mut (u32) ; + Some (var@10) -> ⊥ : &'_ mut (u32) ; } [Debug] **About to evaluate statement**: [ - tl := move (l as test1::List::Cons).1 + px := &mut x ] **Context**: @@ -128482,52 +127268,34 @@ false # Frame 0: { - Some (var@0) -> ⊥ : (T, test1::List) ; - Some (l) -> test1::List::Cons { 0 = ⊥ : T; 1 = s@2 : std::boxed::Box>; } ; - Some (var@2) -> ⊥ : isize ; - Some (hd) -> s@1 : T ; - Some (tl) -> ⊥ : std::boxed::Box> ; - Some (var@5) -> ⊥ : T ; - Some (var@6) -> ⊥ : test1::List ; - Some (var@7) -> false ; - Some (var@8) -> false ; - Some (var@9) -> ⊥ : () ; - Some (var@10) -> ⊥ : isize ; -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : (T, test1::List) ; - Some (l) -> test1::List::Cons { 0 = ⊥ : T; 1 = s@2 : std::boxed::Box>; } ; - Some (var@2) -> ⊥ : isize ; - Some (hd) -> s@1 : T ; - Some (tl) -> ⊥ : std::boxed::Box> ; - Some (var@5) -> ⊥ : T ; - Some (var@6) -> ⊥ : test1::List ; - Some (var@7) -> false ; - Some (var@8) -> false ; - Some (var@9) -> ⊥ : () ; - Some (var@10) -> ⊥ : isize ; + Some (var@0) -> ⊥ : () ; + Some (x) -> 0: u32 ; + Some (px) -> ⊥ : &'_ mut (u32) ; + Some (p) -> ⊥ : (&'_ mut (u32), u32) ; + Some (var@4) -> ⊥ : &'_ mut (u32) ; + Some (pp0) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + Some (pp1) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + Some (var@7) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + Some (y) -> ⊥ : u32 ; + Some (var@9) -> ⊥ : &'_ mut (u32) ; + Some (var@10) -> ⊥ : &'_ mut (u32) ; } -- op: -move (l as test1::List::Cons).1 [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); + 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 ] @@ -128537,24 +127305,24 @@ move (l as test1::List::Cons).1 # Frame 0: { - Some (var@0) -> ⊥ : (T, test1::List) ; - Some (l) -> test1::List::Cons { 0 = ⊥ : T; 1 = ⊥ : std::boxed::Box>; } ; - Some (var@2) -> ⊥ : isize ; - Some (hd) -> s@1 : T ; - Some (tl) -> s@2 : std::boxed::Box> ; - Some (var@5) -> ⊥ : T ; - Some (var@6) -> ⊥ : test1::List ; - Some (var@7) -> false ; - Some (var@8) -> false ; - Some (var@9) -> ⊥ : () ; - Some (var@10) -> ⊥ : isize ; + Some (var@0) -> ⊥ : () ; + Some (x) -> ⌊mut@0⌋ ; + Some (px) -> &mut@0 (0: u32) ; + Some (p) -> ⊥ : (&'_ mut (u32), u32) ; + Some (var@4) -> ⊥ : &'_ mut (u32) ; + Some (pp0) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + Some (pp1) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + Some (var@7) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + Some (y) -> ⊥ : u32 ; + Some (var@9) -> ⊥ : &'_ mut (u32) ; + Some (var@10) -> ⊥ : &'_ mut (u32) ; } [Debug] **About to evaluate statement**: [ - var@5 := move hd + var@4 := move px ] **Context**: @@ -128563,17 +127331,17 @@ move (l as test1::List::Cons).1 # Frame 0: { - Some (var@0) -> ⊥ : (T, test1::List) ; - Some (l) -> test1::List::Cons { 0 = ⊥ : T; 1 = ⊥ : std::boxed::Box>; } ; - Some (var@2) -> ⊥ : isize ; - Some (hd) -> s@1 : T ; - Some (tl) -> s@2 : std::boxed::Box> ; - Some (var@5) -> ⊥ : T ; - Some (var@6) -> ⊥ : test1::List ; - Some (var@7) -> false ; - Some (var@8) -> false ; - Some (var@9) -> ⊥ : () ; - Some (var@10) -> ⊥ : isize ; + Some (var@0) -> ⊥ : () ; + Some (x) -> ⌊mut@0⌋ ; + Some (px) -> &mut@0 (0: u32) ; + Some (p) -> ⊥ : (&'_ mut (u32), u32) ; + Some (var@4) -> ⊥ : &'_ mut (u32) ; + Some (pp0) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + Some (pp1) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + Some (var@7) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + Some (y) -> ⊥ : u32 ; + Some (var@9) -> ⊥ : &'_ mut (u32) ; + Some (var@10) -> ⊥ : &'_ mut (u32) ; } @@ -128585,29 +127353,35 @@ move (l as test1::List::Cons).1 # Frame 0: { - Some (var@0) -> ⊥ : (T, test1::List) ; - Some (l) -> test1::List::Cons { 0 = ⊥ : T; 1 = ⊥ : std::boxed::Box>; } ; - Some (var@2) -> ⊥ : isize ; - Some (hd) -> s@1 : T ; - Some (tl) -> s@2 : std::boxed::Box> ; - Some (var@5) -> ⊥ : T ; - Some (var@6) -> ⊥ : test1::List ; - Some (var@7) -> false ; - Some (var@8) -> false ; - Some (var@9) -> ⊥ : () ; - Some (var@10) -> ⊥ : isize ; + Some (var@0) -> ⊥ : () ; + Some (x) -> ⌊mut@0⌋ ; + Some (px) -> &mut@0 (0: u32) ; + Some (p) -> ⊥ : (&'_ mut (u32), u32) ; + Some (var@4) -> ⊥ : &'_ mut (u32) ; + Some (pp0) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + Some (pp1) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + Some (var@7) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + Some (y) -> ⊥ : u32 ; + Some (var@9) -> ⊥ : &'_ mut (u32) ; + Some (var@10) -> ⊥ : &'_ mut (u32) ; } - op: -move hd +move px [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); + (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 ] @@ -128617,24 +127391,24 @@ move hd # Frame 0: { - Some (var@0) -> ⊥ : (T, test1::List) ; - Some (l) -> test1::List::Cons { 0 = ⊥ : T; 1 = ⊥ : std::boxed::Box>; } ; - Some (var@2) -> ⊥ : isize ; - Some (hd) -> ⊥ : T ; - Some (tl) -> s@2 : std::boxed::Box> ; - Some (var@5) -> s@1 : T ; - Some (var@6) -> ⊥ : test1::List ; - Some (var@7) -> false ; - Some (var@8) -> false ; - Some (var@9) -> ⊥ : () ; - Some (var@10) -> ⊥ : isize ; + Some (var@0) -> ⊥ : () ; + Some (x) -> ⌊mut@0⌋ ; + Some (px) -> ⊥ : &'_ mut (u32) ; + Some (p) -> ⊥ : (&'_ mut (u32), u32) ; + Some (var@4) -> &mut@0 (0: u32) ; + Some (pp0) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + Some (pp1) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + Some (var@7) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + Some (y) -> ⊥ : u32 ; + Some (var@9) -> ⊥ : &'_ mut (u32) ; + Some (var@10) -> ⊥ : &'_ mut (u32) ; } [Debug] **About to evaluate statement**: [ - var@6 := move deref_box(tl) + (p).0 := move var@4 ] **Context**: @@ -128643,17 +127417,17 @@ move hd # Frame 0: { - Some (var@0) -> ⊥ : (T, test1::List) ; - Some (l) -> test1::List::Cons { 0 = ⊥ : T; 1 = ⊥ : std::boxed::Box>; } ; - Some (var@2) -> ⊥ : isize ; - Some (hd) -> ⊥ : T ; - Some (tl) -> s@2 : std::boxed::Box> ; - Some (var@5) -> s@1 : T ; - Some (var@6) -> ⊥ : test1::List ; - Some (var@7) -> false ; - Some (var@8) -> false ; - Some (var@9) -> ⊥ : () ; - Some (var@10) -> ⊥ : isize ; + Some (var@0) -> ⊥ : () ; + Some (x) -> ⌊mut@0⌋ ; + Some (px) -> ⊥ : &'_ mut (u32) ; + Some (p) -> ⊥ : (&'_ mut (u32), u32) ; + Some (var@4) -> &mut@0 (0: u32) ; + Some (pp0) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + Some (pp1) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + Some (var@7) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + Some (y) -> ⊥ : u32 ; + Some (var@9) -> ⊥ : &'_ mut (u32) ; + Some (var@10) -> ⊥ : &'_ mut (u32) ; } @@ -128665,70 +127439,40 @@ move hd # Frame 0: { - Some (var@0) -> ⊥ : (T, test1::List) ; - Some (l) -> test1::List::Cons { 0 = ⊥ : T; 1 = ⊥ : std::boxed::Box>; } ; - Some (var@2) -> ⊥ : isize ; - Some (hd) -> ⊥ : T ; - Some (tl) -> s@2 : std::boxed::Box> ; - Some (var@5) -> s@1 : T ; - Some (var@6) -> ⊥ : test1::List ; - Some (var@7) -> false ; - Some (var@8) -> false ; - Some (var@9) -> ⊥ : () ; - Some (var@10) -> ⊥ : isize ; + Some (var@0) -> ⊥ : () ; + Some (x) -> ⌊mut@0⌋ ; + Some (px) -> ⊥ : &'_ mut (u32) ; + Some (p) -> ⊥ : (&'_ mut (u32), u32) ; + Some (var@4) -> &mut@0 (0: u32) ; + Some (pp0) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + Some (pp1) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + Some (var@7) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + Some (y) -> ⊥ : u32 ; + Some (var@9) -> ⊥ : &'_ mut (u32) ; + Some (var@10) -> ⊥ : &'_ mut (u32) ; } - op: -move deref_box(tl) - -[Debug] expand_symbolic_value: s@2 : std::boxed::Box> - -- original context: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : (T, test1::List) ; - Some (l) -> test1::List::Cons { 0 = ⊥ : T; 1 = ⊥ : std::boxed::Box>; } ; - Some (var@2) -> ⊥ : isize ; - Some (hd) -> ⊥ : T ; - Some (tl) -> s@2 : std::boxed::Box> ; - Some (var@5) -> s@1 : T ; - Some (var@6) -> ⊥ : test1::List ; - Some (var@7) -> false ; - Some (var@8) -> false ; - Some (var@9) -> ⊥ : () ; - Some (var@10) -> ⊥ : isize ; -} - - -- new context: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : (T, test1::List) ; - Some (l) -> test1::List::Cons { 0 = ⊥ : T; 1 = ⊥ : std::boxed::Box>; } ; - Some (var@2) -> ⊥ : isize ; - Some (hd) -> ⊥ : T ; - Some (tl) -> @Box(s@3 : test1::List) ; - Some (var@5) -> s@1 : T ; - Some (var@6) -> ⊥ : test1::List ; - Some (var@7) -> false ; - Some (var@8) -> false ; - Some (var@9) -> ⊥ : () ; - Some (var@10) -> ⊥ : isize ; -} - +move var@4 +[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**: [ - (var@0).0 := move var@5; - (var@0).1 := move var@6; - var@9 := move alloc::alloc::box_free>(move tl); + (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 ] @@ -128738,24 +127482,24 @@ move deref_box(tl) # Frame 0: { - Some (var@0) -> ⊥ : (T, test1::List) ; - Some (l) -> test1::List::Cons { 0 = ⊥ : T; 1 = ⊥ : std::boxed::Box>; } ; - Some (var@2) -> ⊥ : isize ; - Some (hd) -> ⊥ : T ; - Some (tl) -> @Box(⊥ : test1::List) ; - Some (var@5) -> s@1 : T ; - Some (var@6) -> s@3 : test1::List ; - Some (var@7) -> false ; - Some (var@8) -> false ; - Some (var@9) -> ⊥ : () ; - Some (var@10) -> ⊥ : isize ; + Some (var@0) -> ⊥ : () ; + Some (x) -> ⌊mut@0⌋ ; + Some (px) -> ⊥ : &'_ mut (u32) ; + Some (p) -> (&mut@0 (0: u32), ⊥ : u32) ; + Some (var@4) -> ⊥ : &'_ mut (u32) ; + Some (pp0) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + Some (pp1) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + Some (var@7) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + Some (y) -> ⊥ : u32 ; + Some (var@9) -> ⊥ : &'_ mut (u32) ; + Some (var@10) -> ⊥ : &'_ mut (u32) ; } [Debug] **About to evaluate statement**: [ - (var@0).0 := move var@5 + (p).1 := 1: u32 ] **Context**: @@ -128764,17 +127508,17 @@ move deref_box(tl) # Frame 0: { - Some (var@0) -> ⊥ : (T, test1::List) ; - Some (l) -> test1::List::Cons { 0 = ⊥ : T; 1 = ⊥ : std::boxed::Box>; } ; - Some (var@2) -> ⊥ : isize ; - Some (hd) -> ⊥ : T ; - Some (tl) -> @Box(⊥ : test1::List) ; - Some (var@5) -> s@1 : T ; - Some (var@6) -> s@3 : test1::List ; - Some (var@7) -> false ; - Some (var@8) -> false ; - Some (var@9) -> ⊥ : () ; - Some (var@10) -> ⊥ : isize ; + Some (var@0) -> ⊥ : () ; + Some (x) -> ⌊mut@0⌋ ; + Some (px) -> ⊥ : &'_ mut (u32) ; + Some (p) -> (&mut@0 (0: u32), ⊥ : u32) ; + Some (var@4) -> ⊥ : &'_ mut (u32) ; + Some (pp0) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + Some (pp1) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + Some (var@7) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + Some (y) -> ⊥ : u32 ; + Some (var@9) -> ⊥ : &'_ mut (u32) ; + Some (var@10) -> ⊥ : &'_ mut (u32) ; } @@ -128786,33 +127530,33 @@ move deref_box(tl) # Frame 0: { - Some (var@0) -> ⊥ : (T, test1::List) ; - Some (l) -> test1::List::Cons { 0 = ⊥ : T; 1 = ⊥ : std::boxed::Box>; } ; - Some (var@2) -> ⊥ : isize ; - Some (hd) -> ⊥ : T ; - Some (tl) -> @Box(⊥ : test1::List) ; - Some (var@5) -> s@1 : T ; - Some (var@6) -> s@3 : test1::List ; - Some (var@7) -> false ; - Some (var@8) -> false ; - Some (var@9) -> ⊥ : () ; - Some (var@10) -> ⊥ : isize ; + Some (var@0) -> ⊥ : () ; + Some (x) -> ⌊mut@0⌋ ; + Some (px) -> ⊥ : &'_ mut (u32) ; + Some (p) -> (&mut@0 (0: u32), ⊥ : u32) ; + Some (var@4) -> ⊥ : &'_ mut (u32) ; + Some (pp0) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + Some (pp1) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + Some (var@7) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + Some (y) -> ⊥ : u32 ; + Some (var@9) -> ⊥ : &'_ mut (u32) ; + Some (var@10) -> ⊥ : &'_ mut (u32) ; } - op: -move var@5 +1: u32 -[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); + 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 ] @@ -128822,24 +127566,24 @@ ty: (Types.Adt (Types.Tuple, [], # Frame 0: { - Some (var@0) -> (s@1 : T, ⊥ : test1::List) ; - Some (l) -> test1::List::Cons { 0 = ⊥ : T; 1 = ⊥ : std::boxed::Box>; } ; - Some (var@2) -> ⊥ : isize ; - Some (hd) -> ⊥ : T ; - Some (tl) -> @Box(⊥ : test1::List) ; - Some (var@5) -> ⊥ : T ; - Some (var@6) -> s@3 : test1::List ; - Some (var@7) -> false ; - Some (var@8) -> false ; - Some (var@9) -> ⊥ : () ; - Some (var@10) -> ⊥ : isize ; + Some (var@0) -> ⊥ : () ; + Some (x) -> ⌊mut@0⌋ ; + Some (px) -> ⊥ : &'_ mut (u32) ; + Some (p) -> (&mut@0 (0: u32), 1: u32) ; + Some (var@4) -> ⊥ : &'_ mut (u32) ; + Some (pp0) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + Some (pp1) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + Some (var@7) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + Some (y) -> ⊥ : u32 ; + Some (var@9) -> ⊥ : &'_ mut (u32) ; + Some (var@10) -> ⊥ : &'_ mut (u32) ; } [Debug] **About to evaluate statement**: [ - (var@0).1 := move var@6 + pp0 := &mut p ] **Context**: @@ -128848,48 +127592,30 @@ ty: (Types.Adt (Types.Tuple, [], # Frame 0: { - Some (var@0) -> (s@1 : T, ⊥ : test1::List) ; - Some (l) -> test1::List::Cons { 0 = ⊥ : T; 1 = ⊥ : std::boxed::Box>; } ; - Some (var@2) -> ⊥ : isize ; - Some (hd) -> ⊥ : T ; - Some (tl) -> @Box(⊥ : test1::List) ; - Some (var@5) -> ⊥ : T ; - Some (var@6) -> s@3 : test1::List ; - Some (var@7) -> false ; - Some (var@8) -> false ; - Some (var@9) -> ⊥ : () ; - Some (var@10) -> ⊥ : isize ; -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> (s@1 : T, ⊥ : test1::List) ; - Some (l) -> test1::List::Cons { 0 = ⊥ : T; 1 = ⊥ : std::boxed::Box>; } ; - Some (var@2) -> ⊥ : isize ; - Some (hd) -> ⊥ : T ; - Some (tl) -> @Box(⊥ : test1::List) ; - Some (var@5) -> ⊥ : T ; - Some (var@6) -> s@3 : test1::List ; - Some (var@7) -> false ; - Some (var@8) -> false ; - Some (var@9) -> ⊥ : () ; - Some (var@10) -> ⊥ : isize ; + Some (var@0) -> ⊥ : () ; + Some (x) -> ⌊mut@0⌋ ; + Some (px) -> ⊥ : &'_ mut (u32) ; + Some (p) -> (&mut@0 (0: u32), 1: u32) ; + Some (var@4) -> ⊥ : &'_ mut (u32) ; + Some (pp0) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + Some (pp1) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + Some (var@7) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + Some (y) -> ⊥ : u32 ; + Some (var@9) -> ⊥ : &'_ mut (u32) ; + Some (var@10) -> ⊥ : &'_ mut (u32) ; } -- op: -move var@6 [Debug] **About to evaluate statement**: [ - var@9 := move alloc::alloc::box_free>(move tl); + 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 ] @@ -128899,24 +127625,24 @@ move var@6 # Frame 0: { - Some (var@0) -> (s@1 : T, s@3 : test1::List) ; - Some (l) -> test1::List::Cons { 0 = ⊥ : T; 1 = ⊥ : std::boxed::Box>; } ; - Some (var@2) -> ⊥ : isize ; - Some (hd) -> ⊥ : T ; - Some (tl) -> @Box(⊥ : test1::List) ; - Some (var@5) -> ⊥ : T ; - Some (var@6) -> ⊥ : test1::List ; - Some (var@7) -> false ; - Some (var@8) -> false ; - Some (var@9) -> ⊥ : () ; - Some (var@10) -> ⊥ : isize ; + Some (var@0) -> ⊥ : () ; + Some (x) -> ⌊mut@0⌋ ; + Some (px) -> ⊥ : &'_ mut (u32) ; + Some (p) -> ⌊mut@1⌋ ; + Some (var@4) -> ⊥ : &'_ mut (u32) ; + Some (pp0) -> &mut@1 ((&mut@0 (0: u32), 1: u32)) ; + Some (pp1) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + Some (var@7) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + Some (y) -> ⊥ : u32 ; + Some (var@9) -> ⊥ : &'_ mut (u32) ; + Some (var@10) -> ⊥ : &'_ mut (u32) ; } [Debug] **About to evaluate statement**: [ - var@9 := move alloc::alloc::box_free>(move tl) + var@7 := &two-phase *(pp0) ] **Context**: @@ -128925,29 +127651,29 @@ move var@6 # Frame 0: { - Some (var@0) -> (s@1 : T, s@3 : test1::List) ; - Some (l) -> test1::List::Cons { 0 = ⊥ : T; 1 = ⊥ : std::boxed::Box>; } ; - Some (var@2) -> ⊥ : isize ; - Some (hd) -> ⊥ : T ; - Some (tl) -> @Box(⊥ : test1::List) ; - Some (var@5) -> ⊥ : T ; - Some (var@6) -> ⊥ : test1::List ; - Some (var@7) -> false ; - Some (var@8) -> false ; - Some (var@9) -> ⊥ : () ; - Some (var@10) -> ⊥ : isize ; + Some (var@0) -> ⊥ : () ; + Some (x) -> ⌊mut@0⌋ ; + Some (px) -> ⊥ : &'_ mut (u32) ; + Some (p) -> ⌊mut@1⌋ ; + Some (var@4) -> ⊥ : &'_ mut (u32) ; + Some (pp0) -> &mut@1 ((&mut@0 (0: u32), 1: u32)) ; + Some (pp1) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + Some (var@7) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + Some (y) -> ⊥ : u32 ; + Some (var@9) -> ⊥ : &'_ mut (u32) ; + Some (var@10) -> ⊥ : &'_ mut (u32) ; } -[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**: [ + 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 ] @@ -128957,40 +127683,24 @@ move var@6 # Frame 0: { - Some (var@0) -> (s@1 : T, s@3 : test1::List) ; - Some (l) -> test1::List::Cons { 0 = ⊥ : T; 1 = ⊥ : std::boxed::Box>; } ; - Some (var@2) -> ⊥ : isize ; - Some (hd) -> ⊥ : T ; - Some (tl) -> ⊥ : std::boxed::Box> ; - Some (var@5) -> ⊥ : T ; - Some (var@6) -> ⊥ : test1::List ; - Some (var@7) -> false ; - Some (var@8) -> false ; - Some (var@9) -> () ; - Some (var@10) -> ⊥ : isize ; + Some (var@0) -> ⊥ : () ; + Some (x) -> ⌊mut@0⌋ ; + Some (px) -> ⊥ : &'_ mut (u32) ; + Some (p) -> ⌊mut@1⌋ ; + Some (var@4) -> ⊥ : &'_ mut (u32) ; + Some (pp0) -> &mut@1 (@shared_loan({2}, (&mut@0 (0: u32), 1: u32))) ; + Some (pp1) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + Some (var@7) -> ⌊inactivated_mut@2⌋ ; + Some (y) -> ⊥ : u32 ; + Some (var@9) -> ⊥ : &'_ mut (u32) ; + Some (var@10) -> ⊥ : &'_ mut (u32) ; } [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 - } - } + pp1 := move id_mut_pair(move var@7) ] **Context**: @@ -128999,21 +127709,23 @@ move var@6 # Frame 0: { - Some (var@0) -> ⊥ : (T, test1::List) ; - Some (l) -> test1::List::Nil ; - Some (var@2) -> 1: isize ; - Some (hd) -> ⊥ : T ; - Some (tl) -> ⊥ : std::boxed::Box> ; - Some (var@5) -> ⊥ : T ; - Some (var@6) -> ⊥ : test1::List ; - Some (var@7) -> true ; - Some (var@8) -> true ; - Some (var@9) -> ⊥ : () ; - Some (var@10) -> ⊥ : isize ; + Some (var@0) -> ⊥ : () ; + Some (x) -> ⌊mut@0⌋ ; + Some (px) -> ⊥ : &'_ mut (u32) ; + Some (p) -> ⌊mut@1⌋ ; + Some (var@4) -> ⊥ : &'_ mut (u32) ; + Some (pp0) -> &mut@1 (@shared_loan({2}, (&mut@0 (0: u32), 1: u32))) ; + Some (pp1) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + Some (var@7) -> ⌊inactivated_mut@2⌋ ; + Some (y) -> ⊥ : u32 ; + Some (var@9) -> ⊥ : &'_ mut (u32) ; + Some (var@10) -> ⊥ : &'_ mut (u32) ; } +[Debug] activate_inactivated_mut_borrow: resulting value: +(&mut@0 (0: u32), 1: u32) [Debug] eval_operand: - ctx: # Ended regions: {} @@ -129021,26 +127733,31 @@ move var@6 # Frame 0: { - Some (var@0) -> ⊥ : (T, test1::List) ; - Some (l) -> test1::List::Nil ; - Some (var@2) -> 1: isize ; - Some (hd) -> ⊥ : T ; - Some (tl) -> ⊥ : std::boxed::Box> ; - Some (var@5) -> ⊥ : T ; - Some (var@6) -> ⊥ : test1::List ; - Some (var@7) -> true ; - Some (var@8) -> true ; - Some (var@9) -> ⊥ : () ; - Some (var@10) -> ⊥ : isize ; + Some (var@0) -> ⊥ : () ; + Some (x) -> ⌊mut@0⌋ ; + Some (px) -> ⊥ : &'_ mut (u32) ; + Some (p) -> ⌊mut@1⌋ ; + Some (var@4) -> ⊥ : &'_ mut (u32) ; + Some (pp0) -> &mut@1 (⌊mut@2⌋) ; + Some (pp1) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + Some (var@7) -> &mut@2 ((&mut@0 (0: u32), 1: u32)) ; + Some (y) -> ⊥ : u32 ; + Some (var@9) -> ⊥ : &'_ mut (u32) ; + Some (var@10) -> ⊥ : &'_ mut (u32) ; } - op: -move var@2 +move var@7 [Debug] **About to evaluate statement**: [ - panic + y := 2: u32; + var@10 := &mut y; + var@9 := &mut *(var@10); + *((pp1).0) := move var@9; + *((pp1).1) := 3: u32; + return ] **Context**: @@ -129049,39 +127766,28 @@ move var@2 # Frame 0: { - Some (var@0) -> ⊥ : (T, test1::List) ; - Some (l) -> test1::List::Nil ; - Some (var@2) -> ⊥ : isize ; - Some (hd) -> ⊥ : T ; - Some (tl) -> ⊥ : std::boxed::Box> ; - Some (var@5) -> ⊥ : T ; - Some (var@6) -> ⊥ : test1::List ; - Some (var@7) -> true ; - Some (var@8) -> true ; - Some (var@9) -> ⊥ : () ; - Some (var@10) -> ⊥ : isize ; + Some (var@0) -> ⊥ : () ; + Some (x) -> ⌊mut@0⌋ ; + Some (px) -> ⊥ : &'_ mut (u32) ; + Some (p) -> ⌊mut@1⌋ ; + Some (var@4) -> ⊥ : &'_ mut (u32) ; + Some (pp0) -> &mut@1 (⌊mut@2⌋) ; + Some (pp1) -> s@0 : &r@0 mut ((&r@0 mut (u32), u32)) ; + Some (var@7) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + Some (y) -> ⊥ : u32 ; + Some (var@9) -> ⊥ : &'_ mut (u32) ; + Some (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] 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 + y := 2: u32 ] **Context**: @@ -129091,23 +127797,59 @@ move var@2 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (l) -> ⊥ : test1::List ; - Some (var@2) -> ⊥ : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; - Some (hd) -> ⊥ : i32 ; - Some (tl) -> ⊥ : test1::List ; - Some (var@6) -> ⊥ : (i32, test1::List) ; - Some (var@7) -> ⊥ : test1::List ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; + Some (x) -> ⌊mut@0⌋ ; + Some (px) -> ⊥ : &'_ mut (u32) ; + Some (p) -> ⌊mut@1⌋ ; + Some (var@4) -> ⊥ : &'_ mut (u32) ; + Some (pp0) -> &mut@1 (⌊mut@2⌋) ; + Some (pp1) -> s@0 : &r@0 mut ((&r@0 mut (u32), u32)) ; + Some (var@7) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + Some (y) -> ⊥ : u32 ; + Some (var@9) -> ⊥ : &'_ mut (u32) ; + Some (var@10) -> ⊥ : &'_ mut (u32) ; + abs@0{parents={}}{regions={0}} { + &mut@2 ((&mut@0 (0: u32), 1: u32)), + proj_loans (s@0 : &r@0 mut ((&r@0 mut (u32), u32))) + } +} + + + +[Debug] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + Some (var@0) -> ⊥ : () ; + Some (x) -> ⌊mut@0⌋ ; + Some (px) -> ⊥ : &'_ mut (u32) ; + Some (p) -> ⌊mut@1⌋ ; + Some (var@4) -> ⊥ : &'_ mut (u32) ; + Some (pp0) -> &mut@1 (⌊mut@2⌋) ; + Some (pp1) -> s@0 : &r@0 mut ((&r@0 mut (u32), u32)) ; + Some (var@7) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + Some (y) -> ⊥ : u32 ; + Some (var@9) -> ⊥ : &'_ mut (u32) ; + Some (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**: [ - set_discriminant(var@3, 1) + var@10 := &mut y; + var@9 := &mut *(var@10); + *((pp1).0) := move var@9; + *((pp1).1) := 3: u32; + return ] **Context**: @@ -129117,36 +127859,27 @@ move var@2 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (l) -> ⊥ : test1::List ; - Some (var@2) -> ⊥ : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; - Some (hd) -> ⊥ : i32 ; - Some (tl) -> ⊥ : test1::List ; - Some (var@6) -> ⊥ : (i32, test1::List) ; - Some (var@7) -> ⊥ : test1::List ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; + Some (x) -> ⌊mut@0⌋ ; + Some (px) -> ⊥ : &'_ mut (u32) ; + Some (p) -> ⌊mut@1⌋ ; + Some (var@4) -> ⊥ : &'_ mut (u32) ; + Some (pp0) -> &mut@1 (⌊mut@2⌋) ; + Some (pp1) -> s@0 : &r@0 mut ((&r@0 mut (u32), u32)) ; + Some (var@7) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + Some (y) -> 2: u32 ; + Some (var@9) -> ⊥ : &'_ mut (u32) ; + Some (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@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 + var@10 := &mut y ] **Context**: @@ -129156,23 +127889,30 @@ move var@2 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (l) -> ⊥ : test1::List ; - Some (var@2) -> ⊥ : std::boxed::Box> ; - Some (var@3) -> test1::List::Nil ; - Some (hd) -> ⊥ : i32 ; - Some (tl) -> ⊥ : test1::List ; - Some (var@6) -> ⊥ : (i32, test1::List) ; - Some (var@7) -> ⊥ : test1::List ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; + Some (x) -> ⌊mut@0⌋ ; + Some (px) -> ⊥ : &'_ mut (u32) ; + Some (p) -> ⌊mut@1⌋ ; + Some (var@4) -> ⊥ : &'_ mut (u32) ; + Some (pp0) -> &mut@1 (⌊mut@2⌋) ; + Some (pp1) -> s@0 : &r@0 mut ((&r@0 mut (u32), u32)) ; + Some (var@7) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + Some (y) -> 2: u32 ; + Some (var@9) -> ⊥ : &'_ mut (u32) ; + Some (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@2 := move alloc::boxed::Box>::new(move var@3) + var@9 := &mut *(var@10); + *((pp1).0) := move var@9; + *((pp1).1) := 3: u32; + return ] **Context**: @@ -129182,63 +127922,58 @@ move var@2 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (l) -> ⊥ : test1::List ; - Some (var@2) -> ⊥ : std::boxed::Box> ; - Some (var@3) -> test1::List::Nil ; - Some (hd) -> ⊥ : i32 ; - Some (tl) -> ⊥ : test1::List ; - Some (var@6) -> ⊥ : (i32, test1::List) ; - Some (var@7) -> ⊥ : test1::List ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; + Some (x) -> ⌊mut@0⌋ ; + Some (px) -> ⊥ : &'_ mut (u32) ; + Some (p) -> ⌊mut@1⌋ ; + Some (var@4) -> ⊥ : &'_ mut (u32) ; + Some (pp0) -> &mut@1 (⌊mut@2⌋) ; + Some (pp1) -> s@0 : &r@0 mut ((&r@0 mut (u32), u32)) ; + Some (var@7) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + Some (y) -> ⌊mut@3⌋ ; + Some (var@9) -> ⊥ : &'_ mut (u32) ; + Some (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] eval_non_local_function_call: -- fid:CfimAst.BoxNew -- type_params: [test1::List] -- args: [move var@3] -- dest: var@2 -[Debug] eval_operand: -- ctx: +[Debug] +**About to evaluate statement**: [ + var@9 := &mut *(var@10) +] + +**Context**: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (l) -> ⊥ : test1::List ; - Some (var@2) -> ⊥ : std::boxed::Box> ; - Some (var@3) -> test1::List::Nil ; - Some (hd) -> ⊥ : i32 ; - Some (tl) -> ⊥ : test1::List ; - Some (var@6) -> ⊥ : (i32, test1::List) ; - Some (var@7) -> ⊥ : test1::List ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; + Some (x) -> ⌊mut@0⌋ ; + Some (px) -> ⊥ : &'_ mut (u32) ; + Some (p) -> ⌊mut@1⌋ ; + Some (var@4) -> ⊥ : &'_ mut (u32) ; + Some (pp0) -> &mut@1 (⌊mut@2⌋) ; + Some (pp1) -> s@0 : &r@0 mut ((&r@0 mut (u32), u32)) ; + Some (var@7) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + Some (y) -> ⌊mut@3⌋ ; + Some (var@9) -> ⊥ : &'_ mut (u32) ; + Some (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))) + } } -- op: -move var@3 [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); + *((pp1).0) := move var@9; + *((pp1).1) := 3: u32; return ] @@ -129249,23 +127984,27 @@ move var@3 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (l) -> ⊥ : test1::List ; - Some (var@2) -> s@0 : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; - Some (hd) -> ⊥ : i32 ; - Some (tl) -> ⊥ : test1::List ; - Some (var@6) -> ⊥ : (i32, test1::List) ; - Some (var@7) -> ⊥ : test1::List ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; + Some (x) -> ⌊mut@0⌋ ; + Some (px) -> ⊥ : &'_ mut (u32) ; + Some (p) -> ⌊mut@1⌋ ; + Some (var@4) -> ⊥ : &'_ mut (u32) ; + Some (pp0) -> &mut@1 (⌊mut@2⌋) ; + Some (pp1) -> s@0 : &r@0 mut ((&r@0 mut (u32), u32)) ; + Some (var@7) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + Some (y) -> ⌊mut@3⌋ ; + Some (var@9) -> &mut@4 (2: u32) ; + Some (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**: [ - (l as test1::List::Cons).0 := 0: i32 + *((pp1).0) := move var@9 ] **Context**: @@ -129275,16 +128014,20 @@ move var@3 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (l) -> ⊥ : test1::List ; - Some (var@2) -> s@0 : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; - Some (hd) -> ⊥ : i32 ; - Some (tl) -> ⊥ : test1::List ; - Some (var@6) -> ⊥ : (i32, test1::List) ; - Some (var@7) -> ⊥ : test1::List ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; + Some (x) -> ⌊mut@0⌋ ; + Some (px) -> ⊥ : &'_ mut (u32) ; + Some (p) -> ⌊mut@1⌋ ; + Some (var@4) -> ⊥ : &'_ mut (u32) ; + Some (pp0) -> &mut@1 (⌊mut@2⌋) ; + Some (pp1) -> s@0 : &r@0 mut ((&r@0 mut (u32), u32)) ; + Some (var@7) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + Some (y) -> ⌊mut@3⌋ ; + Some (var@9) -> &mut@4 (2: u32) ; + Some (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))) + } } @@ -129297,38 +128040,133 @@ move var@3 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (l) -> ⊥ : test1::List ; - Some (var@2) -> s@0 : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; - Some (hd) -> ⊥ : i32 ; - Some (tl) -> ⊥ : test1::List ; - Some (var@6) -> ⊥ : (i32, test1::List) ; - Some (var@7) -> ⊥ : test1::List ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; + Some (x) -> ⌊mut@0⌋ ; + Some (px) -> ⊥ : &'_ mut (u32) ; + Some (p) -> ⌊mut@1⌋ ; + Some (var@4) -> ⊥ : &'_ mut (u32) ; + Some (pp0) -> &mut@1 (⌊mut@2⌋) ; + Some (pp1) -> s@0 : &r@0 mut ((&r@0 mut (u32), u32)) ; + Some (var@7) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + Some (y) -> ⌊mut@3⌋ ; + Some (var@9) -> &mut@4 (2: u32) ; + Some (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: -0: i32 +move var@9 + +[Debug] expand_symbolic_value: s@0 : &r@0 mut ((&r@0 mut (u32), u32)) + +- original context: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + Some (var@0) -> ⊥ : () ; + Some (x) -> ⌊mut@0⌋ ; + Some (px) -> ⊥ : &'_ mut (u32) ; + Some (p) -> ⌊mut@1⌋ ; + Some (var@4) -> ⊥ : &'_ mut (u32) ; + Some (pp0) -> &mut@1 (⌊mut@2⌋) ; + Some (pp1) -> s@0 : &r@0 mut ((&r@0 mut (u32), u32)) ; + Some (var@7) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + Some (y) -> ⌊mut@3⌋ ; + Some (var@9) -> ⊥ : &'_ mut (u32) ; + Some (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))) + } + None -> &mut@4 (2: u32) ; +} + + +- new context: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + Some (var@0) -> ⊥ : () ; + Some (x) -> ⌊mut@0⌋ ; + Some (px) -> ⊥ : &'_ mut (u32) ; + Some (p) -> ⌊mut@1⌋ ; + Some (var@4) -> ⊥ : &'_ mut (u32) ; + Some (pp0) -> &mut@1 (⌊mut@2⌋) ; + Some (pp1) -> &mut@5 (s@1 : (&r@0 mut (u32), u32)) ; + Some (var@7) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + Some (y) -> ⌊mut@3⌋ ; + Some (var@9) -> ⊥ : &'_ mut (u32) ; + Some (var@10) -> &mut@3 (⌊mut@4⌋) ; + abs@0{parents={}}{regions={0}} { + &mut@2 ((&mut@0 (0: u32), 1: u32)), + ⌊mut@5, proj_loans (s@1 : (&r@0 mut (u32), u32))⌋ + } + None -> &mut@4 (2: u32) ; +} + + +[Debug] expand_symbolic_value: s@1 : (&r@0 mut (u32), u32) + +- original context: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + Some (var@0) -> ⊥ : () ; + Some (x) -> ⌊mut@0⌋ ; + Some (px) -> ⊥ : &'_ mut (u32) ; + Some (p) -> ⌊mut@1⌋ ; + Some (var@4) -> ⊥ : &'_ mut (u32) ; + Some (pp0) -> &mut@1 (⌊mut@2⌋) ; + Some (pp1) -> &mut@5 (s@1 : (&r@0 mut (u32), u32)) ; + Some (var@7) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + Some (y) -> ⌊mut@3⌋ ; + Some (var@9) -> ⊥ : &'_ mut (u32) ; + Some (var@10) -> &mut@3 (⌊mut@4⌋) ; + abs@0{parents={}}{regions={0}} { + &mut@2 ((&mut@0 (0: u32), 1: u32)), + ⌊mut@5, proj_loans (s@1 : (&r@0 mut (u32), u32))⌋ + } + None -> &mut@4 (2: u32) ; +} + + +- new context: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + Some (var@0) -> ⊥ : () ; + Some (x) -> ⌊mut@0⌋ ; + Some (px) -> ⊥ : &'_ mut (u32) ; + Some (p) -> ⌊mut@1⌋ ; + Some (var@4) -> ⊥ : &'_ mut (u32) ; + Some (pp0) -> &mut@1 (⌊mut@2⌋) ; + Some (pp1) -> &mut@5 ((s@2 : &r@0 mut (u32), s@3 : u32)) ; + Some (var@7) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + Some (y) -> ⌊mut@3⌋ ; + Some (var@9) -> ⊥ : &'_ mut (u32) ; + Some (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))⌋ + } + None -> &mut@4 (2: u32) ; +} + -[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); + *((pp1).1) := 3: u32; return ] @@ -129339,23 +128177,27 @@ ty: (Types.Adt ((Types.AdtId 1), [], [(Types.Integer Types.I32)])) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (l) -> test1::List::Cons { 0 = 0: i32; 1 = ⊥ : std::boxed::Box>; } ; - Some (var@2) -> s@0 : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; - Some (hd) -> ⊥ : i32 ; - Some (tl) -> ⊥ : test1::List ; - Some (var@6) -> ⊥ : (i32, test1::List) ; - Some (var@7) -> ⊥ : test1::List ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; + Some (x) -> ⌊mut@0⌋ ; + Some (px) -> ⊥ : &'_ mut (u32) ; + Some (p) -> ⌊mut@1⌋ ; + Some (var@4) -> ⊥ : &'_ mut (u32) ; + Some (pp0) -> &mut@1 (⌊mut@2⌋) ; + Some (pp1) -> &mut@5 ((&mut@4 (2: u32), s@3 : u32)) ; + Some (var@7) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + Some (y) -> ⌊mut@3⌋ ; + Some (var@9) -> ⊥ : &'_ mut (u32) ; + Some (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**: [ - (l as test1::List::Cons).1 := move var@2 + *((pp1).1) := 3: u32 ] **Context**: @@ -129365,16 +128207,20 @@ ty: (Types.Adt ((Types.AdtId 1), [], [(Types.Integer Types.I32)])) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (l) -> test1::List::Cons { 0 = 0: i32; 1 = ⊥ : std::boxed::Box>; } ; - Some (var@2) -> s@0 : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; - Some (hd) -> ⊥ : i32 ; - Some (tl) -> ⊥ : test1::List ; - Some (var@6) -> ⊥ : (i32, test1::List) ; - Some (var@7) -> ⊥ : test1::List ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; + Some (x) -> ⌊mut@0⌋ ; + Some (px) -> ⊥ : &'_ mut (u32) ; + Some (p) -> ⌊mut@1⌋ ; + Some (var@4) -> ⊥ : &'_ mut (u32) ; + Some (pp0) -> &mut@1 (⌊mut@2⌋) ; + Some (pp1) -> &mut@5 ((&mut@4 (2: u32), s@3 : u32)) ; + Some (var@7) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + Some (y) -> ⌊mut@3⌋ ; + Some (var@9) -> ⊥ : &'_ mut (u32) ; + Some (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))⌋ + } } @@ -129387,34 +128233,28 @@ ty: (Types.Adt ((Types.AdtId 1), [], [(Types.Integer Types.I32)])) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (l) -> test1::List::Cons { 0 = 0: i32; 1 = ⊥ : std::boxed::Box>; } ; - Some (var@2) -> s@0 : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; - Some (hd) -> ⊥ : i32 ; - Some (tl) -> ⊥ : test1::List ; - Some (var@6) -> ⊥ : (i32, test1::List) ; - Some (var@7) -> ⊥ : test1::List ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; + Some (x) -> ⌊mut@0⌋ ; + Some (px) -> ⊥ : &'_ mut (u32) ; + Some (p) -> ⌊mut@1⌋ ; + Some (var@4) -> ⊥ : &'_ mut (u32) ; + Some (pp0) -> &mut@1 (⌊mut@2⌋) ; + Some (pp1) -> &mut@5 ((&mut@4 (2: u32), s@3 : u32)) ; + Some (var@7) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + Some (y) -> ⌊mut@3⌋ ; + Some (var@9) -> ⊥ : &'_ mut (u32) ; + Some (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: -move var@2 +3: u32 [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 ] @@ -129425,23 +128265,30 @@ move var@2 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (l) -> test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box>; } ; - Some (var@2) -> ⊥ : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; - Some (hd) -> ⊥ : i32 ; - Some (tl) -> ⊥ : test1::List ; - Some (var@6) -> ⊥ : (i32, test1::List) ; - Some (var@7) -> ⊥ : test1::List ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; + Some (x) -> ⌊mut@0⌋ ; + Some (px) -> ⊥ : &'_ mut (u32) ; + Some (p) -> ⌊mut@1⌋ ; + Some (var@4) -> ⊥ : &'_ mut (u32) ; + Some (pp0) -> &mut@1 (⌊mut@2⌋) ; + Some (pp1) -> &mut@5 ((&mut@4 (2: u32), 3: u32)) ; + Some (var@7) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; + Some (y) -> ⌊mut@3⌋ ; + Some (var@9) -> ⊥ : &'_ mut (u32) ; + Some (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**: [ - set_discriminant(l, 0) + var@2 := &mut *(x); + var@0 := &mut *(var@2); + return ] **Context**: @@ -129450,33 +128297,19 @@ move var@2 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (l) -> test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box>; } ; - Some (var@2) -> ⊥ : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; - Some (hd) -> ⊥ : i32 ; - Some (tl) -> ⊥ : test1::List ; - Some (var@6) -> ⊥ : (i32, test1::List) ; - Some (var@7) -> ⊥ : test1::List ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; + abs@0{parents={}}{regions={0}} { + proj_loans (s@0 : &r@0 mut (&r@0 mut ((&r@0 mut (T), u32)))) + } + Some (var@0) -> ⊥ : &'_ mut (&'_ mut ((&'_ mut (T), u32))) ; + Some (x) -> s@0 : &r@0 mut (&r@0 mut ((&r@0 mut (T), u32))) ; + Some (var@2) -> ⊥ : &'_ mut (&'_ mut ((&'_ mut (T), u32))) ; } [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 + var@2 := &mut *(x) ] **Context**: @@ -129485,81 +128318,51 @@ move var@2 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (l) -> test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box>; } ; - Some (var@2) -> ⊥ : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; - Some (hd) -> ⊥ : i32 ; - Some (tl) -> ⊥ : test1::List ; - Some (var@6) -> ⊥ : (i32, test1::List) ; - Some (var@7) -> ⊥ : test1::List ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; + abs@0{parents={}}{regions={0}} { + proj_loans (s@0 : &r@0 mut (&r@0 mut ((&r@0 mut (T), u32)))) + } + Some (var@0) -> ⊥ : &'_ mut (&'_ mut ((&'_ mut (T), u32))) ; + Some (x) -> s@0 : &r@0 mut (&r@0 mut ((&r@0 mut (T), u32))) ; + Some (var@2) -> ⊥ : &'_ mut (&'_ mut ((&'_ mut (T), u32))) ; } -[Debug] -**About to evaluate statement**: [ - var@7 := move l -] +[Debug] expand_symbolic_value: s@0 : &r@0 mut (&r@0 mut ((&r@0 mut (T), u32))) -**Context**: +- original context: # Ended regions: {} # 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (l) -> test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box>; } ; - Some (var@2) -> ⊥ : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; - Some (hd) -> ⊥ : i32 ; - Some (tl) -> ⊥ : test1::List ; - Some (var@6) -> ⊥ : (i32, test1::List) ; - Some (var@7) -> ⊥ : test1::List ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; + abs@0{parents={}}{regions={0}} { + proj_loans (s@0 : &r@0 mut (&r@0 mut ((&r@0 mut (T), u32)))) + } + Some (var@0) -> ⊥ : &'_ mut (&'_ mut ((&'_ mut (T), u32))) ; + Some (x) -> s@0 : &r@0 mut (&r@0 mut ((&r@0 mut (T), u32))) ; + Some (var@2) -> ⊥ : &'_ mut (&'_ mut ((&'_ mut (T), u32))) ; } - -[Debug] eval_operand: -- ctx: +- new context: # Ended regions: {} # 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (l) -> test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box>; } ; - Some (var@2) -> ⊥ : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; - Some (hd) -> ⊥ : i32 ; - Some (tl) -> ⊥ : test1::List ; - Some (var@6) -> ⊥ : (i32, test1::List) ; - Some (var@7) -> ⊥ : test1::List ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; + abs@0{parents={}}{regions={0}} { + ⌊mut@0, proj_loans (s@1 : &r@0 mut ((&r@0 mut (T), u32)))⌋ + } + Some (var@0) -> ⊥ : &'_ mut (&'_ mut ((&'_ mut (T), u32))) ; + Some (x) -> &mut@0 (s@1 : &r@0 mut ((&r@0 mut (T), u32))) ; + Some (var@2) -> ⊥ : &'_ mut (&'_ mut ((&'_ mut (T), u32))) ; } -- op: -move l - [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); + var@0 := &mut *(var@2); return ] @@ -129569,24 +128372,19 @@ move l # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (l) -> ⊥ : test1::List ; - Some (var@2) -> ⊥ : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; - Some (hd) -> ⊥ : i32 ; - Some (tl) -> ⊥ : test1::List ; - Some (var@6) -> ⊥ : (i32, test1::List) ; - Some (var@7) -> test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box>; } ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; + abs@0{parents={}}{regions={0}} { + ⌊mut@0, proj_loans (s@1 : &r@0 mut ((&r@0 mut (T), u32)))⌋ + } + Some (var@0) -> ⊥ : &'_ mut (&'_ mut ((&'_ mut (T), u32))) ; + Some (x) -> &mut@0 (⌊mut@1⌋) ; + Some (var@2) -> &mut@1 (s@1 : &r@0 mut ((&r@0 mut (T), u32))) ; } [Debug] **About to evaluate statement**: [ - var@6 := move split_list(move var@7) + var@0 := &mut *(var@2) ] **Context**: @@ -129595,54 +128393,42 @@ move l # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (l) -> ⊥ : test1::List ; - Some (var@2) -> ⊥ : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; - Some (hd) -> ⊥ : i32 ; - Some (tl) -> ⊥ : test1::List ; - Some (var@6) -> ⊥ : (i32, test1::List) ; - Some (var@7) -> test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box>; } ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; + abs@0{parents={}}{regions={0}} { + ⌊mut@0, proj_loans (s@1 : &r@0 mut ((&r@0 mut (T), u32)))⌋ + } + Some (var@0) -> ⊥ : &'_ mut (&'_ mut ((&'_ mut (T), u32))) ; + Some (x) -> &mut@0 (⌊mut@1⌋) ; + Some (var@2) -> &mut@1 (s@1 : &r@0 mut ((&r@0 mut (T), u32))) ; } -[Debug] eval_operand: -- ctx: +[Debug] +**About to evaluate statement**: [ + return +] + +**Context**: # Ended regions: {} # 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (l) -> ⊥ : test1::List ; - Some (var@2) -> ⊥ : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; - Some (hd) -> ⊥ : i32 ; - Some (tl) -> ⊥ : test1::List ; - Some (var@6) -> ⊥ : (i32, test1::List) ; - Some (var@7) -> test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box>; } ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; + abs@0{parents={}}{regions={0}} { + ⌊mut@0, proj_loans (s@1 : &r@0 mut ((&r@0 mut (T), u32)))⌋ + } + Some (var@0) -> &mut@2 (s@1 : &r@0 mut ((&r@0 mut (T), u32))) ; + Some (x) -> &mut@0 (⌊mut@1⌋) ; + Some (var@2) -> &mut@1 (⌊mut@2⌋) ; } -- op: -move var@7 +[Debug] test_function_symbolic: id_mut_mut_mut_same [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); + var@2 := &mut *(x); + var@0 := &mut *(var@2); return ] @@ -129652,24 +128438,19 @@ move var@7 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (l) -> ⊥ : test1::List ; - Some (var@2) -> ⊥ : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; - Some (hd) -> ⊥ : i32 ; - Some (tl) -> ⊥ : test1::List ; - Some (var@6) -> s@1 : (i32, test1::List) ; - Some (var@7) -> ⊥ : test1::List ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; + abs@0{parents={}}{regions={0}} { + proj_loans (s@0 : &r@0 mut (&r@0 mut (&r@0 mut (u32)))) + } + Some (var@0) -> ⊥ : &'_ mut (&'_ mut (&'_ mut (u32))) ; + Some (x) -> s@0 : &r@0 mut (&r@0 mut (&r@0 mut (u32))) ; + Some (var@2) -> ⊥ : &'_ mut (&'_ mut (&'_ mut (u32))) ; } [Debug] **About to evaluate statement**: [ - hd := copy (var@6).0 + var@2 := &mut *(x) ] **Context**: @@ -129678,96 +128459,73 @@ move var@7 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (l) -> ⊥ : test1::List ; - Some (var@2) -> ⊥ : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; - Some (hd) -> ⊥ : i32 ; - Some (tl) -> ⊥ : test1::List ; - Some (var@6) -> s@1 : (i32, test1::List) ; - Some (var@7) -> ⊥ : test1::List ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; + abs@0{parents={}}{regions={0}} { + proj_loans (s@0 : &r@0 mut (&r@0 mut (&r@0 mut (u32)))) + } + Some (var@0) -> ⊥ : &'_ mut (&'_ mut (&'_ mut (u32))) ; + Some (x) -> s@0 : &r@0 mut (&r@0 mut (&r@0 mut (u32))) ; + Some (var@2) -> ⊥ : &'_ mut (&'_ mut (&'_ mut (u32))) ; } -[Debug] eval_operand: -- ctx: +[Debug] expand_symbolic_value: s@0 : &r@0 mut (&r@0 mut (&r@0 mut (u32))) + +- original context: # Ended regions: {} # 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (l) -> ⊥ : test1::List ; - Some (var@2) -> ⊥ : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; - Some (hd) -> ⊥ : i32 ; - Some (tl) -> ⊥ : test1::List ; - Some (var@6) -> s@1 : (i32, test1::List) ; - Some (var@7) -> ⊥ : test1::List ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; + abs@0{parents={}}{regions={0}} { + proj_loans (s@0 : &r@0 mut (&r@0 mut (&r@0 mut (u32)))) + } + Some (var@0) -> ⊥ : &'_ mut (&'_ mut (&'_ mut (u32))) ; + Some (x) -> s@0 : &r@0 mut (&r@0 mut (&r@0 mut (u32))) ; + Some (var@2) -> ⊥ : &'_ mut (&'_ mut (&'_ mut (u32))) ; } -- op: -copy (var@6).0 - -[Debug] expand_symbolic_value: s@1 : (i32, test1::List) - -- original context: +- new context: # Ended regions: {} # 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (l) -> ⊥ : test1::List ; - Some (var@2) -> ⊥ : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; - Some (hd) -> ⊥ : i32 ; - Some (tl) -> ⊥ : test1::List ; - Some (var@6) -> s@1 : (i32, test1::List) ; - Some (var@7) -> ⊥ : test1::List ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; + abs@0{parents={}}{regions={0}} { + ⌊mut@0, proj_loans (s@1 : &r@0 mut (&r@0 mut (u32)))⌋ + } + Some (var@0) -> ⊥ : &'_ mut (&'_ mut (&'_ mut (u32))) ; + Some (x) -> &mut@0 (s@1 : &r@0 mut (&r@0 mut (u32))) ; + Some (var@2) -> ⊥ : &'_ mut (&'_ mut (&'_ mut (u32))) ; } -- new context: +[Debug] +**About to evaluate statement**: [ + var@0 := &mut *(var@2); + return +] + +**Context**: # Ended regions: {} # 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (l) -> ⊥ : test1::List ; - Some (var@2) -> ⊥ : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; - Some (hd) -> ⊥ : i32 ; - Some (tl) -> ⊥ : test1::List ; - Some (var@6) -> (s@2 : i32, s@3 : test1::List) ; - Some (var@7) -> ⊥ : test1::List ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; + abs@0{parents={}}{regions={0}} { + ⌊mut@0, proj_loans (s@1 : &r@0 mut (&r@0 mut (u32)))⌋ + } + Some (var@0) -> ⊥ : &'_ mut (&'_ mut (&'_ mut (u32))) ; + Some (x) -> &mut@0 (⌊mut@1⌋) ; + Some (var@2) -> &mut@1 (s@1 : &r@0 mut (&r@0 mut (u32))) ; } + [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 + var@0 := &mut *(var@2) ] **Context**: @@ -129776,24 +128534,19 @@ copy (var@6).0 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (l) -> ⊥ : test1::List ; - Some (var@2) -> ⊥ : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; - Some (hd) -> s@2 : i32 ; - Some (tl) -> ⊥ : test1::List ; - Some (var@6) -> (s@2 : i32, s@3 : test1::List) ; - Some (var@7) -> ⊥ : test1::List ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; + abs@0{parents={}}{regions={0}} { + ⌊mut@0, proj_loans (s@1 : &r@0 mut (&r@0 mut (u32)))⌋ + } + Some (var@0) -> ⊥ : &'_ mut (&'_ mut (&'_ mut (u32))) ; + Some (x) -> &mut@0 (⌊mut@1⌋) ; + Some (var@2) -> &mut@1 (s@1 : &r@0 mut (&r@0 mut (u32))) ; } [Debug] **About to evaluate statement**: [ - tl := move (var@6).1 + return ] **Context**: @@ -129802,52 +128555,47 @@ copy (var@6).0 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (l) -> ⊥ : test1::List ; - Some (var@2) -> ⊥ : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; - Some (hd) -> s@2 : i32 ; - Some (tl) -> ⊥ : test1::List ; - Some (var@6) -> (s@2 : i32, s@3 : test1::List) ; - Some (var@7) -> ⊥ : test1::List ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; + abs@0{parents={}}{regions={0}} { + ⌊mut@0, proj_loans (s@1 : &r@0 mut (&r@0 mut (u32)))⌋ + } + Some (var@0) -> &mut@2 (s@1 : &r@0 mut (&r@0 mut (u32))) ; + Some (x) -> &mut@0 (⌊mut@1⌋) ; + Some (var@2) -> &mut@1 (⌊mut@2⌋) ; } -[Debug] eval_operand: -- ctx: +[Debug] test_function_symbolic: id_borrow1 +[Debug] +**About to evaluate statement**: [ + return +] + +**Context**: # Ended regions: {} # 1 frame(s) # Frame 0: { + abs@0{parents={}}{regions={0}} { + proj_loans (s@0 : &r@0 mut (&r@1 (u32))), + proj_loans (s@1 : &r@0 (&r@0 mut (u32))) + } + abs@1{parents={0}}{regions={1}} { + proj_loans (s@0 : &r@0 mut (&r@1 (u32))), + proj_loans (s@1 : &r@0 (&r@0 mut (u32))) + } Some (var@0) -> ⊥ : () ; - Some (l) -> ⊥ : test1::List ; - Some (var@2) -> ⊥ : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; - Some (hd) -> s@2 : i32 ; - Some (tl) -> ⊥ : test1::List ; - Some (var@6) -> (s@2 : i32, s@3 : test1::List) ; - Some (var@7) -> ⊥ : test1::List ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; + Some (_x) -> s@0 : &r@0 mut (&r@1 (u32)) ; + Some (_y) -> s@1 : &r@0 (&r@0 mut (u32)) ; } -- op: -move (var@6).1 +[Debug] test_function_symbolic: test_static [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); + var@0 := copy x; return ] @@ -129857,24 +128605,15 @@ move (var@6).1 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (l) -> ⊥ : test1::List ; - Some (var@2) -> ⊥ : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; - Some (hd) -> s@2 : i32 ; - Some (tl) -> s@3 : test1::List ; - Some (var@6) -> (s@2 : i32, ⊥ : test1::List) ; - Some (var@7) -> ⊥ : test1::List ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; + Some (var@0) -> ⊥ : &'_ (u32) ; + Some (x) -> s@0 : &'static (u32) ; } [Debug] **About to evaluate statement**: [ - var@10 := copy hd + var@0 := copy x ] **Context**: @@ -129883,17 +128622,8 @@ move (var@6).1 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (l) -> ⊥ : test1::List ; - Some (var@2) -> ⊥ : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; - Some (hd) -> s@2 : i32 ; - Some (tl) -> s@3 : test1::List ; - Some (var@6) -> (s@2 : i32, ⊥ : test1::List) ; - Some (var@7) -> ⊥ : test1::List ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; + Some (var@0) -> ⊥ : &'_ (u32) ; + Some (x) -> s@0 : &'static (u32) ; } @@ -129905,29 +128635,16 @@ move (var@6).1 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (l) -> ⊥ : test1::List ; - Some (var@2) -> ⊥ : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; - Some (hd) -> s@2 : i32 ; - Some (tl) -> s@3 : test1::List ; - Some (var@6) -> (s@2 : i32, ⊥ : test1::List) ; - Some (var@7) -> ⊥ : test1::List ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; + Some (var@0) -> ⊥ : &'_ (u32) ; + Some (x) -> s@0 : &'static (u32) ; } - op: -copy hd +copy x [Debug] **About to evaluate statement**: [ - var@9 := move var@10 == 0: i32; - var@8 := ¬ move var@9; - assert(¬move var@8); - drop(tl); return ] @@ -129937,24 +128654,17 @@ copy hd # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (l) -> ⊥ : test1::List ; - Some (var@2) -> ⊥ : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; - Some (hd) -> s@2 : i32 ; - Some (tl) -> s@3 : test1::List ; - Some (var@6) -> (s@2 : i32, ⊥ : test1::List) ; - Some (var@7) -> ⊥ : test1::List ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> s@2 : i32 ; + Some (var@0) -> s@0 : &'static (u32) ; + Some (x) -> s@0 : &'static (u32) ; } +[Debug] test_function_symbolic: test_char [Debug] **About to evaluate statement**: [ - var@9 := move var@10 == 0: i32 + var@0 := a; + return ] **Context**: @@ -129963,44 +128673,26 @@ copy hd # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (l) -> ⊥ : test1::List ; - Some (var@2) -> ⊥ : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; - Some (hd) -> s@2 : i32 ; - Some (tl) -> s@3 : test1::List ; - Some (var@6) -> (s@2 : i32, ⊥ : test1::List) ; - Some (var@7) -> ⊥ : test1::List ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> s@2 : i32 ; + Some (var@0) -> ⊥ : char ; } -[Debug] eval_operand: -- ctx: +[Debug] +**About to evaluate statement**: [ + var@0 := a +] + +**Context**: # Ended regions: {} # 1 frame(s) # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (l) -> ⊥ : test1::List ; - Some (var@2) -> ⊥ : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; - Some (hd) -> s@2 : i32 ; - Some (tl) -> s@3 : test1::List ; - Some (var@6) -> (s@2 : i32, ⊥ : test1::List) ; - Some (var@7) -> ⊥ : test1::List ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> s@2 : i32 ; + Some (var@0) -> ⊥ : char ; } -- op: -move var@10 [Debug] eval_operand: - ctx: @@ -130009,28 +128701,62 @@ move var@10 # Frame 0: { - Some (var@0) -> ⊥ : () ; - Some (l) -> ⊥ : test1::List ; - Some (var@2) -> ⊥ : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; - Some (hd) -> s@2 : i32 ; - Some (tl) -> s@3 : test1::List ; - Some (var@6) -> (s@2 : i32, ⊥ : test1::List) ; - Some (var@7) -> ⊥ : test1::List ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; + Some (var@0) -> ⊥ : char ; } - op: -0: i32 +a [Debug] **About to evaluate statement**: [ - var@8 := ¬ move var@9; - assert(¬move var@8); - drop(tl); + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + Some (var@0) -> a ; +} + + + +[Debug] test_function_symbolic: test_loops +[Debug] +**About to evaluate statement**: [ + x := move test_loop1(2: u32); + var@4 := copy x; + var@3 := move var@4 == 2: u32; + var@2 := ¬ move var@3; + assert(¬move var@2); + x := move test_loop2(2: u32); + var@8 := copy x; + var@7 := move var@8 == 1: u32; + var@6 := ¬ move var@7; + assert(¬move var@6); + x := move test_loop3(2: u32); + var@12 := copy x; + var@11 := move var@12 == 3: u32; + var@10 := ¬ move var@11; + assert(¬move var@10); + x := move test_loop4(20: u32); + var@16 := copy x; + var@15 := move var@16 == 1: u32; + var@14 := ¬ move var@15; + assert(¬move var@14); + x := move test_loop5(2: u32); + var@20 := copy x; + var@19 := move var@20 == 2: u32; + var@18 := ¬ move var@19; + assert(¬move var@18); + x := move test_loop6(2: u32); + var@24 := copy x; + var@23 := move var@24 == 2: u32; + var@22 := ¬ move var@23; + assert(¬move var@22); return ] @@ -130041,23 +128767,37 @@ move var@10 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (l) -> ⊥ : test1::List ; - Some (var@2) -> ⊥ : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; - Some (hd) -> s@2 : i32 ; - Some (tl) -> s@3 : test1::List ; - Some (var@6) -> (s@2 : i32, ⊥ : test1::List) ; - Some (var@7) -> ⊥ : test1::List ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> s@4 : bool ; - Some (var@10) -> ⊥ : i32 ; + Some (x) -> ⊥ : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : bool ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } [Debug] **About to evaluate statement**: [ - var@8 := ¬ move var@9 + x := move test_loop1(2: u32) ] **Context**: @@ -130067,16 +128807,30 @@ move var@10 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (l) -> ⊥ : test1::List ; - Some (var@2) -> ⊥ : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; - Some (hd) -> s@2 : i32 ; - Some (tl) -> s@3 : test1::List ; - Some (var@6) -> (s@2 : i32, ⊥ : test1::List) ; - Some (var@7) -> ⊥ : test1::List ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> s@4 : bool ; - Some (var@10) -> ⊥ : i32 ; + Some (x) -> ⊥ : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : bool ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } @@ -130089,26 +128843,67 @@ move var@10 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (l) -> ⊥ : test1::List ; - Some (var@2) -> ⊥ : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; - Some (hd) -> s@2 : i32 ; - Some (tl) -> s@3 : test1::List ; - Some (var@6) -> (s@2 : i32, ⊥ : test1::List) ; - Some (var@7) -> ⊥ : test1::List ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> s@4 : bool ; - Some (var@10) -> ⊥ : i32 ; + Some (x) -> ⊥ : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : bool ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } - op: -move var@9 +2: u32 [Debug] **About to evaluate statement**: [ - assert(¬move var@8); - drop(tl); + var@4 := copy x; + var@3 := move var@4 == 2: u32; + var@2 := ¬ move var@3; + assert(¬move var@2); + x := move test_loop2(2: u32); + var@8 := copy x; + var@7 := move var@8 == 1: u32; + var@6 := ¬ move var@7; + assert(¬move var@6); + x := move test_loop3(2: u32); + var@12 := copy x; + var@11 := move var@12 == 3: u32; + var@10 := ¬ move var@11; + assert(¬move var@10); + x := move test_loop4(20: u32); + var@16 := copy x; + var@15 := move var@16 == 1: u32; + var@14 := ¬ move var@15; + assert(¬move var@14); + x := move test_loop5(2: u32); + var@20 := copy x; + var@19 := move var@20 == 2: u32; + var@18 := ¬ move var@19; + assert(¬move var@18); + x := move test_loop6(2: u32); + var@24 := copy x; + var@23 := move var@24 == 2: u32; + var@22 := ¬ move var@23; + assert(¬move var@22); return ] @@ -130119,23 +128914,37 @@ move var@9 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (l) -> ⊥ : test1::List ; - Some (var@2) -> ⊥ : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; - Some (hd) -> s@2 : i32 ; - Some (tl) -> s@3 : test1::List ; - Some (var@6) -> (s@2 : i32, ⊥ : test1::List) ; - Some (var@7) -> ⊥ : test1::List ; - Some (var@8) -> s@5 : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : bool ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } [Debug] **About to evaluate statement**: [ - assert(¬move var@8) + var@4 := copy x ] **Context**: @@ -130145,16 +128954,30 @@ move var@9 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (l) -> ⊥ : test1::List ; - Some (var@2) -> ⊥ : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; - Some (hd) -> s@2 : i32 ; - Some (tl) -> s@3 : test1::List ; - Some (var@6) -> (s@2 : i32, ⊥ : test1::List) ; - Some (var@7) -> ⊥ : test1::List ; - Some (var@8) -> s@5 : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : bool ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } @@ -130167,25 +128990,66 @@ move var@9 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (l) -> ⊥ : test1::List ; - Some (var@2) -> ⊥ : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; - Some (hd) -> s@2 : i32 ; - Some (tl) -> s@3 : test1::List ; - Some (var@6) -> (s@2 : i32, ⊥ : test1::List) ; - Some (var@7) -> ⊥ : test1::List ; - Some (var@8) -> true ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : bool ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } - op: -move var@8 +copy x [Debug] **About to evaluate statement**: [ - drop(tl); + var@3 := move var@4 == 2: u32; + var@2 := ¬ move var@3; + assert(¬move var@2); + x := move test_loop2(2: u32); + var@8 := copy x; + var@7 := move var@8 == 1: u32; + var@6 := ¬ move var@7; + assert(¬move var@6); + x := move test_loop3(2: u32); + var@12 := copy x; + var@11 := move var@12 == 3: u32; + var@10 := ¬ move var@11; + assert(¬move var@10); + x := move test_loop4(20: u32); + var@16 := copy x; + var@15 := move var@16 == 1: u32; + var@14 := ¬ move var@15; + assert(¬move var@14); + x := move test_loop5(2: u32); + var@20 := copy x; + var@19 := move var@20 == 2: u32; + var@18 := ¬ move var@19; + assert(¬move var@18); + x := move test_loop6(2: u32); + var@24 := copy x; + var@23 := move var@24 == 2: u32; + var@22 := ¬ move var@23; + assert(¬move var@22); return ] @@ -130196,23 +129060,37 @@ move var@8 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (l) -> ⊥ : test1::List ; - Some (var@2) -> ⊥ : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; - Some (hd) -> s@2 : i32 ; - Some (tl) -> s@3 : test1::List ; - Some (var@6) -> (s@2 : i32, ⊥ : test1::List) ; - Some (var@7) -> ⊥ : test1::List ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> s@0 : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : bool ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } [Debug] **About to evaluate statement**: [ - drop(tl) + var@3 := move var@4 == 2: u32 ] **Context**: @@ -130222,57 +129100,139 @@ move var@8 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (l) -> ⊥ : test1::List ; - Some (var@2) -> ⊥ : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; - Some (hd) -> s@2 : i32 ; - Some (tl) -> s@3 : test1::List ; - Some (var@6) -> (s@2 : i32, ⊥ : test1::List) ; - Some (var@7) -> ⊥ : test1::List ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> s@0 : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : bool ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } -[Debug] drop_value: place: tl -[Debug] -**About to evaluate statement**: [ - return -] +[Debug] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) -**Context**: +# Frame 0: +{ + Some (var@0) -> ⊥ : () ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> s@0 : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : bool ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; +} + + +- op: +move var@4 + +[Debug] eval_operand: +- ctx: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (l) -> ⊥ : test1::List ; - Some (var@2) -> ⊥ : std::boxed::Box> ; - Some (var@3) -> ⊥ : test1::List ; - Some (hd) -> s@2 : i32 ; - Some (tl) -> ⊥ : test1::List ; - Some (var@6) -> (s@2 : i32, ⊥ : test1::List) ; - Some (var@7) -> ⊥ : test1::List ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : bool ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } +- op: +2: u32 -[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 - }; + var@2 := ¬ move var@3; + assert(¬move var@2); + x := move test_loop2(2: u32); + var@8 := copy x; + var@7 := move var@8 == 1: u32; + var@6 := ¬ move var@7; + assert(¬move var@6); + x := move test_loop3(2: u32); + var@12 := copy x; + var@11 := move var@12 == 3: u32; + var@10 := ¬ move var@11; + assert(¬move var@10); + x := move test_loop4(20: u32); + var@16 := copy x; + var@15 := move var@16 == 1: u32; + var@14 := ¬ move var@15; + assert(¬move var@14); + x := move test_loop5(2: u32); + var@20 := copy x; + var@19 := move var@20 == 2: u32; + var@18 := ¬ move var@19; + assert(¬move var@18); + x := move test_loop6(2: u32); + var@24 := copy x; + var@23 := move var@24 == 2: u32; + var@22 := ¬ move var@23; + assert(¬move var@22); return ] @@ -130282,23 +129242,38 @@ move var@8 # 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)) - } - Some (var@0) -> ⊥ : &'_ mut (T) ; - Some (b) -> s@0 : bool ; - Some (x) -> s@1 : &r@0 mut (T) ; - Some (y) -> s@2 : &r@0 mut (T) ; - Some (var@4) -> ⊥ : bool ; + Some (var@0) -> ⊥ : () ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> s@1 : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : bool ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } [Debug] **About to evaluate statement**: [ - var@4 := copy b + var@2 := ¬ move var@3 ] **Context**: @@ -130307,16 +129282,31 @@ move var@8 # 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)) - } - Some (var@0) -> ⊥ : &'_ mut (T) ; - Some (b) -> s@0 : bool ; - Some (x) -> s@1 : &r@0 mut (T) ; - Some (y) -> s@2 : &r@0 mut (T) ; - Some (var@4) -> ⊥ : bool ; + Some (var@0) -> ⊥ : () ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> s@1 : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : bool ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } @@ -130328,30 +129318,65 @@ move var@8 # 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)) - } - Some (var@0) -> ⊥ : &'_ mut (T) ; - Some (b) -> s@0 : bool ; - Some (x) -> s@1 : &r@0 mut (T) ; - Some (y) -> s@2 : &r@0 mut (T) ; - Some (var@4) -> ⊥ : bool ; + Some (var@0) -> ⊥ : () ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> s@1 : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : bool ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } - op: -copy b +move var@3 [Debug] **About to evaluate statement**: [ - if (move var@4) { - var@0 := &mut *(x) - } - else { - var@0 := move y - }; + assert(¬move var@2); + x := move test_loop2(2: u32); + var@8 := copy x; + var@7 := move var@8 == 1: u32; + var@6 := ¬ move var@7; + assert(¬move var@6); + x := move test_loop3(2: u32); + var@12 := copy x; + var@11 := move var@12 == 3: u32; + var@10 := ¬ move var@11; + assert(¬move var@10); + x := move test_loop4(20: u32); + var@16 := copy x; + var@15 := move var@16 == 1: u32; + var@14 := ¬ move var@15; + assert(¬move var@14); + x := move test_loop5(2: u32); + var@20 := copy x; + var@19 := move var@20 == 2: u32; + var@18 := ¬ move var@19; + assert(¬move var@18); + x := move test_loop6(2: u32); + var@24 := copy x; + var@23 := move var@24 == 2: u32; + var@22 := ¬ move var@23; + assert(¬move var@22); return ] @@ -130361,28 +129386,38 @@ copy b # 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)) - } - Some (var@0) -> ⊥ : &'_ mut (T) ; - Some (b) -> s@0 : bool ; - Some (x) -> s@1 : &r@0 mut (T) ; - Some (y) -> s@2 : &r@0 mut (T) ; - Some (var@4) -> s@0 : bool ; + Some (var@0) -> ⊥ : () ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> s@2 : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : bool ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } [Debug] **About to evaluate statement**: [ - if (move var@4) { - var@0 := &mut *(x) - } - else { - var@0 := move y - } + assert(¬move var@2) ] **Context**: @@ -130391,16 +129426,31 @@ copy b # 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)) - } - Some (var@0) -> ⊥ : &'_ mut (T) ; - Some (b) -> s@0 : bool ; - Some (x) -> s@1 : &r@0 mut (T) ; - Some (y) -> s@2 : &r@0 mut (T) ; - Some (var@4) -> s@0 : bool ; + Some (var@0) -> ⊥ : () ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> s@2 : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : bool ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } @@ -130412,25 +129462,65 @@ copy b # Frame 0: { - abs@0{parents={}}{regions={0}} { - true, - proj_loans (s@1 : &r@0 mut (T)), - proj_loans (s@2 : &r@0 mut (T)) - } - Some (var@0) -> ⊥ : &'_ mut (T) ; - Some (b) -> true ; - Some (x) -> s@1 : &r@0 mut (T) ; - Some (y) -> s@2 : &r@0 mut (T) ; - Some (var@4) -> true ; + Some (var@0) -> ⊥ : () ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> true ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : bool ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } - op: -move var@4 +move var@2 [Debug] **About to evaluate statement**: [ - var@0 := &mut *(x) + x := move test_loop2(2: u32); + var@8 := copy x; + var@7 := move var@8 == 1: u32; + var@6 := ¬ move var@7; + assert(¬move var@6); + x := move test_loop3(2: u32); + var@12 := copy x; + var@11 := move var@12 == 3: u32; + var@10 := ¬ move var@11; + assert(¬move var@10); + x := move test_loop4(20: u32); + var@16 := copy x; + var@15 := move var@16 == 1: u32; + var@14 := ¬ move var@15; + assert(¬move var@14); + x := move test_loop5(2: u32); + var@20 := copy x; + var@19 := move var@20 == 2: u32; + var@18 := ¬ move var@19; + assert(¬move var@18); + x := move test_loop6(2: u32); + var@24 := copy x; + var@23 := move var@24 == 2: u32; + var@22 := ¬ move var@23; + assert(¬move var@22); + return ] **Context**: @@ -130439,59 +129529,74 @@ move var@4 # Frame 0: { - abs@0{parents={}}{regions={0}} { - true, - proj_loans (s@1 : &r@0 mut (T)), - proj_loans (s@2 : &r@0 mut (T)) - } - Some (var@0) -> ⊥ : &'_ mut (T) ; - Some (b) -> true ; - Some (x) -> s@1 : &r@0 mut (T) ; - Some (y) -> s@2 : &r@0 mut (T) ; - Some (var@4) -> ⊥ : bool ; + Some (var@0) -> ⊥ : () ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : bool ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } -[Debug] expand_symbolic_value: s@1 : &r@0 mut (T) +[Debug] +**About to evaluate statement**: [ + x := move test_loop2(2: u32) +] -- original context: +**Context**: # Ended regions: {} # 1 frame(s) # Frame 0: { - abs@0{parents={}}{regions={0}} { - true, - proj_loans (s@1 : &r@0 mut (T)), - proj_loans (s@2 : &r@0 mut (T)) - } - Some (var@0) -> ⊥ : &'_ mut (T) ; - Some (b) -> true ; - Some (x) -> s@1 : &r@0 mut (T) ; - Some (y) -> s@2 : &r@0 mut (T) ; - Some (var@4) -> ⊥ : bool ; + Some (var@0) -> ⊥ : () ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : bool ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } -- new context: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - abs@0{parents={}}{regions={0}} { - true, - ⌊mut@0, proj_loans (s@3 : T)⌋, - proj_loans (s@2 : &r@0 mut (T)) - } - Some (var@0) -> ⊥ : &'_ mut (T) ; - Some (b) -> true ; - Some (x) -> &mut@0 (s@3 : T) ; - Some (y) -> s@2 : &r@0 mut (T) ; - Some (var@4) -> ⊥ : bool ; -} - [Debug] eval_operand: - ctx: @@ -130500,25 +129605,64 @@ move var@4 # Frame 0: { - abs@0{parents={}}{regions={0}} { - false, - proj_loans (s@1 : &r@0 mut (T)), - proj_loans (s@2 : &r@0 mut (T)) - } - Some (var@0) -> ⊥ : &'_ mut (T) ; - Some (b) -> false ; - Some (x) -> s@1 : &r@0 mut (T) ; - Some (y) -> s@2 : &r@0 mut (T) ; - Some (var@4) -> false ; + Some (var@0) -> ⊥ : () ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : bool ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } - op: -move var@4 +2: u32 [Debug] **About to evaluate statement**: [ - var@0 := move y + var@8 := copy x; + var@7 := move var@8 == 1: u32; + var@6 := ¬ move var@7; + assert(¬move var@6); + x := move test_loop3(2: u32); + var@12 := copy x; + var@11 := move var@12 == 3: u32; + var@10 := ¬ move var@11; + assert(¬move var@10); + x := move test_loop4(20: u32); + var@16 := copy x; + var@15 := move var@16 == 1: u32; + var@14 := ¬ move var@15; + assert(¬move var@14); + x := move test_loop5(2: u32); + var@20 := copy x; + var@19 := move var@20 == 2: u32; + var@18 := ¬ move var@19; + assert(¬move var@18); + x := move test_loop6(2: u32); + var@24 := copy x; + var@23 := move var@24 == 2: u32; + var@22 := ¬ move var@23; + assert(¬move var@22); + return ] **Context**: @@ -130527,46 +129671,38 @@ move var@4 # Frame 0: { - abs@0{parents={}}{regions={0}} { - false, - proj_loans (s@1 : &r@0 mut (T)), - proj_loans (s@2 : &r@0 mut (T)) - } - Some (var@0) -> ⊥ : &'_ mut (T) ; - Some (b) -> false ; - Some (x) -> s@1 : &r@0 mut (T) ; - Some (y) -> s@2 : &r@0 mut (T) ; - Some (var@4) -> ⊥ : bool ; -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - abs@0{parents={}}{regions={0}} { - false, - proj_loans (s@1 : &r@0 mut (T)), - proj_loans (s@2 : &r@0 mut (T)) - } - Some (var@0) -> ⊥ : &'_ mut (T) ; - Some (b) -> false ; - Some (x) -> s@1 : &r@0 mut (T) ; - Some (y) -> s@2 : &r@0 mut (T) ; - Some (var@4) -> ⊥ : bool ; + Some (var@0) -> ⊥ : () ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> s@3 : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : bool ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } -- op: -move y [Debug] **About to evaluate statement**: [ - return + var@8 := copy x ] **Context**: @@ -130575,69 +129711,98 @@ move y # Frame 0: { - abs@0{parents={}}{regions={0}} { - true, - ⌊mut@0, proj_loans (s@3 : T)⌋, - proj_loans (s@2 : &r@0 mut (T)) - } - Some (var@0) -> &mut@1 (s@3 : T) ; - Some (b) -> true ; - Some (x) -> &mut@0 (⌊mut@1⌋) ; - Some (y) -> s@2 : &r@0 mut (T) ; - Some (var@4) -> ⊥ : bool ; + Some (var@0) -> ⊥ : () ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> s@3 : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : bool ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } -[Debug] -**About to evaluate statement**: [ - return -] - -**Context**: +[Debug] eval_operand: +- ctx: # Ended regions: {} # 1 frame(s) # Frame 0: { - abs@0{parents={}}{regions={0}} { - false, - proj_loans (s@1 : &r@0 mut (T)), - proj_loans (s@2 : &r@0 mut (T)) - } - Some (var@0) -> s@2 : &r@0 mut (T) ; - Some (b) -> false ; - Some (x) -> s@1 : &r@0 mut (T) ; - Some (y) -> ⊥ : &'_ mut (T) ; - Some (var@4) -> ⊥ : bool ; + Some (var@0) -> ⊥ : () ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> s@3 : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : bool ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } +- op: +copy x -[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@7 := move var@8 == 1: u32; + var@6 := ¬ move var@7; + assert(¬move var@6); + x := move test_loop3(2: u32); + var@12 := copy x; + var@11 := move var@12 == 3: u32; 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 := move test_loop4(20: u32); + var@16 := copy x; + var@15 := move var@16 == 1: u32; + var@14 := ¬ move var@15; + assert(¬move var@14); + x := move test_loop5(2: u32); + var@20 := copy x; + var@19 := move var@20 == 2: u32; + var@18 := ¬ move var@19; + assert(¬move var@18); + x := move test_loop6(2: u32); + var@24 := copy x; + var@23 := move var@24 == 2: u32; + var@22 := ¬ move var@23; + assert(¬move var@22); return ] @@ -130648,31 +129813,37 @@ move y # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⊥ : i32 ; - Some (y) -> ⊥ : i32 ; - Some (z) -> ⊥ : &'_ mut (i32) ; - Some (var@4) -> ⊥ : &'_ mut (i32) ; - Some (var@5) -> ⊥ : &'_ mut (i32) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> s@3 : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> s@3 : u32 ; + Some (x) -> ⊥ : u32 ; Some (var@10) -> ⊥ : bool ; Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (var@15) -> ⊥ : bool ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } [Debug] **About to evaluate statement**: [ - x := 0: i32 + var@7 := move var@8 == 1: u32 ] **Context**: @@ -130682,24 +129853,30 @@ move y # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⊥ : i32 ; - Some (y) -> ⊥ : i32 ; - Some (z) -> ⊥ : &'_ mut (i32) ; - Some (var@4) -> ⊥ : &'_ mut (i32) ; - Some (var@5) -> ⊥ : &'_ mut (i32) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> s@3 : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> s@3 : u32 ; + Some (x) -> ⊥ : u32 ; Some (var@10) -> ⊥ : bool ; Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (var@15) -> ⊥ : bool ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } @@ -130712,52 +129889,98 @@ move y # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⊥ : i32 ; - Some (y) -> ⊥ : i32 ; - Some (z) -> ⊥ : &'_ mut (i32) ; - Some (var@4) -> ⊥ : &'_ mut (i32) ; - Some (var@5) -> ⊥ : &'_ mut (i32) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> s@3 : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> s@3 : u32 ; + Some (x) -> ⊥ : u32 ; Some (var@10) -> ⊥ : bool ; Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (var@15) -> ⊥ : bool ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } - op: -0: i32 +move var@8 + +[Debug] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + Some (var@0) -> ⊥ : () ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> s@3 : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : bool ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; +} + + +- op: +1: u32 [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@6 := ¬ move var@7; + assert(¬move var@6); + x := move test_loop3(2: u32); + var@12 := copy x; + var@11 := move var@12 == 3: u32; 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 := move test_loop4(20: u32); + var@16 := copy x; + var@15 := move var@16 == 1: u32; + var@14 := ¬ move var@15; + assert(¬move var@14); + x := move test_loop5(2: u32); + var@20 := copy x; + var@19 := move var@20 == 2: u32; + var@18 := ¬ move var@19; + assert(¬move var@18); + x := move test_loop6(2: u32); + var@24 := copy x; + var@23 := move var@24 == 2: u32; + var@22 := ¬ move var@23; + assert(¬move var@22); return ] @@ -130768,31 +129991,37 @@ move y # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (y) -> ⊥ : i32 ; - Some (z) -> ⊥ : &'_ mut (i32) ; - Some (var@4) -> ⊥ : &'_ mut (i32) ; - Some (var@5) -> ⊥ : &'_ mut (i32) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> s@3 : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> s@4 : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; Some (var@10) -> ⊥ : bool ; Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (var@15) -> ⊥ : bool ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } [Debug] **About to evaluate statement**: [ - y := 0: i32 + var@6 := ¬ move var@7 ] **Context**: @@ -130802,24 +130031,30 @@ move y # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (y) -> ⊥ : i32 ; - Some (z) -> ⊥ : &'_ mut (i32) ; - Some (var@4) -> ⊥ : &'_ mut (i32) ; - Some (var@5) -> ⊥ : &'_ mut (i32) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> s@3 : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> s@4 : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; Some (var@10) -> ⊥ : bool ; Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (var@15) -> ⊥ : bool ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } @@ -130832,51 +130067,59 @@ move y # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (y) -> ⊥ : i32 ; - Some (z) -> ⊥ : &'_ mut (i32) ; - Some (var@4) -> ⊥ : &'_ mut (i32) ; - Some (var@5) -> ⊥ : &'_ mut (i32) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> s@3 : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> s@4 : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; Some (var@10) -> ⊥ : bool ; Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (var@15) -> ⊥ : bool ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } - op: -0: i32 +move var@7 [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; + assert(¬move var@6); + x := move test_loop3(2: u32); + var@12 := copy x; + var@11 := move var@12 == 3: u32; 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 := move test_loop4(20: u32); + var@16 := copy x; + var@15 := move var@16 == 1: u32; + var@14 := ¬ move var@15; + assert(¬move var@14); + x := move test_loop5(2: u32); + var@20 := copy x; + var@19 := move var@20 == 2: u32; + var@18 := ¬ move var@19; + assert(¬move var@18); + x := move test_loop6(2: u32); + var@24 := copy x; + var@23 := move var@24 == 2: u32; + var@22 := ¬ move var@23; + assert(¬move var@22); return ] @@ -130887,31 +130130,37 @@ move y # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (y) -> 0: i32 ; - Some (z) -> ⊥ : &'_ mut (i32) ; - Some (var@4) -> ⊥ : &'_ mut (i32) ; - Some (var@5) -> ⊥ : &'_ mut (i32) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> s@3 : u32 ; + Some (var@6) -> s@5 : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; Some (var@10) -> ⊥ : bool ; Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (var@15) -> ⊥ : bool ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } [Debug] **About to evaluate statement**: [ - var@5 := &mut x + assert(¬move var@6) ] **Context**: @@ -130921,83 +130170,95 @@ move y # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (y) -> 0: i32 ; - Some (z) -> ⊥ : &'_ mut (i32) ; - Some (var@4) -> ⊥ : &'_ mut (i32) ; - Some (var@5) -> ⊥ : &'_ mut (i32) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> s@3 : u32 ; + Some (var@6) -> s@5 : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; Some (var@10) -> ⊥ : bool ; Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (var@15) -> ⊥ : bool ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } -[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**: +[Debug] eval_operand: +- ctx: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (y) -> 0: i32 ; - Some (z) -> ⊥ : &'_ mut (i32) ; - Some (var@4) -> ⊥ : &'_ mut (i32) ; - Some (var@5) -> &mut@0 (0: i32) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> s@3 : u32 ; + Some (var@6) -> true ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; Some (var@10) -> ⊥ : bool ; Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (var@15) -> ⊥ : bool ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } +- op: +move var@6 [Debug] **About to evaluate statement**: [ - var@4 := &two-phase *(var@5) + x := move test_loop3(2: u32); + var@12 := copy x; + var@11 := move var@12 == 3: u32; + var@10 := ¬ move var@11; + assert(¬move var@10); + x := move test_loop4(20: u32); + var@16 := copy x; + var@15 := move var@16 == 1: u32; + var@14 := ¬ move var@15; + assert(¬move var@14); + x := move test_loop5(2: u32); + var@20 := copy x; + var@19 := move var@20 == 2: u32; + var@18 := ¬ move var@19; + assert(¬move var@18); + x := move test_loop6(2: u32); + var@24 := copy x; + var@23 := move var@24 == 2: u32; + var@22 := ¬ move var@23; + assert(¬move var@22); + return ] **Context**: @@ -131007,48 +130268,37 @@ move y # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (y) -> 0: i32 ; - Some (z) -> ⊥ : &'_ mut (i32) ; - Some (var@4) -> ⊥ : &'_ mut (i32) ; - Some (var@5) -> &mut@0 (0: i32) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> s@3 : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; Some (var@10) -> ⊥ : bool ; Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (var@15) -> ⊥ : bool ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } [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 + x := move test_loop3(2: u32) ] **Context**: @@ -131058,80 +130308,93 @@ move y # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (y) -> 0: i32 ; - Some (z) -> ⊥ : &'_ mut (i32) ; - Some (var@4) -> ⌊inactivated_mut@1⌋ ; - Some (var@5) -> &mut@0 (@shared_loan({1}, 0: i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> s@3 : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; Some (var@10) -> ⊥ : bool ; Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (var@15) -> ⊥ : bool ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } -[Debug] -**About to evaluate statement**: [ - var@7 := &mut y -] - -**Context**: +[Debug] eval_operand: +- ctx: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (y) -> 0: i32 ; - Some (z) -> ⊥ : &'_ mut (i32) ; - Some (var@4) -> ⌊inactivated_mut@1⌋ ; - Some (var@5) -> &mut@0 (@shared_loan({1}, 0: i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> s@3 : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; Some (var@10) -> ⊥ : bool ; Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (var@15) -> ⊥ : bool ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } +- op: +2: u32 [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@12 := copy x; + var@11 := move var@12 == 3: u32; 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 := move test_loop4(20: u32); + var@16 := copy x; + var@15 := move var@16 == 1: u32; + var@14 := ¬ move var@15; + assert(¬move var@14); + x := move test_loop5(2: u32); + var@20 := copy x; + var@19 := move var@20 == 2: u32; + var@18 := ¬ move var@19; + assert(¬move var@18); + x := move test_loop6(2: u32); + var@24 := copy x; + var@23 := move var@24 == 2: u32; + var@22 := ¬ move var@23; + assert(¬move var@22); return ] @@ -131142,31 +130405,37 @@ move y # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (y) -> ⌊mut@2⌋ ; - Some (z) -> ⊥ : &'_ mut (i32) ; - Some (var@4) -> ⌊inactivated_mut@1⌋ ; - Some (var@5) -> &mut@0 (@shared_loan({1}, 0: i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> &mut@2 (0: i32) ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> s@3 : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> s@6 : u32 ; Some (var@10) -> ⊥ : bool ; Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (var@15) -> ⊥ : bool ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } [Debug] **About to evaluate statement**: [ - var@6 := &two-phase *(var@7) + var@12 := copy x ] **Context**: @@ -131176,45 +130445,92 @@ move y # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (y) -> ⌊mut@2⌋ ; - Some (z) -> ⊥ : &'_ mut (i32) ; - Some (var@4) -> ⌊inactivated_mut@1⌋ ; - Some (var@5) -> &mut@0 (@shared_loan({1}, 0: i32)) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> &mut@2 (0: i32) ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> s@3 : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> s@6 : u32 ; Some (var@10) -> ⊥ : bool ; Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (var@15) -> ⊥ : bool ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; +} + + + +[Debug] eval_operand: +- ctx: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + Some (var@0) -> ⊥ : () ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> s@3 : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> s@6 : u32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : bool ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } +- op: +copy x [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@11 := move var@12 == 3: u32; 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 := move test_loop4(20: u32); + var@16 := copy x; + var@15 := move var@16 == 1: u32; + var@14 := ¬ move var@15; + assert(¬move var@14); + x := move test_loop5(2: u32); + var@20 := copy x; + var@19 := move var@20 == 2: u32; + var@18 := ¬ move var@19; + assert(¬move var@18); + x := move test_loop6(2: u32); + var@24 := copy x; + var@23 := move var@24 == 2: u32; + var@22 := ¬ move var@23; + assert(¬move var@22); return ] @@ -131225,31 +130541,37 @@ move y # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (y) -> ⌊mut@2⌋ ; - Some (z) -> ⊥ : &'_ mut (i32) ; - Some (var@4) -> ⌊inactivated_mut@1⌋ ; - Some (var@5) -> &mut@0 (@shared_loan({1}, 0: i32)) ; - Some (var@6) -> ⌊inactivated_mut@3⌋ ; - Some (var@7) -> &mut@2 (@shared_loan({3}, 0: i32)) ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> s@3 : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> s@6 : u32 ; Some (var@10) -> ⊥ : bool ; Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; + Some (var@12) -> s@6 : u32 ; + Some (x) -> ⊥ : u32 ; Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; + Some (var@15) -> ⊥ : bool ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } [Debug] **About to evaluate statement**: [ - z := move get_elem(true, move var@4, move var@6) + var@11 := move var@12 == 3: u32 ] **Context**: @@ -131259,716 +130581,30 @@ move y # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (y) -> ⌊mut@2⌋ ; - Some (z) -> ⊥ : &'_ mut (i32) ; - Some (var@4) -> ⌊inactivated_mut@1⌋ ; - Some (var@5) -> &mut@0 (@shared_loan({1}, 0: i32)) ; - Some (var@6) -> ⌊inactivated_mut@3⌋ ; - Some (var@7) -> &mut@2 (@shared_loan({3}, 0: i32)) ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; -} - - - -[Debug] activate_inactivated_mut_borrow: resulting value: -0: i32 -[Debug] activate_inactivated_mut_borrow: resulting value: -0: i32 -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (y) -> ⌊mut@2⌋ ; - Some (z) -> ⊥ : &'_ mut (i32) ; - Some (var@4) -> &mut@1 (0: i32) ; - Some (var@5) -> &mut@0 (⌊mut@1⌋) ; - Some (var@6) -> &mut@3 (0: i32) ; - Some (var@7) -> &mut@2 (⌊mut@3⌋) ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; -} - - -- op: -true - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (y) -> ⌊mut@2⌋ ; - Some (z) -> ⊥ : &'_ mut (i32) ; - Some (var@4) -> &mut@1 (0: i32) ; - Some (var@5) -> &mut@0 (⌊mut@1⌋) ; - Some (var@6) -> &mut@3 (0: i32) ; - Some (var@7) -> &mut@2 (⌊mut@3⌋) ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; -} - - -- op: -move var@4 - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (y) -> ⌊mut@2⌋ ; - Some (z) -> ⊥ : &'_ mut (i32) ; - Some (var@4) -> ⊥ : &'_ mut (i32) ; - Some (var@5) -> &mut@0 (⌊mut@1⌋) ; - Some (var@6) -> &mut@3 (0: i32) ; - Some (var@7) -> &mut@2 (⌊mut@3⌋) ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; -} - - -- op: -move var@6 - -[Debug] -**About to evaluate statement**: [ - var@8 := copy *(z); - *(z) := copy var@8 + 1: i32; - var@12 := copy *(z); - var@11 := move var@12 == 1: i32; - var@10 := ¬ move var@11; - assert(¬move var@10); - var@15 := copy x; - var@14 := move var@15 == 1: i32; - var@13 := ¬ move var@14; - assert(¬move var@13); - var@18 := copy y; - var@17 := move var@18 == 0: i32; - var@16 := ¬ move var@17; - assert(¬move var@16); - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (y) -> ⌊mut@2⌋ ; - Some (z) -> s@0 : &r@0 mut (i32) ; - Some (var@4) -> ⊥ : &'_ mut (i32) ; - Some (var@5) -> &mut@0 (⌊mut@1⌋) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> &mut@2 (⌊mut@3⌋) ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - true, - &mut@1 (0: i32), - &mut@3 (0: i32), - proj_loans (s@0 : &r@0 mut (i32)) - } -} - - - -[Debug] -**About to evaluate statement**: [ - var@8 := copy *(z) -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (y) -> ⌊mut@2⌋ ; - Some (z) -> s@0 : &r@0 mut (i32) ; - Some (var@4) -> ⊥ : &'_ mut (i32) ; - Some (var@5) -> &mut@0 (⌊mut@1⌋) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> &mut@2 (⌊mut@3⌋) ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - true, - &mut@1 (0: i32), - &mut@3 (0: i32), - proj_loans (s@0 : &r@0 mut (i32)) - } -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (y) -> ⌊mut@2⌋ ; - Some (z) -> s@0 : &r@0 mut (i32) ; - Some (var@4) -> ⊥ : &'_ mut (i32) ; - Some (var@5) -> &mut@0 (⌊mut@1⌋) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> &mut@2 (⌊mut@3⌋) ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (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] expand_symbolic_value: s@0 : &r@0 mut (i32) - -- original context: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (y) -> ⌊mut@2⌋ ; - Some (z) -> s@0 : &r@0 mut (i32) ; - Some (var@4) -> ⊥ : &'_ mut (i32) ; - Some (var@5) -> &mut@0 (⌊mut@1⌋) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> &mut@2 (⌊mut@3⌋) ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (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)) - } -} - - -- new context: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (y) -> ⌊mut@2⌋ ; - Some (z) -> &mut@4 (s@1 : i32) ; - Some (var@4) -> ⊥ : &'_ mut (i32) ; - Some (var@5) -> &mut@0 (⌊mut@1⌋) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> &mut@2 (⌊mut@3⌋) ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (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; - var@12 := copy *(z); - var@11 := move var@12 == 1: i32; - var@10 := ¬ move var@11; - assert(¬move var@10); - var@15 := copy x; - var@14 := move var@15 == 1: i32; - var@13 := ¬ move var@14; - assert(¬move var@13); - var@18 := copy y; - var@17 := move var@18 == 0: i32; - var@16 := ¬ move var@17; - assert(¬move var@16); - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (y) -> ⌊mut@2⌋ ; - Some (z) -> &mut@4 (s@1 : i32) ; - Some (var@4) -> ⊥ : &'_ mut (i32) ; - Some (var@5) -> &mut@0 (⌊mut@1⌋) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> &mut@2 (⌊mut@3⌋) ; - Some (var@8) -> s@1 : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - true, - &mut@1 (0: i32), - &mut@3 (0: i32), - ⌊mut@4, proj_loans (s@1 : i32)⌋ - } -} - - - -[Debug] -**About to evaluate statement**: [ - *(z) := copy var@8 + 1: i32 -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (y) -> ⌊mut@2⌋ ; - Some (z) -> &mut@4 (s@1 : i32) ; - Some (var@4) -> ⊥ : &'_ mut (i32) ; - Some (var@5) -> &mut@0 (⌊mut@1⌋) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> &mut@2 (⌊mut@3⌋) ; - Some (var@8) -> s@1 : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - true, - &mut@1 (0: i32), - &mut@3 (0: i32), - ⌊mut@4, proj_loans (s@1 : i32)⌋ - } -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (y) -> ⌊mut@2⌋ ; - Some (z) -> &mut@4 (s@1 : i32) ; - Some (var@4) -> ⊥ : &'_ mut (i32) ; - Some (var@5) -> &mut@0 (⌊mut@1⌋) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> &mut@2 (⌊mut@3⌋) ; - Some (var@8) -> s@1 : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (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] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (y) -> ⌊mut@2⌋ ; - Some (z) -> &mut@4 (s@1 : i32) ; - Some (var@4) -> ⊥ : &'_ mut (i32) ; - Some (var@5) -> &mut@0 (⌊mut@1⌋) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> &mut@2 (⌊mut@3⌋) ; - Some (var@8) -> s@1 : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - true, - &mut@1 (0: i32), - &mut@3 (0: i32), - ⌊mut@4, proj_loans (s@1 : i32)⌋ - } -} - - -- op: -1: i32 - -[Debug] -**About to evaluate statement**: [ - var@12 := copy *(z); - var@11 := move var@12 == 1: i32; - var@10 := ¬ move var@11; - assert(¬move var@10); - var@15 := copy x; - var@14 := move var@15 == 1: i32; - var@13 := ¬ move var@14; - assert(¬move var@13); - var@18 := copy y; - var@17 := move var@18 == 0: i32; - var@16 := ¬ move var@17; - assert(¬move var@16); - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (y) -> ⌊mut@2⌋ ; - Some (z) -> &mut@4 (s@2 : i32) ; - Some (var@4) -> ⊥ : &'_ mut (i32) ; - Some (var@5) -> &mut@0 (⌊mut@1⌋) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> &mut@2 (⌊mut@3⌋) ; - Some (var@8) -> s@1 : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - true, - &mut@1 (0: i32), - &mut@3 (0: i32), - ⌊mut@4, proj_loans (s@1 : i32)⌋ - } -} - - - -[Debug] -**About to evaluate statement**: [ - var@12 := copy *(z) -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (y) -> ⌊mut@2⌋ ; - Some (z) -> &mut@4 (s@2 : i32) ; - Some (var@4) -> ⊥ : &'_ mut (i32) ; - Some (var@5) -> &mut@0 (⌊mut@1⌋) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> &mut@2 (⌊mut@3⌋) ; - Some (var@8) -> s@1 : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - true, - &mut@1 (0: i32), - &mut@3 (0: i32), - ⌊mut@4, proj_loans (s@1 : i32)⌋ - } -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (y) -> ⌊mut@2⌋ ; - Some (z) -> &mut@4 (s@2 : i32) ; - Some (var@4) -> ⊥ : &'_ mut (i32) ; - Some (var@5) -> &mut@0 (⌊mut@1⌋) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> &mut@2 (⌊mut@3⌋) ; - Some (var@8) -> s@1 : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (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] -**About to evaluate statement**: [ - var@11 := move var@12 == 1: i32; - var@10 := ¬ move var@11; - assert(¬move var@10); - var@15 := copy x; - var@14 := move var@15 == 1: i32; - var@13 := ¬ move var@14; - assert(¬move var@13); - var@18 := copy y; - var@17 := move var@18 == 0: i32; - var@16 := ¬ move var@17; - assert(¬move var@16); - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (y) -> ⌊mut@2⌋ ; - Some (z) -> &mut@4 (s@2 : i32) ; - Some (var@4) -> ⊥ : &'_ mut (i32) ; - Some (var@5) -> &mut@0 (⌊mut@1⌋) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> &mut@2 (⌊mut@3⌋) ; - Some (var@8) -> s@1 : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> s@2 : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - true, - &mut@1 (0: i32), - &mut@3 (0: i32), - ⌊mut@4, proj_loans (s@1 : i32)⌋ - } -} - - - -[Debug] -**About to evaluate statement**: [ - var@11 := move var@12 == 1: i32 -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (y) -> ⌊mut@2⌋ ; - Some (z) -> &mut@4 (s@2 : i32) ; - Some (var@4) -> ⊥ : &'_ mut (i32) ; - Some (var@5) -> &mut@0 (⌊mut@1⌋) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> &mut@2 (⌊mut@3⌋) ; - Some (var@8) -> s@1 : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> s@3 : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> s@6 : u32 ; Some (var@10) -> ⊥ : bool ; Some (var@11) -> ⊥ : bool ; - Some (var@12) -> s@2 : i32 ; - Some (var@13) -> ⊥ : bool ; + Some (var@12) -> s@6 : u32 ; + Some (x) -> ⊥ : u32 ; Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - true, - &mut@1 (0: i32), - &mut@3 (0: i32), - ⌊mut@4, proj_loans (s@1 : i32)⌋ - } + Some (var@15) -> ⊥ : bool ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } @@ -131981,30 +130617,30 @@ copy *(z) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (y) -> ⌊mut@2⌋ ; - Some (z) -> &mut@4 (s@2 : i32) ; - Some (var@4) -> ⊥ : &'_ mut (i32) ; - Some (var@5) -> &mut@0 (⌊mut@1⌋) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> &mut@2 (⌊mut@3⌋) ; - Some (var@8) -> s@1 : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> s@3 : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> s@6 : u32 ; Some (var@10) -> ⊥ : bool ; Some (var@11) -> ⊥ : bool ; - Some (var@12) -> s@2 : i32 ; - Some (var@13) -> ⊥ : bool ; + Some (var@12) -> s@6 : u32 ; + Some (x) -> ⊥ : u32 ; Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - true, - &mut@1 (0: i32), - &mut@3 (0: i32), - ⌊mut@4, proj_loans (s@1 : i32)⌋ - } + Some (var@15) -> ⊥ : bool ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } @@ -132019,14195 +130655,1673 @@ move var@12 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (y) -> ⌊mut@2⌋ ; - Some (z) -> &mut@4 (s@2 : i32) ; - Some (var@4) -> ⊥ : &'_ mut (i32) ; - Some (var@5) -> &mut@0 (⌊mut@1⌋) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> &mut@2 (⌊mut@3⌋) ; - Some (var@8) -> s@1 : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - true, - &mut@1 (0: i32), - &mut@3 (0: i32), - ⌊mut@4, proj_loans (s@1 : i32)⌋ - } -} - - -- op: -1: i32 - -[Debug] -**About to evaluate statement**: [ - var@10 := ¬ move var@11; - assert(¬move var@10); - var@15 := copy x; - var@14 := move var@15 == 1: i32; - var@13 := ¬ move var@14; - assert(¬move var@13); - var@18 := copy y; - var@17 := move var@18 == 0: i32; - var@16 := ¬ move var@17; - assert(¬move var@16); - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (y) -> ⌊mut@2⌋ ; - Some (z) -> &mut@4 (s@2 : i32) ; - Some (var@4) -> ⊥ : &'_ mut (i32) ; - Some (var@5) -> &mut@0 (⌊mut@1⌋) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> &mut@2 (⌊mut@3⌋) ; - Some (var@8) -> s@1 : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> s@3 : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - true, - &mut@1 (0: i32), - &mut@3 (0: i32), - ⌊mut@4, proj_loans (s@1 : i32)⌋ - } -} - - - -[Debug] -**About to evaluate statement**: [ - var@10 := ¬ move var@11 -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (y) -> ⌊mut@2⌋ ; - Some (z) -> &mut@4 (s@2 : i32) ; - Some (var@4) -> ⊥ : &'_ mut (i32) ; - Some (var@5) -> &mut@0 (⌊mut@1⌋) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> &mut@2 (⌊mut@3⌋) ; - Some (var@8) -> s@1 : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> s@3 : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - true, - &mut@1 (0: i32), - &mut@3 (0: i32), - ⌊mut@4, proj_loans (s@1 : i32)⌋ - } -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (y) -> ⌊mut@2⌋ ; - Some (z) -> &mut@4 (s@2 : i32) ; - Some (var@4) -> ⊥ : &'_ mut (i32) ; - Some (var@5) -> &mut@0 (⌊mut@1⌋) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> &mut@2 (⌊mut@3⌋) ; - Some (var@8) -> s@1 : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> s@3 : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (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] -**About to evaluate statement**: [ - assert(¬move var@10); - var@15 := copy x; - var@14 := move var@15 == 1: i32; - var@13 := ¬ move var@14; - assert(¬move var@13); - var@18 := copy y; - var@17 := move var@18 == 0: i32; - var@16 := ¬ move var@17; - assert(¬move var@16); - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (y) -> ⌊mut@2⌋ ; - Some (z) -> &mut@4 (s@2 : i32) ; - Some (var@4) -> ⊥ : &'_ mut (i32) ; - Some (var@5) -> &mut@0 (⌊mut@1⌋) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> &mut@2 (⌊mut@3⌋) ; - Some (var@8) -> s@1 : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; - Some (var@10) -> s@4 : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - true, - &mut@1 (0: i32), - &mut@3 (0: i32), - ⌊mut@4, proj_loans (s@1 : i32)⌋ - } -} - - - -[Debug] -**About to evaluate statement**: [ - assert(¬move var@10) -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (y) -> ⌊mut@2⌋ ; - Some (z) -> &mut@4 (s@2 : i32) ; - Some (var@4) -> ⊥ : &'_ mut (i32) ; - Some (var@5) -> &mut@0 (⌊mut@1⌋) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> &mut@2 (⌊mut@3⌋) ; - Some (var@8) -> s@1 : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; - Some (var@10) -> s@4 : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - true, - &mut@1 (0: i32), - &mut@3 (0: i32), - ⌊mut@4, proj_loans (s@1 : i32)⌋ - } -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (y) -> ⌊mut@2⌋ ; - Some (z) -> &mut@4 (s@2 : i32) ; - Some (var@4) -> ⊥ : &'_ mut (i32) ; - Some (var@5) -> &mut@0 (⌊mut@1⌋) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> &mut@2 (⌊mut@3⌋) ; - Some (var@8) -> s@1 : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; - Some (var@10) -> true ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (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] -**About to evaluate statement**: [ - var@15 := copy x; - var@14 := move var@15 == 1: i32; - var@13 := ¬ move var@14; - assert(¬move var@13); - var@18 := copy y; - var@17 := move var@18 == 0: i32; - var@16 := ¬ move var@17; - assert(¬move var@16); - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (y) -> ⌊mut@2⌋ ; - Some (z) -> &mut@4 (s@2 : i32) ; - Some (var@4) -> ⊥ : &'_ mut (i32) ; - Some (var@5) -> &mut@0 (⌊mut@1⌋) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> &mut@2 (⌊mut@3⌋) ; - Some (var@8) -> s@1 : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - true, - &mut@1 (0: i32), - &mut@3 (0: i32), - ⌊mut@4, proj_loans (s@1 : i32)⌋ - } -} - - - -[Debug] -**About to evaluate statement**: [ - var@15 := copy x -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (y) -> ⌊mut@2⌋ ; - Some (z) -> &mut@4 (s@2 : i32) ; - Some (var@4) -> ⊥ : &'_ mut (i32) ; - Some (var@5) -> &mut@0 (⌊mut@1⌋) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> &mut@2 (⌊mut@3⌋) ; - Some (var@8) -> s@1 : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - true, - &mut@1 (0: i32), - &mut@3 (0: i32), - ⌊mut@4, proj_loans (s@1 : i32)⌋ - } -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (y) -> ⌊mut@2⌋ ; - Some (z) -> &mut@4 (s@2 : i32) ; - Some (var@4) -> ⊥ : &'_ mut (i32) ; - Some (var@5) -> &mut@0 (⌊mut@1⌋) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> &mut@2 (⌊mut@3⌋) ; - Some (var@8) -> s@1 : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (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] end borrow: 0: -- original context: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (y) -> ⌊mut@2⌋ ; - Some (z) -> &mut@4 (s@2 : i32) ; - Some (var@4) -> ⊥ : &'_ mut (i32) ; - Some (var@5) -> &mut@0 (⌊mut@1⌋) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> &mut@2 (⌊mut@3⌋) ; - Some (var@8) -> s@1 : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (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] end borrow: 0: found outer borrows/abs:(InterpreterBorrowsCore.InnerLoans (InterpreterBorrowsCore.Borrow 1)) -[Debug] end borrow: 1: -- original context: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (y) -> ⌊mut@2⌋ ; - Some (z) -> &mut@4 (s@2 : i32) ; - Some (var@4) -> ⊥ : &'_ mut (i32) ; - Some (var@5) -> &mut@0 (⌊mut@1⌋) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> &mut@2 (⌊mut@3⌋) ; - Some (var@8) -> s@1 : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (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] end borrow: 1: found outer borrows/abs:(InterpreterBorrowsCore.OuterAbs 0) -[Debug] end_abstraction: 0 -- original context: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (y) -> ⌊mut@2⌋ ; - Some (z) -> &mut@4 (s@2 : i32) ; - Some (var@4) -> ⊥ : &'_ mut (i32) ; - Some (var@5) -> &mut@0 (⌊mut@1⌋) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> &mut@2 (⌊mut@3⌋) ; - Some (var@8) -> s@1 : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (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] end_abstraction: 0 -- context after parent abstractions ended: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (y) -> ⌊mut@2⌋ ; - Some (z) -> &mut@4 (s@2 : i32) ; - Some (var@4) -> ⊥ : &'_ mut (i32) ; - Some (var@5) -> &mut@0 (⌊mut@1⌋) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> &mut@2 (⌊mut@3⌋) ; - Some (var@8) -> s@1 : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (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] end borrow: 4: -- original context: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (y) -> ⌊mut@2⌋ ; - Some (z) -> &mut@4 (s@2 : i32) ; - Some (var@4) -> ⊥ : &'_ mut (i32) ; - Some (var@5) -> &mut@0 (⌊mut@1⌋) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> &mut@2 (⌊mut@3⌋) ; - Some (var@8) -> s@1 : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (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] give_back: -- bid: 4 -- content: &mut@4 (s@2 : i32) -- context: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (y) -> ⌊mut@2⌋ ; - Some (z) -> ⊥ : &'_ mut (i32) ; - Some (var@4) -> ⊥ : &'_ mut (i32) ; - Some (var@5) -> &mut@0 (⌊mut@1⌋) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> &mut@2 (⌊mut@3⌋) ; - Some (var@8) -> s@1 : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (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] give_back_value: -- bid: 4 -- value: s@2 : i32 -- context: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (y) -> ⌊mut@2⌋ ; - Some (z) -> ⊥ : &'_ mut (i32) ; - Some (var@4) -> ⊥ : &'_ mut (i32) ; - Some (var@5) -> &mut@0 (⌊mut@1⌋) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> &mut@2 (⌊mut@3⌋) ; - Some (var@8) -> s@1 : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (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] end_abstraction: 0 -- context after loans ended: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (y) -> ⌊mut@2⌋ ; - Some (z) -> ⊥ : &'_ mut (i32) ; - Some (var@4) -> ⊥ : &'_ mut (i32) ; - Some (var@5) -> &mut@0 (⌊mut@1⌋) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> &mut@2 (⌊mut@3⌋) ; - Some (var@8) -> s@1 : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - true, - &mut@1 (0: i32), - &mut@3 (0: i32), - @ended_mut_loan{ given_back=proj_borrows (s@2 : i32 <: i32); child=proj_loans (s@1 : i32) } - } -} - -[Debug] give_back_value: -- bid: 1 -- value: s@5 : i32 -- context: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (y) -> ⌊mut@2⌋ ; - Some (z) -> ⊥ : &'_ mut (i32) ; - Some (var@4) -> ⊥ : &'_ mut (i32) ; - Some (var@5) -> &mut@0 (⌊mut@1⌋) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> &mut@2 (⌊mut@3⌋) ; - Some (var@8) -> s@1 : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - true, - ⊥ : &r@0 mut (i32), - &mut@3 (0: i32), - @ended_mut_loan{ given_back=proj_borrows (s@2 : i32 <: i32); child=proj_loans (s@1 : i32) } - } -} - - -[Debug] give_back_value: -- bid: 3 -- value: s@6 : i32 -- context: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (y) -> ⌊mut@2⌋ ; - Some (z) -> ⊥ : &'_ mut (i32) ; - Some (var@4) -> ⊥ : &'_ mut (i32) ; - Some (var@5) -> &mut@0 (s@5 : i32) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> &mut@2 (⌊mut@3⌋) ; - Some (var@8) -> s@1 : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - true, - ⊥ : &r@0 mut (i32), - ⊥ : &r@0 mut (i32), - @ended_mut_loan{ given_back=proj_borrows (s@2 : i32 <: i32); child=proj_loans (s@1 : i32) } - } -} - - -[Debug] end_abstraction: 0 -- original context: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (y) -> ⌊mut@2⌋ ; - Some (z) -> &mut@4 (s@2 : i32) ; - Some (var@4) -> ⊥ : &'_ mut (i32) ; - Some (var@5) -> &mut@0 (⌊mut@1⌋) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> &mut@2 (⌊mut@3⌋) ; - Some (var@8) -> s@1 : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - true, - &mut@1 (0: i32), - &mut@3 (0: i32), - ⌊mut@4, proj_loans (s@1 : i32)⌋ - } -} - - -- new context: -# Ended regions: {0} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (y) -> ⌊mut@2⌋ ; - Some (z) -> ⊥ : &'_ mut (i32) ; - Some (var@4) -> ⊥ : &'_ mut (i32) ; - Some (var@5) -> &mut@0 (s@5 : i32) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> &mut@2 (s@6 : i32) ; - Some (var@8) -> s@1 : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; -} - -[Debug] end borrow: 0: -- original context: -# Ended regions: {0} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (y) -> ⌊mut@2⌋ ; - Some (z) -> ⊥ : &'_ mut (i32) ; - Some (var@4) -> ⊥ : &'_ mut (i32) ; - Some (var@5) -> &mut@0 (s@5 : i32) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> &mut@2 (s@6 : i32) ; - Some (var@8) -> s@1 : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; -} - -[Debug] give_back: -- bid: 0 -- content: &mut@0 (s@5 : i32) -- context: -# Ended regions: {0} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (y) -> ⌊mut@2⌋ ; - Some (z) -> ⊥ : &'_ mut (i32) ; - Some (var@4) -> ⊥ : &'_ mut (i32) ; - Some (var@5) -> ⊥ : &'_ mut (i32) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> &mut@2 (s@6 : i32) ; - Some (var@8) -> s@1 : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; -} - - -[Debug] give_back_value: -- bid: 0 -- value: s@5 : i32 -- context: -# Ended regions: {0} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (y) -> ⌊mut@2⌋ ; - Some (z) -> ⊥ : &'_ mut (i32) ; - Some (var@4) -> ⊥ : &'_ mut (i32) ; - Some (var@5) -> ⊥ : &'_ mut (i32) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> &mut@2 (s@6 : i32) ; - Some (var@8) -> s@1 : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; -} - - -[Debug] -**About to evaluate statement**: [ - var@14 := move var@15 == 1: i32; - var@13 := ¬ move var@14; - assert(¬move var@13); - var@18 := copy y; - var@17 := move var@18 == 0: i32; - var@16 := ¬ move var@17; - assert(¬move var@16); - return -] - -**Context**: -# Ended regions: {0} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@5 : i32 ; - Some (y) -> ⌊mut@2⌋ ; - Some (z) -> ⊥ : &'_ mut (i32) ; - Some (var@4) -> ⊥ : &'_ mut (i32) ; - Some (var@5) -> ⊥ : &'_ mut (i32) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> &mut@2 (s@6 : i32) ; - Some (var@8) -> s@1 : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> s@5 : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; -} - - - -[Debug] -**About to evaluate statement**: [ - var@14 := move var@15 == 1: i32 -] - -**Context**: -# Ended regions: {0} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@5 : i32 ; - Some (y) -> ⌊mut@2⌋ ; - Some (z) -> ⊥ : &'_ mut (i32) ; - Some (var@4) -> ⊥ : &'_ mut (i32) ; - Some (var@5) -> ⊥ : &'_ mut (i32) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> &mut@2 (s@6 : i32) ; - Some (var@8) -> s@1 : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> s@5 : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {0} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@5 : i32 ; - Some (y) -> ⌊mut@2⌋ ; - Some (z) -> ⊥ : &'_ mut (i32) ; - Some (var@4) -> ⊥ : &'_ mut (i32) ; - Some (var@5) -> ⊥ : &'_ mut (i32) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> &mut@2 (s@6 : i32) ; - Some (var@8) -> s@1 : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> s@5 : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; -} - - -- op: -move var@15 - -[Debug] eval_operand: -- ctx: -# Ended regions: {0} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@5 : i32 ; - Some (y) -> ⌊mut@2⌋ ; - Some (z) -> ⊥ : &'_ mut (i32) ; - Some (var@4) -> ⊥ : &'_ mut (i32) ; - Some (var@5) -> ⊥ : &'_ mut (i32) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> &mut@2 (s@6 : i32) ; - Some (var@8) -> s@1 : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; -} - - -- op: -1: i32 - -[Debug] -**About to evaluate statement**: [ - var@13 := ¬ move var@14; - assert(¬move var@13); - var@18 := copy y; - var@17 := move var@18 == 0: i32; - var@16 := ¬ move var@17; - assert(¬move var@16); - return -] - -**Context**: -# Ended regions: {0} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@5 : i32 ; - Some (y) -> ⌊mut@2⌋ ; - Some (z) -> ⊥ : &'_ mut (i32) ; - Some (var@4) -> ⊥ : &'_ mut (i32) ; - Some (var@5) -> ⊥ : &'_ mut (i32) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> &mut@2 (s@6 : i32) ; - Some (var@8) -> s@1 : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> s@7 : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; -} - - - -[Debug] -**About to evaluate statement**: [ - var@13 := ¬ move var@14 -] - -**Context**: -# Ended regions: {0} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@5 : i32 ; - Some (y) -> ⌊mut@2⌋ ; - Some (z) -> ⊥ : &'_ mut (i32) ; - Some (var@4) -> ⊥ : &'_ mut (i32) ; - Some (var@5) -> ⊥ : &'_ mut (i32) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> &mut@2 (s@6 : i32) ; - Some (var@8) -> s@1 : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> s@7 : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {0} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@5 : i32 ; - Some (y) -> ⌊mut@2⌋ ; - Some (z) -> ⊥ : &'_ mut (i32) ; - Some (var@4) -> ⊥ : &'_ mut (i32) ; - Some (var@5) -> ⊥ : &'_ mut (i32) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> &mut@2 (s@6 : i32) ; - Some (var@8) -> s@1 : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> s@7 : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; -} - - -- op: -move var@14 - -[Debug] -**About to evaluate statement**: [ - assert(¬move var@13); - var@18 := copy y; - var@17 := move var@18 == 0: i32; - var@16 := ¬ move var@17; - assert(¬move var@16); - return -] - -**Context**: -# Ended regions: {0} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@5 : i32 ; - Some (y) -> ⌊mut@2⌋ ; - Some (z) -> ⊥ : &'_ mut (i32) ; - Some (var@4) -> ⊥ : &'_ mut (i32) ; - Some (var@5) -> ⊥ : &'_ mut (i32) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> &mut@2 (s@6 : i32) ; - Some (var@8) -> s@1 : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> s@8 : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; -} - - - -[Debug] -**About to evaluate statement**: [ - assert(¬move var@13) -] - -**Context**: -# Ended regions: {0} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@5 : i32 ; - Some (y) -> ⌊mut@2⌋ ; - Some (z) -> ⊥ : &'_ mut (i32) ; - Some (var@4) -> ⊥ : &'_ mut (i32) ; - Some (var@5) -> ⊥ : &'_ mut (i32) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> &mut@2 (s@6 : i32) ; - Some (var@8) -> s@1 : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> s@8 : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {0} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@5 : i32 ; - Some (y) -> ⌊mut@2⌋ ; - Some (z) -> ⊥ : &'_ mut (i32) ; - Some (var@4) -> ⊥ : &'_ mut (i32) ; - Some (var@5) -> ⊥ : &'_ mut (i32) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> &mut@2 (s@6 : i32) ; - Some (var@8) -> s@1 : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> true ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; -} - - -- op: -move var@13 - -[Debug] -**About to evaluate statement**: [ - var@18 := copy y; - var@17 := move var@18 == 0: i32; - var@16 := ¬ move var@17; - assert(¬move var@16); - return -] - -**Context**: -# Ended regions: {0} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@5 : i32 ; - Some (y) -> ⌊mut@2⌋ ; - Some (z) -> ⊥ : &'_ mut (i32) ; - Some (var@4) -> ⊥ : &'_ mut (i32) ; - Some (var@5) -> ⊥ : &'_ mut (i32) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> &mut@2 (s@6 : i32) ; - Some (var@8) -> s@1 : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; -} - - - -[Debug] -**About to evaluate statement**: [ - var@18 := copy y -] - -**Context**: -# Ended regions: {0} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@5 : i32 ; - Some (y) -> ⌊mut@2⌋ ; - Some (z) -> ⊥ : &'_ mut (i32) ; - Some (var@4) -> ⊥ : &'_ mut (i32) ; - Some (var@5) -> ⊥ : &'_ mut (i32) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> &mut@2 (s@6 : i32) ; - Some (var@8) -> s@1 : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {0} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@5 : i32 ; - Some (y) -> ⌊mut@2⌋ ; - Some (z) -> ⊥ : &'_ mut (i32) ; - Some (var@4) -> ⊥ : &'_ mut (i32) ; - Some (var@5) -> ⊥ : &'_ mut (i32) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> &mut@2 (s@6 : i32) ; - Some (var@8) -> s@1 : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; -} - - -- op: -copy y - -[Debug] end borrow: 2: -- original context: -# Ended regions: {0} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@5 : i32 ; - Some (y) -> ⌊mut@2⌋ ; - Some (z) -> ⊥ : &'_ mut (i32) ; - Some (var@4) -> ⊥ : &'_ mut (i32) ; - Some (var@5) -> ⊥ : &'_ mut (i32) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> &mut@2 (s@6 : i32) ; - Some (var@8) -> s@1 : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; -} - -[Debug] give_back: -- bid: 2 -- content: &mut@2 (s@6 : i32) -- context: -# Ended regions: {0} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@5 : i32 ; - Some (y) -> ⌊mut@2⌋ ; - Some (z) -> ⊥ : &'_ mut (i32) ; - Some (var@4) -> ⊥ : &'_ mut (i32) ; - Some (var@5) -> ⊥ : &'_ mut (i32) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> s@1 : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; -} - - -[Debug] give_back_value: -- bid: 2 -- value: s@6 : i32 -- context: -# Ended regions: {0} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@5 : i32 ; - Some (y) -> ⌊mut@2⌋ ; - Some (z) -> ⊥ : &'_ mut (i32) ; - Some (var@4) -> ⊥ : &'_ mut (i32) ; - Some (var@5) -> ⊥ : &'_ mut (i32) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> s@1 : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; -} - - -[Debug] -**About to evaluate statement**: [ - var@17 := move var@18 == 0: i32; - var@16 := ¬ move var@17; - assert(¬move var@16); - return -] - -**Context**: -# Ended regions: {0} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@5 : i32 ; - Some (y) -> s@6 : i32 ; - Some (z) -> ⊥ : &'_ mut (i32) ; - Some (var@4) -> ⊥ : &'_ mut (i32) ; - Some (var@5) -> ⊥ : &'_ mut (i32) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> s@1 : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> s@6 : i32 ; -} - - - -[Debug] -**About to evaluate statement**: [ - var@17 := move var@18 == 0: i32 -] - -**Context**: -# Ended regions: {0} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@5 : i32 ; - Some (y) -> s@6 : i32 ; - Some (z) -> ⊥ : &'_ mut (i32) ; - Some (var@4) -> ⊥ : &'_ mut (i32) ; - Some (var@5) -> ⊥ : &'_ mut (i32) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> s@1 : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> s@6 : i32 ; -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {0} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@5 : i32 ; - Some (y) -> s@6 : i32 ; - Some (z) -> ⊥ : &'_ mut (i32) ; - Some (var@4) -> ⊥ : &'_ mut (i32) ; - Some (var@5) -> ⊥ : &'_ mut (i32) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> s@1 : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> s@6 : i32 ; -} - - -- op: -move var@18 - -[Debug] eval_operand: -- ctx: -# Ended regions: {0} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@5 : i32 ; - Some (y) -> s@6 : i32 ; - Some (z) -> ⊥ : &'_ mut (i32) ; - Some (var@4) -> ⊥ : &'_ mut (i32) ; - Some (var@5) -> ⊥ : &'_ mut (i32) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> s@1 : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; -} - - -- op: -0: i32 - -[Debug] -**About to evaluate statement**: [ - var@16 := ¬ move var@17; - assert(¬move var@16); - return -] - -**Context**: -# Ended regions: {0} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@5 : i32 ; - Some (y) -> s@6 : i32 ; - Some (z) -> ⊥ : &'_ mut (i32) ; - Some (var@4) -> ⊥ : &'_ mut (i32) ; - Some (var@5) -> ⊥ : &'_ mut (i32) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> s@1 : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> s@9 : bool ; - Some (var@18) -> ⊥ : i32 ; -} - - - -[Debug] -**About to evaluate statement**: [ - var@16 := ¬ move var@17 -] - -**Context**: -# Ended regions: {0} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@5 : i32 ; - Some (y) -> s@6 : i32 ; - Some (z) -> ⊥ : &'_ mut (i32) ; - Some (var@4) -> ⊥ : &'_ mut (i32) ; - Some (var@5) -> ⊥ : &'_ mut (i32) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> s@1 : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> s@9 : bool ; - Some (var@18) -> ⊥ : i32 ; -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {0} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@5 : i32 ; - Some (y) -> s@6 : i32 ; - Some (z) -> ⊥ : &'_ mut (i32) ; - Some (var@4) -> ⊥ : &'_ mut (i32) ; - Some (var@5) -> ⊥ : &'_ mut (i32) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> s@1 : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> s@9 : bool ; - Some (var@18) -> ⊥ : i32 ; -} - - -- op: -move var@17 - -[Debug] -**About to evaluate statement**: [ - assert(¬move var@16); - return -] - -**Context**: -# Ended regions: {0} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@5 : i32 ; - Some (y) -> s@6 : i32 ; - Some (z) -> ⊥ : &'_ mut (i32) ; - Some (var@4) -> ⊥ : &'_ mut (i32) ; - Some (var@5) -> ⊥ : &'_ mut (i32) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> s@1 : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> s@10 : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; -} - - - -[Debug] -**About to evaluate statement**: [ - assert(¬move var@16) -] - -**Context**: -# Ended regions: {0} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@5 : i32 ; - Some (y) -> s@6 : i32 ; - Some (z) -> ⊥ : &'_ mut (i32) ; - Some (var@4) -> ⊥ : &'_ mut (i32) ; - Some (var@5) -> ⊥ : &'_ mut (i32) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> s@1 : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> s@10 : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {0} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@5 : i32 ; - Some (y) -> s@6 : i32 ; - Some (z) -> ⊥ : &'_ mut (i32) ; - Some (var@4) -> ⊥ : &'_ mut (i32) ; - Some (var@5) -> ⊥ : &'_ mut (i32) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> s@1 : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> true ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; -} - - -- op: -move var@16 - -[Debug] -**About to evaluate statement**: [ - return -] - -**Context**: -# Ended regions: {0} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@5 : i32 ; - Some (y) -> s@6 : i32 ; - Some (z) -> ⊥ : &'_ mut (i32) ; - Some (var@4) -> ⊥ : &'_ mut (i32) ; - Some (var@5) -> ⊥ : &'_ mut (i32) ; - Some (var@6) -> ⊥ : &'_ mut (i32) ; - Some (var@7) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> s@1 : i32 ; - Some (var@9) -> ⊥ : (i32, bool) ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : i32 ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : i32 ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : bool ; - Some (var@18) -> ⊥ : i32 ; -} - - - -[Debug] test_function_symbolic: id_mut_mut -[Debug] -**About to evaluate statement**: [ - var@2 := &mut *(x); - var@0 := &mut *(var@2); - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - abs@0{parents={}}{regions={0}} { - proj_loans (s@0 : &r@0 mut (&r@1 mut (T))) - } - abs@1{parents={0}}{regions={1}} { - proj_loans (s@0 : &r@0 mut (&r@1 mut (T))) - } - Some (var@0) -> ⊥ : &'_ mut (&'_ mut (T)) ; - Some (x) -> s@0 : &r@0 mut (&r@1 mut (T)) ; - Some (var@2) -> ⊥ : &'_ mut (&'_ mut (T)) ; -} - - - -[Debug] -**About to evaluate statement**: [ - var@2 := &mut *(x) -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - abs@0{parents={}}{regions={0}} { - proj_loans (s@0 : &r@0 mut (&r@1 mut (T))) - } - abs@1{parents={0}}{regions={1}} { - proj_loans (s@0 : &r@0 mut (&r@1 mut (T))) - } - Some (var@0) -> ⊥ : &'_ mut (&'_ mut (T)) ; - Some (x) -> s@0 : &r@0 mut (&r@1 mut (T)) ; - Some (var@2) -> ⊥ : &'_ mut (&'_ mut (T)) ; -} - - - -[Debug] expand_symbolic_value: s@0 : &r@0 mut (&r@1 mut (T)) - -- original context: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - abs@0{parents={}}{regions={0}} { - proj_loans (s@0 : &r@0 mut (&r@1 mut (T))) - } - abs@1{parents={0}}{regions={1}} { - proj_loans (s@0 : &r@0 mut (&r@1 mut (T))) - } - Some (var@0) -> ⊥ : &'_ mut (&'_ mut (T)) ; - Some (x) -> s@0 : &r@0 mut (&r@1 mut (T)) ; - Some (var@2) -> ⊥ : &'_ mut (&'_ mut (T)) ; -} - - -- new context: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - abs@0{parents={}}{regions={0}} { - ⌊mut@0, proj_loans (s@1 : &r@1 mut (T))⌋ - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_loan(0, proj_loans (s@1 : &r@1 mut (T))) - } - Some (var@0) -> ⊥ : &'_ mut (&'_ mut (T)) ; - Some (x) -> &mut@0 (s@1 : &r@1 mut (T)) ; - Some (var@2) -> ⊥ : &'_ mut (&'_ mut (T)) ; -} - - -[Debug] -**About to evaluate statement**: [ - var@0 := &mut *(var@2); - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - abs@0{parents={}}{regions={0}} { - ⌊mut@0, proj_loans (s@1 : &r@1 mut (T))⌋ - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_loan(0, proj_loans (s@1 : &r@1 mut (T))) - } - Some (var@0) -> ⊥ : &'_ mut (&'_ mut (T)) ; - Some (x) -> &mut@0 (⌊mut@1⌋) ; - Some (var@2) -> &mut@1 (s@1 : &r@1 mut (T)) ; -} - - - -[Debug] -**About to evaluate statement**: [ - var@0 := &mut *(var@2) -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - abs@0{parents={}}{regions={0}} { - ⌊mut@0, proj_loans (s@1 : &r@1 mut (T))⌋ - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_loan(0, proj_loans (s@1 : &r@1 mut (T))) - } - Some (var@0) -> ⊥ : &'_ mut (&'_ mut (T)) ; - Some (x) -> &mut@0 (⌊mut@1⌋) ; - Some (var@2) -> &mut@1 (s@1 : &r@1 mut (T)) ; -} - - - -[Debug] -**About to evaluate statement**: [ - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - abs@0{parents={}}{regions={0}} { - ⌊mut@0, proj_loans (s@1 : &r@1 mut (T))⌋ - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_loan(0, proj_loans (s@1 : &r@1 mut (T))) - } - Some (var@0) -> &mut@2 (s@1 : &r@1 mut (T)) ; - Some (x) -> &mut@0 (⌊mut@1⌋) ; - Some (var@2) -> &mut@1 (⌊mut@2⌋) ; -} - - - -[Debug] test_function_symbolic: id_mut_pair -[Debug] -**About to evaluate statement**: [ - var@2 := &mut *(x); - var@0 := &mut *(var@2); - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - abs@0{parents={}}{regions={0}} { - proj_loans (s@0 : &r@0 mut ((&r@0 mut (T), u32))) - } - Some (var@0) -> ⊥ : &'_ mut ((&'_ mut (T), u32)) ; - Some (x) -> s@0 : &r@0 mut ((&r@0 mut (T), u32)) ; - Some (var@2) -> ⊥ : &'_ mut ((&'_ mut (T), u32)) ; -} - - - -[Debug] -**About to evaluate statement**: [ - var@2 := &mut *(x) -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - abs@0{parents={}}{regions={0}} { - proj_loans (s@0 : &r@0 mut ((&r@0 mut (T), u32))) - } - Some (var@0) -> ⊥ : &'_ mut ((&'_ mut (T), u32)) ; - Some (x) -> s@0 : &r@0 mut ((&r@0 mut (T), u32)) ; - Some (var@2) -> ⊥ : &'_ mut ((&'_ mut (T), u32)) ; -} - - - -[Debug] expand_symbolic_value: s@0 : &r@0 mut ((&r@0 mut (T), u32)) - -- original context: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - abs@0{parents={}}{regions={0}} { - proj_loans (s@0 : &r@0 mut ((&r@0 mut (T), u32))) - } - Some (var@0) -> ⊥ : &'_ mut ((&'_ mut (T), u32)) ; - Some (x) -> s@0 : &r@0 mut ((&r@0 mut (T), u32)) ; - Some (var@2) -> ⊥ : &'_ mut ((&'_ mut (T), u32)) ; -} - - -- new context: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - abs@0{parents={}}{regions={0}} { - ⌊mut@0, proj_loans (s@1 : (&r@0 mut (T), u32))⌋ - } - Some (var@0) -> ⊥ : &'_ mut ((&'_ mut (T), u32)) ; - Some (x) -> &mut@0 (s@1 : (&r@0 mut (T), u32)) ; - Some (var@2) -> ⊥ : &'_ mut ((&'_ mut (T), u32)) ; -} - - -[Debug] -**About to evaluate statement**: [ - var@0 := &mut *(var@2); - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - abs@0{parents={}}{regions={0}} { - ⌊mut@0, proj_loans (s@1 : (&r@0 mut (T), u32))⌋ - } - Some (var@0) -> ⊥ : &'_ mut ((&'_ mut (T), u32)) ; - Some (x) -> &mut@0 (⌊mut@1⌋) ; - Some (var@2) -> &mut@1 (s@1 : (&r@0 mut (T), u32)) ; -} - - - -[Debug] -**About to evaluate statement**: [ - var@0 := &mut *(var@2) -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - abs@0{parents={}}{regions={0}} { - ⌊mut@0, proj_loans (s@1 : (&r@0 mut (T), u32))⌋ - } - Some (var@0) -> ⊥ : &'_ mut ((&'_ mut (T), u32)) ; - Some (x) -> &mut@0 (⌊mut@1⌋) ; - Some (var@2) -> &mut@1 (s@1 : (&r@0 mut (T), u32)) ; -} - - - -[Debug] -**About to evaluate statement**: [ - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - abs@0{parents={}}{regions={0}} { - ⌊mut@0, proj_loans (s@1 : (&r@0 mut (T), u32))⌋ - } - Some (var@0) -> &mut@2 (s@1 : (&r@0 mut (T), u32)) ; - Some (x) -> &mut@0 (⌊mut@1⌋) ; - Some (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**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⊥ : u32 ; - Some (px) -> ⊥ : &'_ mut (u32) ; - Some (p) -> ⊥ : (&'_ mut (u32), u32) ; - Some (var@4) -> ⊥ : &'_ mut (u32) ; - Some (pp0) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; - Some (pp1) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; - Some (var@7) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; - Some (y) -> ⊥ : u32 ; - Some (var@9) -> ⊥ : &'_ mut (u32) ; - Some (var@10) -> ⊥ : &'_ mut (u32) ; -} - - - -[Debug] -**About to evaluate statement**: [ - x := 0: u32 -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⊥ : u32 ; - Some (px) -> ⊥ : &'_ mut (u32) ; - Some (p) -> ⊥ : (&'_ mut (u32), u32) ; - Some (var@4) -> ⊥ : &'_ mut (u32) ; - Some (pp0) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; - Some (pp1) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; - Some (var@7) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; - Some (y) -> ⊥ : u32 ; - Some (var@9) -> ⊥ : &'_ mut (u32) ; - Some (var@10) -> ⊥ : &'_ mut (u32) ; -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⊥ : u32 ; - Some (px) -> ⊥ : &'_ mut (u32) ; - Some (p) -> ⊥ : (&'_ mut (u32), u32) ; - Some (var@4) -> ⊥ : &'_ mut (u32) ; - Some (pp0) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; - Some (pp1) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; - Some (var@7) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; - Some (y) -> ⊥ : u32 ; - Some (var@9) -> ⊥ : &'_ mut (u32) ; - Some (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**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> 0: u32 ; - Some (px) -> ⊥ : &'_ mut (u32) ; - Some (p) -> ⊥ : (&'_ mut (u32), u32) ; - Some (var@4) -> ⊥ : &'_ mut (u32) ; - Some (pp0) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; - Some (pp1) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; - Some (var@7) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; - Some (y) -> ⊥ : u32 ; - Some (var@9) -> ⊥ : &'_ mut (u32) ; - Some (var@10) -> ⊥ : &'_ mut (u32) ; -} - - - -[Debug] -**About to evaluate statement**: [ - px := &mut x -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> 0: u32 ; - Some (px) -> ⊥ : &'_ mut (u32) ; - Some (p) -> ⊥ : (&'_ mut (u32), u32) ; - Some (var@4) -> ⊥ : &'_ mut (u32) ; - Some (pp0) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; - Some (pp1) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; - Some (var@7) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; - Some (y) -> ⊥ : u32 ; - Some (var@9) -> ⊥ : &'_ mut (u32) ; - Some (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**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@0 (0: u32) ; - Some (p) -> ⊥ : (&'_ mut (u32), u32) ; - Some (var@4) -> ⊥ : &'_ mut (u32) ; - Some (pp0) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; - Some (pp1) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; - Some (var@7) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; - Some (y) -> ⊥ : u32 ; - Some (var@9) -> ⊥ : &'_ mut (u32) ; - Some (var@10) -> ⊥ : &'_ mut (u32) ; -} - - - -[Debug] -**About to evaluate statement**: [ - var@4 := move px -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@0 (0: u32) ; - Some (p) -> ⊥ : (&'_ mut (u32), u32) ; - Some (var@4) -> ⊥ : &'_ mut (u32) ; - Some (pp0) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; - Some (pp1) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; - Some (var@7) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; - Some (y) -> ⊥ : u32 ; - Some (var@9) -> ⊥ : &'_ mut (u32) ; - Some (var@10) -> ⊥ : &'_ mut (u32) ; -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@0 (0: u32) ; - Some (p) -> ⊥ : (&'_ mut (u32), u32) ; - Some (var@4) -> ⊥ : &'_ mut (u32) ; - Some (pp0) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; - Some (pp1) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; - Some (var@7) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; - Some (y) -> ⊥ : u32 ; - Some (var@9) -> ⊥ : &'_ mut (u32) ; - Some (var@10) -> ⊥ : &'_ mut (u32) ; -} - - -- op: -move px - -[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**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⊥ : &'_ mut (u32) ; - Some (p) -> ⊥ : (&'_ mut (u32), u32) ; - Some (var@4) -> &mut@0 (0: u32) ; - Some (pp0) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; - Some (pp1) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; - Some (var@7) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; - Some (y) -> ⊥ : u32 ; - Some (var@9) -> ⊥ : &'_ mut (u32) ; - Some (var@10) -> ⊥ : &'_ mut (u32) ; -} - - - -[Debug] -**About to evaluate statement**: [ - (p).0 := move var@4 -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⊥ : &'_ mut (u32) ; - Some (p) -> ⊥ : (&'_ mut (u32), u32) ; - Some (var@4) -> &mut@0 (0: u32) ; - Some (pp0) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; - Some (pp1) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; - Some (var@7) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; - Some (y) -> ⊥ : u32 ; - Some (var@9) -> ⊥ : &'_ mut (u32) ; - Some (var@10) -> ⊥ : &'_ mut (u32) ; -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⊥ : &'_ mut (u32) ; - Some (p) -> ⊥ : (&'_ mut (u32), u32) ; - Some (var@4) -> &mut@0 (0: u32) ; - Some (pp0) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; - Some (pp1) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; - Some (var@7) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; - Some (y) -> ⊥ : u32 ; - Some (var@9) -> ⊥ : &'_ mut (u32) ; - Some (var@10) -> ⊥ : &'_ mut (u32) ; -} - - -- op: -move var@4 - -[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**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⊥ : &'_ mut (u32) ; - Some (p) -> (&mut@0 (0: u32), ⊥ : u32) ; - Some (var@4) -> ⊥ : &'_ mut (u32) ; - Some (pp0) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; - Some (pp1) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; - Some (var@7) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; - Some (y) -> ⊥ : u32 ; - Some (var@9) -> ⊥ : &'_ mut (u32) ; - Some (var@10) -> ⊥ : &'_ mut (u32) ; -} - - - -[Debug] -**About to evaluate statement**: [ - (p).1 := 1: u32 -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⊥ : &'_ mut (u32) ; - Some (p) -> (&mut@0 (0: u32), ⊥ : u32) ; - Some (var@4) -> ⊥ : &'_ mut (u32) ; - Some (pp0) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; - Some (pp1) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; - Some (var@7) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; - Some (y) -> ⊥ : u32 ; - Some (var@9) -> ⊥ : &'_ mut (u32) ; - Some (var@10) -> ⊥ : &'_ mut (u32) ; -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⊥ : &'_ mut (u32) ; - Some (p) -> (&mut@0 (0: u32), ⊥ : u32) ; - Some (var@4) -> ⊥ : &'_ mut (u32) ; - Some (pp0) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; - Some (pp1) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; - Some (var@7) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; - Some (y) -> ⊥ : u32 ; - Some (var@9) -> ⊥ : &'_ mut (u32) ; - Some (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**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⊥ : &'_ mut (u32) ; - Some (p) -> (&mut@0 (0: u32), 1: u32) ; - Some (var@4) -> ⊥ : &'_ mut (u32) ; - Some (pp0) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; - Some (pp1) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; - Some (var@7) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; - Some (y) -> ⊥ : u32 ; - Some (var@9) -> ⊥ : &'_ mut (u32) ; - Some (var@10) -> ⊥ : &'_ mut (u32) ; -} - - - -[Debug] -**About to evaluate statement**: [ - pp0 := &mut p -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⊥ : &'_ mut (u32) ; - Some (p) -> (&mut@0 (0: u32), 1: u32) ; - Some (var@4) -> ⊥ : &'_ mut (u32) ; - Some (pp0) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; - Some (pp1) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; - Some (var@7) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; - Some (y) -> ⊥ : u32 ; - Some (var@9) -> ⊥ : &'_ mut (u32) ; - Some (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**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⊥ : &'_ mut (u32) ; - Some (p) -> ⌊mut@1⌋ ; - Some (var@4) -> ⊥ : &'_ mut (u32) ; - Some (pp0) -> &mut@1 ((&mut@0 (0: u32), 1: u32)) ; - Some (pp1) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; - Some (var@7) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; - Some (y) -> ⊥ : u32 ; - Some (var@9) -> ⊥ : &'_ mut (u32) ; - Some (var@10) -> ⊥ : &'_ mut (u32) ; -} - - - -[Debug] -**About to evaluate statement**: [ - var@7 := &two-phase *(pp0) -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⊥ : &'_ mut (u32) ; - Some (p) -> ⌊mut@1⌋ ; - Some (var@4) -> ⊥ : &'_ mut (u32) ; - Some (pp0) -> &mut@1 ((&mut@0 (0: u32), 1: u32)) ; - Some (pp1) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; - Some (var@7) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; - Some (y) -> ⊥ : u32 ; - Some (var@9) -> ⊥ : &'_ mut (u32) ; - Some (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**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⊥ : &'_ mut (u32) ; - Some (p) -> ⌊mut@1⌋ ; - Some (var@4) -> ⊥ : &'_ mut (u32) ; - Some (pp0) -> &mut@1 (@shared_loan({2}, (&mut@0 (0: u32), 1: u32))) ; - Some (pp1) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; - Some (var@7) -> ⌊inactivated_mut@2⌋ ; - Some (y) -> ⊥ : u32 ; - Some (var@9) -> ⊥ : &'_ mut (u32) ; - Some (var@10) -> ⊥ : &'_ mut (u32) ; -} - - - -[Debug] -**About to evaluate statement**: [ - pp1 := move id_mut_pair(move var@7) -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⊥ : &'_ mut (u32) ; - Some (p) -> ⌊mut@1⌋ ; - Some (var@4) -> ⊥ : &'_ mut (u32) ; - Some (pp0) -> &mut@1 (@shared_loan({2}, (&mut@0 (0: u32), 1: u32))) ; - Some (pp1) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; - Some (var@7) -> ⌊inactivated_mut@2⌋ ; - Some (y) -> ⊥ : u32 ; - Some (var@9) -> ⊥ : &'_ mut (u32) ; - Some (var@10) -> ⊥ : &'_ mut (u32) ; -} - - - -[Debug] activate_inactivated_mut_borrow: resulting value: -(&mut@0 (0: u32), 1: u32) -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⊥ : &'_ mut (u32) ; - Some (p) -> ⌊mut@1⌋ ; - Some (var@4) -> ⊥ : &'_ mut (u32) ; - Some (pp0) -> &mut@1 (⌊mut@2⌋) ; - Some (pp1) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; - Some (var@7) -> &mut@2 ((&mut@0 (0: u32), 1: u32)) ; - Some (y) -> ⊥ : u32 ; - Some (var@9) -> ⊥ : &'_ mut (u32) ; - Some (var@10) -> ⊥ : &'_ mut (u32) ; -} - - -- op: -move var@7 - -[Debug] -**About to evaluate statement**: [ - y := 2: u32; - var@10 := &mut y; - var@9 := &mut *(var@10); - *((pp1).0) := move var@9; - *((pp1).1) := 3: u32; - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⊥ : &'_ mut (u32) ; - Some (p) -> ⌊mut@1⌋ ; - Some (var@4) -> ⊥ : &'_ mut (u32) ; - Some (pp0) -> &mut@1 (⌊mut@2⌋) ; - Some (pp1) -> s@0 : &r@0 mut ((&r@0 mut (u32), u32)) ; - Some (var@7) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; - Some (y) -> ⊥ : u32 ; - Some (var@9) -> ⊥ : &'_ mut (u32) ; - Some (var@10) -> ⊥ : &'_ mut (u32) ; - abs@0{parents={}}{regions={0}} { - &mut@2 ((&mut@0 (0: u32), 1: u32)), - proj_loans (s@0 : &r@0 mut ((&r@0 mut (u32), u32))) - } -} - - - -[Debug] -**About to evaluate statement**: [ - y := 2: u32 -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⊥ : &'_ mut (u32) ; - Some (p) -> ⌊mut@1⌋ ; - Some (var@4) -> ⊥ : &'_ mut (u32) ; - Some (pp0) -> &mut@1 (⌊mut@2⌋) ; - Some (pp1) -> s@0 : &r@0 mut ((&r@0 mut (u32), u32)) ; - Some (var@7) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; - Some (y) -> ⊥ : u32 ; - Some (var@9) -> ⊥ : &'_ mut (u32) ; - Some (var@10) -> ⊥ : &'_ mut (u32) ; - abs@0{parents={}}{regions={0}} { - &mut@2 ((&mut@0 (0: u32), 1: u32)), - proj_loans (s@0 : &r@0 mut ((&r@0 mut (u32), u32))) - } -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⊥ : &'_ mut (u32) ; - Some (p) -> ⌊mut@1⌋ ; - Some (var@4) -> ⊥ : &'_ mut (u32) ; - Some (pp0) -> &mut@1 (⌊mut@2⌋) ; - Some (pp1) -> s@0 : &r@0 mut ((&r@0 mut (u32), u32)) ; - Some (var@7) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; - Some (y) -> ⊥ : u32 ; - Some (var@9) -> ⊥ : &'_ mut (u32) ; - Some (var@10) -> ⊥ : &'_ mut (u32) ; - abs@0{parents={}}{regions={0}} { - &mut@2 ((&mut@0 (0: u32), 1: u32)), - proj_loans (s@0 : &r@0 mut ((&r@0 mut (u32), u32))) - } -} - - -- op: -2: u32 - -[Debug] -**About to evaluate statement**: [ - var@10 := &mut y; - var@9 := &mut *(var@10); - *((pp1).0) := move var@9; - *((pp1).1) := 3: u32; - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⊥ : &'_ mut (u32) ; - Some (p) -> ⌊mut@1⌋ ; - Some (var@4) -> ⊥ : &'_ mut (u32) ; - Some (pp0) -> &mut@1 (⌊mut@2⌋) ; - Some (pp1) -> s@0 : &r@0 mut ((&r@0 mut (u32), u32)) ; - Some (var@7) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; - Some (y) -> 2: u32 ; - Some (var@9) -> ⊥ : &'_ mut (u32) ; - Some (var@10) -> ⊥ : &'_ mut (u32) ; - abs@0{parents={}}{regions={0}} { - &mut@2 ((&mut@0 (0: u32), 1: u32)), - proj_loans (s@0 : &r@0 mut ((&r@0 mut (u32), u32))) - } -} - - - -[Debug] -**About to evaluate statement**: [ - var@10 := &mut y -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⊥ : &'_ mut (u32) ; - Some (p) -> ⌊mut@1⌋ ; - Some (var@4) -> ⊥ : &'_ mut (u32) ; - Some (pp0) -> &mut@1 (⌊mut@2⌋) ; - Some (pp1) -> s@0 : &r@0 mut ((&r@0 mut (u32), u32)) ; - Some (var@7) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; - Some (y) -> 2: u32 ; - Some (var@9) -> ⊥ : &'_ mut (u32) ; - Some (var@10) -> ⊥ : &'_ mut (u32) ; - abs@0{parents={}}{regions={0}} { - &mut@2 ((&mut@0 (0: u32), 1: u32)), - proj_loans (s@0 : &r@0 mut ((&r@0 mut (u32), u32))) - } -} - - - -[Debug] -**About to evaluate statement**: [ - var@9 := &mut *(var@10); - *((pp1).0) := move var@9; - *((pp1).1) := 3: u32; - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⊥ : &'_ mut (u32) ; - Some (p) -> ⌊mut@1⌋ ; - Some (var@4) -> ⊥ : &'_ mut (u32) ; - Some (pp0) -> &mut@1 (⌊mut@2⌋) ; - Some (pp1) -> s@0 : &r@0 mut ((&r@0 mut (u32), u32)) ; - Some (var@7) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; - Some (y) -> ⌊mut@3⌋ ; - Some (var@9) -> ⊥ : &'_ mut (u32) ; - Some (var@10) -> &mut@3 (2: u32) ; - abs@0{parents={}}{regions={0}} { - &mut@2 ((&mut@0 (0: u32), 1: u32)), - proj_loans (s@0 : &r@0 mut ((&r@0 mut (u32), u32))) - } -} - - - -[Debug] -**About to evaluate statement**: [ - var@9 := &mut *(var@10) -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⊥ : &'_ mut (u32) ; - Some (p) -> ⌊mut@1⌋ ; - Some (var@4) -> ⊥ : &'_ mut (u32) ; - Some (pp0) -> &mut@1 (⌊mut@2⌋) ; - Some (pp1) -> s@0 : &r@0 mut ((&r@0 mut (u32), u32)) ; - Some (var@7) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; - Some (y) -> ⌊mut@3⌋ ; - Some (var@9) -> ⊥ : &'_ mut (u32) ; - Some (var@10) -> &mut@3 (2: u32) ; - abs@0{parents={}}{regions={0}} { - &mut@2 ((&mut@0 (0: u32), 1: u32)), - proj_loans (s@0 : &r@0 mut ((&r@0 mut (u32), u32))) - } -} - - - -[Debug] -**About to evaluate statement**: [ - *((pp1).0) := move var@9; - *((pp1).1) := 3: u32; - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⊥ : &'_ mut (u32) ; - Some (p) -> ⌊mut@1⌋ ; - Some (var@4) -> ⊥ : &'_ mut (u32) ; - Some (pp0) -> &mut@1 (⌊mut@2⌋) ; - Some (pp1) -> s@0 : &r@0 mut ((&r@0 mut (u32), u32)) ; - Some (var@7) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; - Some (y) -> ⌊mut@3⌋ ; - Some (var@9) -> &mut@4 (2: u32) ; - Some (var@10) -> &mut@3 (⌊mut@4⌋) ; - abs@0{parents={}}{regions={0}} { - &mut@2 ((&mut@0 (0: u32), 1: u32)), - proj_loans (s@0 : &r@0 mut ((&r@0 mut (u32), u32))) - } -} - - - -[Debug] -**About to evaluate statement**: [ - *((pp1).0) := move var@9 -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⊥ : &'_ mut (u32) ; - Some (p) -> ⌊mut@1⌋ ; - Some (var@4) -> ⊥ : &'_ mut (u32) ; - Some (pp0) -> &mut@1 (⌊mut@2⌋) ; - Some (pp1) -> s@0 : &r@0 mut ((&r@0 mut (u32), u32)) ; - Some (var@7) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; - Some (y) -> ⌊mut@3⌋ ; - Some (var@9) -> &mut@4 (2: u32) ; - Some (var@10) -> &mut@3 (⌊mut@4⌋) ; - abs@0{parents={}}{regions={0}} { - &mut@2 ((&mut@0 (0: u32), 1: u32)), - proj_loans (s@0 : &r@0 mut ((&r@0 mut (u32), u32))) - } -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⊥ : &'_ mut (u32) ; - Some (p) -> ⌊mut@1⌋ ; - Some (var@4) -> ⊥ : &'_ mut (u32) ; - Some (pp0) -> &mut@1 (⌊mut@2⌋) ; - Some (pp1) -> s@0 : &r@0 mut ((&r@0 mut (u32), u32)) ; - Some (var@7) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; - Some (y) -> ⌊mut@3⌋ ; - Some (var@9) -> &mut@4 (2: u32) ; - Some (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] expand_symbolic_value: s@0 : &r@0 mut ((&r@0 mut (u32), u32)) - -- original context: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⊥ : &'_ mut (u32) ; - Some (p) -> ⌊mut@1⌋ ; - Some (var@4) -> ⊥ : &'_ mut (u32) ; - Some (pp0) -> &mut@1 (⌊mut@2⌋) ; - Some (pp1) -> s@0 : &r@0 mut ((&r@0 mut (u32), u32)) ; - Some (var@7) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; - Some (y) -> ⌊mut@3⌋ ; - Some (var@9) -> ⊥ : &'_ mut (u32) ; - Some (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))) - } - None -> &mut@4 (2: u32) ; -} - - -- new context: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⊥ : &'_ mut (u32) ; - Some (p) -> ⌊mut@1⌋ ; - Some (var@4) -> ⊥ : &'_ mut (u32) ; - Some (pp0) -> &mut@1 (⌊mut@2⌋) ; - Some (pp1) -> &mut@5 (s@1 : (&r@0 mut (u32), u32)) ; - Some (var@7) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; - Some (y) -> ⌊mut@3⌋ ; - Some (var@9) -> ⊥ : &'_ mut (u32) ; - Some (var@10) -> &mut@3 (⌊mut@4⌋) ; - abs@0{parents={}}{regions={0}} { - &mut@2 ((&mut@0 (0: u32), 1: u32)), - ⌊mut@5, proj_loans (s@1 : (&r@0 mut (u32), u32))⌋ - } - None -> &mut@4 (2: u32) ; -} - - -[Debug] expand_symbolic_value: s@1 : (&r@0 mut (u32), u32) - -- original context: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⊥ : &'_ mut (u32) ; - Some (p) -> ⌊mut@1⌋ ; - Some (var@4) -> ⊥ : &'_ mut (u32) ; - Some (pp0) -> &mut@1 (⌊mut@2⌋) ; - Some (pp1) -> &mut@5 (s@1 : (&r@0 mut (u32), u32)) ; - Some (var@7) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; - Some (y) -> ⌊mut@3⌋ ; - Some (var@9) -> ⊥ : &'_ mut (u32) ; - Some (var@10) -> &mut@3 (⌊mut@4⌋) ; - abs@0{parents={}}{regions={0}} { - &mut@2 ((&mut@0 (0: u32), 1: u32)), - ⌊mut@5, proj_loans (s@1 : (&r@0 mut (u32), u32))⌋ - } - None -> &mut@4 (2: u32) ; -} - - -- new context: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⊥ : &'_ mut (u32) ; - Some (p) -> ⌊mut@1⌋ ; - Some (var@4) -> ⊥ : &'_ mut (u32) ; - Some (pp0) -> &mut@1 (⌊mut@2⌋) ; - Some (pp1) -> &mut@5 ((s@2 : &r@0 mut (u32), s@3 : u32)) ; - Some (var@7) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; - Some (y) -> ⌊mut@3⌋ ; - Some (var@9) -> ⊥ : &'_ mut (u32) ; - Some (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))⌋ - } - None -> &mut@4 (2: u32) ; -} - - -[Debug] -**About to evaluate statement**: [ - *((pp1).1) := 3: u32; - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⊥ : &'_ mut (u32) ; - Some (p) -> ⌊mut@1⌋ ; - Some (var@4) -> ⊥ : &'_ mut (u32) ; - Some (pp0) -> &mut@1 (⌊mut@2⌋) ; - Some (pp1) -> &mut@5 ((&mut@4 (2: u32), s@3 : u32)) ; - Some (var@7) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; - Some (y) -> ⌊mut@3⌋ ; - Some (var@9) -> ⊥ : &'_ mut (u32) ; - Some (var@10) -> &mut@3 (⌊mut@4⌋) ; - abs@0{parents={}}{regions={0}} { - &mut@2 ((&mut@0 (0: u32), 1: u32)), - ⌊mut@5, (proj_loans (s@2 : &r@0 mut (u32)), proj_loans (s@3 : u32))⌋ - } -} - - - -[Debug] -**About to evaluate statement**: [ - *((pp1).1) := 3: u32 -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⊥ : &'_ mut (u32) ; - Some (p) -> ⌊mut@1⌋ ; - Some (var@4) -> ⊥ : &'_ mut (u32) ; - Some (pp0) -> &mut@1 (⌊mut@2⌋) ; - Some (pp1) -> &mut@5 ((&mut@4 (2: u32), s@3 : u32)) ; - Some (var@7) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; - Some (y) -> ⌊mut@3⌋ ; - Some (var@9) -> ⊥ : &'_ mut (u32) ; - Some (var@10) -> &mut@3 (⌊mut@4⌋) ; - abs@0{parents={}}{regions={0}} { - &mut@2 ((&mut@0 (0: u32), 1: u32)), - ⌊mut@5, (proj_loans (s@2 : &r@0 mut (u32)), proj_loans (s@3 : u32))⌋ - } -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⊥ : &'_ mut (u32) ; - Some (p) -> ⌊mut@1⌋ ; - Some (var@4) -> ⊥ : &'_ mut (u32) ; - Some (pp0) -> &mut@1 (⌊mut@2⌋) ; - Some (pp1) -> &mut@5 ((&mut@4 (2: u32), s@3 : u32)) ; - Some (var@7) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; - Some (y) -> ⌊mut@3⌋ ; - Some (var@9) -> ⊥ : &'_ mut (u32) ; - Some (var@10) -> &mut@3 (⌊mut@4⌋) ; - abs@0{parents={}}{regions={0}} { - &mut@2 ((&mut@0 (0: u32), 1: u32)), - ⌊mut@5, (proj_loans (s@2 : &r@0 mut (u32)), proj_loans (s@3 : u32))⌋ - } -} - - -- op: -3: u32 - -[Debug] -**About to evaluate statement**: [ - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⊥ : &'_ mut (u32) ; - Some (p) -> ⌊mut@1⌋ ; - Some (var@4) -> ⊥ : &'_ mut (u32) ; - Some (pp0) -> &mut@1 (⌊mut@2⌋) ; - Some (pp1) -> &mut@5 ((&mut@4 (2: u32), 3: u32)) ; - Some (var@7) -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; - Some (y) -> ⌊mut@3⌋ ; - Some (var@9) -> ⊥ : &'_ mut (u32) ; - Some (var@10) -> &mut@3 (⌊mut@4⌋) ; - abs@0{parents={}}{regions={0}} { - &mut@2 ((&mut@0 (0: u32), 1: u32)), - ⌊mut@5, (proj_loans (s@2 : &r@0 mut (u32)), proj_loans (s@3 : u32))⌋ - } -} - - - -[Debug] test_function_symbolic: id_mut_mut_pair -[Debug] -**About to evaluate statement**: [ - var@2 := &mut *(x); - var@0 := &mut *(var@2); - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - abs@0{parents={}}{regions={0}} { - proj_loans (s@0 : &r@0 mut (&r@0 mut ((&r@0 mut (T), u32)))) - } - Some (var@0) -> ⊥ : &'_ mut (&'_ mut ((&'_ mut (T), u32))) ; - Some (x) -> s@0 : &r@0 mut (&r@0 mut ((&r@0 mut (T), u32))) ; - Some (var@2) -> ⊥ : &'_ mut (&'_ mut ((&'_ mut (T), u32))) ; -} - - - -[Debug] -**About to evaluate statement**: [ - var@2 := &mut *(x) -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - abs@0{parents={}}{regions={0}} { - proj_loans (s@0 : &r@0 mut (&r@0 mut ((&r@0 mut (T), u32)))) - } - Some (var@0) -> ⊥ : &'_ mut (&'_ mut ((&'_ mut (T), u32))) ; - Some (x) -> s@0 : &r@0 mut (&r@0 mut ((&r@0 mut (T), u32))) ; - Some (var@2) -> ⊥ : &'_ mut (&'_ mut ((&'_ mut (T), u32))) ; -} - - - -[Debug] expand_symbolic_value: s@0 : &r@0 mut (&r@0 mut ((&r@0 mut (T), u32))) - -- original context: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - abs@0{parents={}}{regions={0}} { - proj_loans (s@0 : &r@0 mut (&r@0 mut ((&r@0 mut (T), u32)))) - } - Some (var@0) -> ⊥ : &'_ mut (&'_ mut ((&'_ mut (T), u32))) ; - Some (x) -> s@0 : &r@0 mut (&r@0 mut ((&r@0 mut (T), u32))) ; - Some (var@2) -> ⊥ : &'_ mut (&'_ mut ((&'_ mut (T), u32))) ; -} - - -- new context: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - abs@0{parents={}}{regions={0}} { - ⌊mut@0, proj_loans (s@1 : &r@0 mut ((&r@0 mut (T), u32)))⌋ - } - Some (var@0) -> ⊥ : &'_ mut (&'_ mut ((&'_ mut (T), u32))) ; - Some (x) -> &mut@0 (s@1 : &r@0 mut ((&r@0 mut (T), u32))) ; - Some (var@2) -> ⊥ : &'_ mut (&'_ mut ((&'_ mut (T), u32))) ; -} - - -[Debug] -**About to evaluate statement**: [ - var@0 := &mut *(var@2); - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - abs@0{parents={}}{regions={0}} { - ⌊mut@0, proj_loans (s@1 : &r@0 mut ((&r@0 mut (T), u32)))⌋ - } - Some (var@0) -> ⊥ : &'_ mut (&'_ mut ((&'_ mut (T), u32))) ; - Some (x) -> &mut@0 (⌊mut@1⌋) ; - Some (var@2) -> &mut@1 (s@1 : &r@0 mut ((&r@0 mut (T), u32))) ; -} - - - -[Debug] -**About to evaluate statement**: [ - var@0 := &mut *(var@2) -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - abs@0{parents={}}{regions={0}} { - ⌊mut@0, proj_loans (s@1 : &r@0 mut ((&r@0 mut (T), u32)))⌋ - } - Some (var@0) -> ⊥ : &'_ mut (&'_ mut ((&'_ mut (T), u32))) ; - Some (x) -> &mut@0 (⌊mut@1⌋) ; - Some (var@2) -> &mut@1 (s@1 : &r@0 mut ((&r@0 mut (T), u32))) ; -} - - - -[Debug] -**About to evaluate statement**: [ - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - abs@0{parents={}}{regions={0}} { - ⌊mut@0, proj_loans (s@1 : &r@0 mut ((&r@0 mut (T), u32)))⌋ - } - Some (var@0) -> &mut@2 (s@1 : &r@0 mut ((&r@0 mut (T), u32))) ; - Some (x) -> &mut@0 (⌊mut@1⌋) ; - Some (var@2) -> &mut@1 (⌊mut@2⌋) ; -} - - - -[Debug] test_function_symbolic: id_mut_mut_mut_same -[Debug] -**About to evaluate statement**: [ - var@2 := &mut *(x); - var@0 := &mut *(var@2); - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - abs@0{parents={}}{regions={0}} { - proj_loans (s@0 : &r@0 mut (&r@0 mut (&r@0 mut (u32)))) - } - Some (var@0) -> ⊥ : &'_ mut (&'_ mut (&'_ mut (u32))) ; - Some (x) -> s@0 : &r@0 mut (&r@0 mut (&r@0 mut (u32))) ; - Some (var@2) -> ⊥ : &'_ mut (&'_ mut (&'_ mut (u32))) ; -} - - - -[Debug] -**About to evaluate statement**: [ - var@2 := &mut *(x) -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - abs@0{parents={}}{regions={0}} { - proj_loans (s@0 : &r@0 mut (&r@0 mut (&r@0 mut (u32)))) - } - Some (var@0) -> ⊥ : &'_ mut (&'_ mut (&'_ mut (u32))) ; - Some (x) -> s@0 : &r@0 mut (&r@0 mut (&r@0 mut (u32))) ; - Some (var@2) -> ⊥ : &'_ mut (&'_ mut (&'_ mut (u32))) ; -} - - - -[Debug] expand_symbolic_value: s@0 : &r@0 mut (&r@0 mut (&r@0 mut (u32))) - -- original context: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - abs@0{parents={}}{regions={0}} { - proj_loans (s@0 : &r@0 mut (&r@0 mut (&r@0 mut (u32)))) - } - Some (var@0) -> ⊥ : &'_ mut (&'_ mut (&'_ mut (u32))) ; - Some (x) -> s@0 : &r@0 mut (&r@0 mut (&r@0 mut (u32))) ; - Some (var@2) -> ⊥ : &'_ mut (&'_ mut (&'_ mut (u32))) ; -} - - -- new context: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - abs@0{parents={}}{regions={0}} { - ⌊mut@0, proj_loans (s@1 : &r@0 mut (&r@0 mut (u32)))⌋ - } - Some (var@0) -> ⊥ : &'_ mut (&'_ mut (&'_ mut (u32))) ; - Some (x) -> &mut@0 (s@1 : &r@0 mut (&r@0 mut (u32))) ; - Some (var@2) -> ⊥ : &'_ mut (&'_ mut (&'_ mut (u32))) ; -} - - -[Debug] -**About to evaluate statement**: [ - var@0 := &mut *(var@2); - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - abs@0{parents={}}{regions={0}} { - ⌊mut@0, proj_loans (s@1 : &r@0 mut (&r@0 mut (u32)))⌋ - } - Some (var@0) -> ⊥ : &'_ mut (&'_ mut (&'_ mut (u32))) ; - Some (x) -> &mut@0 (⌊mut@1⌋) ; - Some (var@2) -> &mut@1 (s@1 : &r@0 mut (&r@0 mut (u32))) ; -} - - - -[Debug] -**About to evaluate statement**: [ - var@0 := &mut *(var@2) -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - abs@0{parents={}}{regions={0}} { - ⌊mut@0, proj_loans (s@1 : &r@0 mut (&r@0 mut (u32)))⌋ - } - Some (var@0) -> ⊥ : &'_ mut (&'_ mut (&'_ mut (u32))) ; - Some (x) -> &mut@0 (⌊mut@1⌋) ; - Some (var@2) -> &mut@1 (s@1 : &r@0 mut (&r@0 mut (u32))) ; -} - - - -[Debug] -**About to evaluate statement**: [ - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - abs@0{parents={}}{regions={0}} { - ⌊mut@0, proj_loans (s@1 : &r@0 mut (&r@0 mut (u32)))⌋ - } - Some (var@0) -> &mut@2 (s@1 : &r@0 mut (&r@0 mut (u32))) ; - Some (x) -> &mut@0 (⌊mut@1⌋) ; - Some (var@2) -> &mut@1 (⌊mut@2⌋) ; -} - - - -[Debug] test_function_symbolic: id_borrow1 -[Debug] -**About to evaluate statement**: [ - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - abs@0{parents={}}{regions={0}} { - proj_loans (s@0 : &r@0 mut (&r@1 (u32))), - proj_loans (s@1 : &r@0 (&r@0 mut (u32))) - } - abs@1{parents={0}}{regions={1}} { - proj_loans (s@0 : &r@0 mut (&r@1 (u32))), - proj_loans (s@1 : &r@0 (&r@0 mut (u32))) - } - Some (var@0) -> ⊥ : () ; - Some (_x) -> s@0 : &r@0 mut (&r@1 (u32)) ; - Some (_y) -> s@1 : &r@0 (&r@0 mut (u32)) ; -} - - - -[Debug] test_function_symbolic: test_static -[Debug] -**About to evaluate statement**: [ - var@0 := copy x; - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : &'_ (u32) ; - Some (x) -> s@0 : &'static (u32) ; -} - - - -[Debug] -**About to evaluate statement**: [ - var@0 := copy x -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : &'_ (u32) ; - Some (x) -> s@0 : &'static (u32) ; -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : &'_ (u32) ; - Some (x) -> s@0 : &'static (u32) ; -} - - -- op: -copy x - -[Debug] -**About to evaluate statement**: [ - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> s@0 : &'static (u32) ; - Some (x) -> s@0 : &'static (u32) ; -} - - - -[Debug] test_function_symbolic: test_char -[Debug] -**About to evaluate statement**: [ - var@0 := a; - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : char ; -} - - - -[Debug] -**About to evaluate statement**: [ - var@0 := a -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : char ; -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : char ; -} - - -- op: -a - -[Debug] -**About to evaluate statement**: [ - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> a ; -} - - - -[Debug] test_function_symbolic: test_loops -[Debug] -**About to evaluate statement**: [ - x := move test_loop1(2: u32); - var@4 := copy x; - var@3 := move var@4 == 2: u32; - var@2 := ¬ move var@3; - assert(¬move var@2); - x := move test_loop2(2: u32); - var@8 := copy x; - var@7 := move var@8 == 1: u32; - var@6 := ¬ move var@7; - assert(¬move var@6); - x := move test_loop3(2: u32); - var@12 := copy x; - var@11 := move var@12 == 3: u32; - var@10 := ¬ move var@11; - assert(¬move var@10); - x := move test_loop4(20: u32); - var@16 := copy x; - var@15 := move var@16 == 1: u32; - var@14 := ¬ move var@15; - assert(¬move var@14); - x := move test_loop5(2: u32); - var@20 := copy x; - var@19 := move var@20 == 2: u32; - var@18 := ¬ move var@19; - assert(¬move var@18); - x := move test_loop6(2: u32); - var@24 := copy x; - var@23 := move var@24 == 2: u32; - var@22 := ¬ move var@23; - assert(¬move var@22); - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⊥ : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - - -[Debug] -**About to evaluate statement**: [ - x := move test_loop1(2: u32) -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⊥ : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⊥ : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - -- op: -2: u32 - -[Debug] -**About to evaluate statement**: [ - var@4 := copy x; - var@3 := move var@4 == 2: u32; - var@2 := ¬ move var@3; - assert(¬move var@2); - x := move test_loop2(2: u32); - var@8 := copy x; - var@7 := move var@8 == 1: u32; - var@6 := ¬ move var@7; - assert(¬move var@6); - x := move test_loop3(2: u32); - var@12 := copy x; - var@11 := move var@12 == 3: u32; - var@10 := ¬ move var@11; - assert(¬move var@10); - x := move test_loop4(20: u32); - var@16 := copy x; - var@15 := move var@16 == 1: u32; - var@14 := ¬ move var@15; - assert(¬move var@14); - x := move test_loop5(2: u32); - var@20 := copy x; - var@19 := move var@20 == 2: u32; - var@18 := ¬ move var@19; - assert(¬move var@18); - x := move test_loop6(2: u32); - var@24 := copy x; - var@23 := move var@24 == 2: u32; - var@22 := ¬ move var@23; - assert(¬move var@22); - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - - -[Debug] -**About to evaluate statement**: [ - var@4 := copy x -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - -- op: -copy x - -[Debug] -**About to evaluate statement**: [ - var@3 := move var@4 == 2: u32; - var@2 := ¬ move var@3; - assert(¬move var@2); - x := move test_loop2(2: u32); - var@8 := copy x; - var@7 := move var@8 == 1: u32; - var@6 := ¬ move var@7; - assert(¬move var@6); - x := move test_loop3(2: u32); - var@12 := copy x; - var@11 := move var@12 == 3: u32; - var@10 := ¬ move var@11; - assert(¬move var@10); - x := move test_loop4(20: u32); - var@16 := copy x; - var@15 := move var@16 == 1: u32; - var@14 := ¬ move var@15; - assert(¬move var@14); - x := move test_loop5(2: u32); - var@20 := copy x; - var@19 := move var@20 == 2: u32; - var@18 := ¬ move var@19; - assert(¬move var@18); - x := move test_loop6(2: u32); - var@24 := copy x; - var@23 := move var@24 == 2: u32; - var@22 := ¬ move var@23; - assert(¬move var@22); - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> s@0 : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - - -[Debug] -**About to evaluate statement**: [ - var@3 := move var@4 == 2: u32 -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> s@0 : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> s@0 : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - -- op: -move var@4 - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - -- op: -2: u32 - -[Debug] -**About to evaluate statement**: [ - var@2 := ¬ move var@3; - assert(¬move var@2); - x := move test_loop2(2: u32); - var@8 := copy x; - var@7 := move var@8 == 1: u32; - var@6 := ¬ move var@7; - assert(¬move var@6); - x := move test_loop3(2: u32); - var@12 := copy x; - var@11 := move var@12 == 3: u32; - var@10 := ¬ move var@11; - assert(¬move var@10); - x := move test_loop4(20: u32); - var@16 := copy x; - var@15 := move var@16 == 1: u32; - var@14 := ¬ move var@15; - assert(¬move var@14); - x := move test_loop5(2: u32); - var@20 := copy x; - var@19 := move var@20 == 2: u32; - var@18 := ¬ move var@19; - assert(¬move var@18); - x := move test_loop6(2: u32); - var@24 := copy x; - var@23 := move var@24 == 2: u32; - var@22 := ¬ move var@23; - assert(¬move var@22); - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> s@1 : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - - -[Debug] -**About to evaluate statement**: [ - var@2 := ¬ move var@3 -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> s@1 : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> s@1 : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - -- op: -move var@3 - -[Debug] -**About to evaluate statement**: [ - assert(¬move var@2); - x := move test_loop2(2: u32); - var@8 := copy x; - var@7 := move var@8 == 1: u32; - var@6 := ¬ move var@7; - assert(¬move var@6); - x := move test_loop3(2: u32); - var@12 := copy x; - var@11 := move var@12 == 3: u32; - var@10 := ¬ move var@11; - assert(¬move var@10); - x := move test_loop4(20: u32); - var@16 := copy x; - var@15 := move var@16 == 1: u32; - var@14 := ¬ move var@15; - assert(¬move var@14); - x := move test_loop5(2: u32); - var@20 := copy x; - var@19 := move var@20 == 2: u32; - var@18 := ¬ move var@19; - assert(¬move var@18); - x := move test_loop6(2: u32); - var@24 := copy x; - var@23 := move var@24 == 2: u32; - var@22 := ¬ move var@23; - assert(¬move var@22); - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> s@2 : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - - -[Debug] -**About to evaluate statement**: [ - assert(¬move var@2) -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> s@2 : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> true ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - -- op: -move var@2 - -[Debug] -**About to evaluate statement**: [ - x := move test_loop2(2: u32); - var@8 := copy x; - var@7 := move var@8 == 1: u32; - var@6 := ¬ move var@7; - assert(¬move var@6); - x := move test_loop3(2: u32); - var@12 := copy x; - var@11 := move var@12 == 3: u32; - var@10 := ¬ move var@11; - assert(¬move var@10); - x := move test_loop4(20: u32); - var@16 := copy x; - var@15 := move var@16 == 1: u32; - var@14 := ¬ move var@15; - assert(¬move var@14); - x := move test_loop5(2: u32); - var@20 := copy x; - var@19 := move var@20 == 2: u32; - var@18 := ¬ move var@19; - assert(¬move var@18); - x := move test_loop6(2: u32); - var@24 := copy x; - var@23 := move var@24 == 2: u32; - var@22 := ¬ move var@23; - assert(¬move var@22); - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - - -[Debug] -**About to evaluate statement**: [ - x := move test_loop2(2: u32) -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - -- op: -2: u32 - -[Debug] -**About to evaluate statement**: [ - var@8 := copy x; - var@7 := move var@8 == 1: u32; - var@6 := ¬ move var@7; - assert(¬move var@6); - x := move test_loop3(2: u32); - var@12 := copy x; - var@11 := move var@12 == 3: u32; - var@10 := ¬ move var@11; - assert(¬move var@10); - x := move test_loop4(20: u32); - var@16 := copy x; - var@15 := move var@16 == 1: u32; - var@14 := ¬ move var@15; - assert(¬move var@14); - x := move test_loop5(2: u32); - var@20 := copy x; - var@19 := move var@20 == 2: u32; - var@18 := ¬ move var@19; - assert(¬move var@18); - x := move test_loop6(2: u32); - var@24 := copy x; - var@23 := move var@24 == 2: u32; - var@22 := ¬ move var@23; - assert(¬move var@22); - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> s@3 : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - - -[Debug] -**About to evaluate statement**: [ - var@8 := copy x -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> s@3 : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> s@3 : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - -- op: -copy x - -[Debug] -**About to evaluate statement**: [ - var@7 := move var@8 == 1: u32; - var@6 := ¬ move var@7; - assert(¬move var@6); - x := move test_loop3(2: u32); - var@12 := copy x; - var@11 := move var@12 == 3: u32; - var@10 := ¬ move var@11; - assert(¬move var@10); - x := move test_loop4(20: u32); - var@16 := copy x; - var@15 := move var@16 == 1: u32; - var@14 := ¬ move var@15; - assert(¬move var@14); - x := move test_loop5(2: u32); - var@20 := copy x; - var@19 := move var@20 == 2: u32; - var@18 := ¬ move var@19; - assert(¬move var@18); - x := move test_loop6(2: u32); - var@24 := copy x; - var@23 := move var@24 == 2: u32; - var@22 := ¬ move var@23; - assert(¬move var@22); - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> s@3 : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> s@3 : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - - -[Debug] -**About to evaluate statement**: [ - var@7 := move var@8 == 1: u32 -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> s@3 : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> s@3 : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> s@3 : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> s@3 : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - -- op: -move var@8 - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> s@3 : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - -- op: -1: u32 - -[Debug] -**About to evaluate statement**: [ - var@6 := ¬ move var@7; - assert(¬move var@6); - x := move test_loop3(2: u32); - var@12 := copy x; - var@11 := move var@12 == 3: u32; - var@10 := ¬ move var@11; - assert(¬move var@10); - x := move test_loop4(20: u32); - var@16 := copy x; - var@15 := move var@16 == 1: u32; - var@14 := ¬ move var@15; - assert(¬move var@14); - x := move test_loop5(2: u32); - var@20 := copy x; - var@19 := move var@20 == 2: u32; - var@18 := ¬ move var@19; - assert(¬move var@18); - x := move test_loop6(2: u32); - var@24 := copy x; - var@23 := move var@24 == 2: u32; - var@22 := ¬ move var@23; - assert(¬move var@22); - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> s@3 : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> s@4 : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - - -[Debug] -**About to evaluate statement**: [ - var@6 := ¬ move var@7 -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> s@3 : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> s@4 : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> s@3 : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> s@4 : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - -- op: -move var@7 - -[Debug] -**About to evaluate statement**: [ - assert(¬move var@6); - x := move test_loop3(2: u32); - var@12 := copy x; - var@11 := move var@12 == 3: u32; - var@10 := ¬ move var@11; - assert(¬move var@10); - x := move test_loop4(20: u32); - var@16 := copy x; - var@15 := move var@16 == 1: u32; - var@14 := ¬ move var@15; - assert(¬move var@14); - x := move test_loop5(2: u32); - var@20 := copy x; - var@19 := move var@20 == 2: u32; - var@18 := ¬ move var@19; - assert(¬move var@18); - x := move test_loop6(2: u32); - var@24 := copy x; - var@23 := move var@24 == 2: u32; - var@22 := ¬ move var@23; - assert(¬move var@22); - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> s@3 : u32 ; - Some (var@6) -> s@5 : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - - -[Debug] -**About to evaluate statement**: [ - assert(¬move var@6) -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> s@3 : u32 ; - Some (var@6) -> s@5 : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> s@3 : u32 ; - Some (var@6) -> true ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - -- op: -move var@6 - -[Debug] -**About to evaluate statement**: [ - x := move test_loop3(2: u32); - var@12 := copy x; - var@11 := move var@12 == 3: u32; - var@10 := ¬ move var@11; - assert(¬move var@10); - x := move test_loop4(20: u32); - var@16 := copy x; - var@15 := move var@16 == 1: u32; - var@14 := ¬ move var@15; - assert(¬move var@14); - x := move test_loop5(2: u32); - var@20 := copy x; - var@19 := move var@20 == 2: u32; - var@18 := ¬ move var@19; - assert(¬move var@18); - x := move test_loop6(2: u32); - var@24 := copy x; - var@23 := move var@24 == 2: u32; - var@22 := ¬ move var@23; - assert(¬move var@22); - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> s@3 : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - - -[Debug] -**About to evaluate statement**: [ - x := move test_loop3(2: u32) -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> s@3 : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> s@3 : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - -- op: -2: u32 - -[Debug] -**About to evaluate statement**: [ - var@12 := copy x; - var@11 := move var@12 == 3: u32; - var@10 := ¬ move var@11; - assert(¬move var@10); - x := move test_loop4(20: u32); - var@16 := copy x; - var@15 := move var@16 == 1: u32; - var@14 := ¬ move var@15; - assert(¬move var@14); - x := move test_loop5(2: u32); - var@20 := copy x; - var@19 := move var@20 == 2: u32; - var@18 := ¬ move var@19; - assert(¬move var@18); - x := move test_loop6(2: u32); - var@24 := copy x; - var@23 := move var@24 == 2: u32; - var@22 := ¬ move var@23; - assert(¬move var@22); - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> s@3 : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> s@6 : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - - -[Debug] -**About to evaluate statement**: [ - var@12 := copy x -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> s@3 : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> s@6 : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> s@3 : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> s@6 : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - -- op: -copy x - -[Debug] -**About to evaluate statement**: [ - var@11 := move var@12 == 3: u32; - var@10 := ¬ move var@11; - assert(¬move var@10); - x := move test_loop4(20: u32); - var@16 := copy x; - var@15 := move var@16 == 1: u32; - var@14 := ¬ move var@15; - assert(¬move var@14); - x := move test_loop5(2: u32); - var@20 := copy x; - var@19 := move var@20 == 2: u32; - var@18 := ¬ move var@19; - assert(¬move var@18); - x := move test_loop6(2: u32); - var@24 := copy x; - var@23 := move var@24 == 2: u32; - var@22 := ¬ move var@23; - assert(¬move var@22); - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> s@3 : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> s@6 : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> s@6 : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - - -[Debug] -**About to evaluate statement**: [ - var@11 := move var@12 == 3: u32 -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> s@3 : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> s@6 : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> s@6 : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> s@3 : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> s@6 : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> s@6 : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - -- op: -move var@12 - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> s@3 : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> s@6 : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - -- op: -3: u32 - -[Debug] -**About to evaluate statement**: [ - var@10 := ¬ move var@11; - assert(¬move var@10); - x := move test_loop4(20: u32); - var@16 := copy x; - var@15 := move var@16 == 1: u32; - var@14 := ¬ move var@15; - assert(¬move var@14); - x := move test_loop5(2: u32); - var@20 := copy x; - var@19 := move var@20 == 2: u32; - var@18 := ¬ move var@19; - assert(¬move var@18); - x := move test_loop6(2: u32); - var@24 := copy x; - var@23 := move var@24 == 2: u32; - var@22 := ¬ move var@23; - assert(¬move var@22); - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> s@3 : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> s@6 : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> s@7 : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - - -[Debug] -**About to evaluate statement**: [ - var@10 := ¬ move var@11 -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> s@3 : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> s@6 : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> s@7 : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> s@3 : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> s@6 : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> s@7 : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - -- op: -move var@11 - -[Debug] -**About to evaluate statement**: [ - assert(¬move var@10); - x := move test_loop4(20: u32); - var@16 := copy x; - var@15 := move var@16 == 1: u32; - var@14 := ¬ move var@15; - assert(¬move var@14); - x := move test_loop5(2: u32); - var@20 := copy x; - var@19 := move var@20 == 2: u32; - var@18 := ¬ move var@19; - assert(¬move var@18); - x := move test_loop6(2: u32); - var@24 := copy x; - var@23 := move var@24 == 2: u32; - var@22 := ¬ move var@23; - assert(¬move var@22); - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> s@3 : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> s@6 : u32 ; - Some (var@10) -> s@8 : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - - -[Debug] -**About to evaluate statement**: [ - assert(¬move var@10) -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> s@3 : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> s@6 : u32 ; - Some (var@10) -> s@8 : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> s@3 : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> s@6 : u32 ; - Some (var@10) -> true ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - -- op: -move var@10 - -[Debug] -**About to evaluate statement**: [ - x := move test_loop4(20: u32); - var@16 := copy x; - var@15 := move var@16 == 1: u32; - var@14 := ¬ move var@15; - assert(¬move var@14); - x := move test_loop5(2: u32); - var@20 := copy x; - var@19 := move var@20 == 2: u32; - var@18 := ¬ move var@19; - assert(¬move var@18); - x := move test_loop6(2: u32); - var@24 := copy x; - var@23 := move var@24 == 2: u32; - var@22 := ¬ move var@23; - assert(¬move var@22); - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> s@3 : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> s@6 : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - - -[Debug] -**About to evaluate statement**: [ - x := move test_loop4(20: u32) -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> s@3 : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> s@6 : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> s@3 : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> s@6 : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - -- op: -20: u32 - -[Debug] -**About to evaluate statement**: [ - var@16 := copy x; - var@15 := move var@16 == 1: u32; - var@14 := ¬ move var@15; - assert(¬move var@14); - x := move test_loop5(2: u32); - var@20 := copy x; - var@19 := move var@20 == 2: u32; - var@18 := ¬ move var@19; - assert(¬move var@18); - x := move test_loop6(2: u32); - var@24 := copy x; - var@23 := move var@24 == 2: u32; - var@22 := ¬ move var@23; - assert(¬move var@22); - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> s@3 : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> s@6 : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> s@9 : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - - -[Debug] -**About to evaluate statement**: [ - var@16 := copy x -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> s@3 : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> s@6 : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> s@9 : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> s@3 : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> s@6 : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> s@9 : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - -- op: -copy x - -[Debug] -**About to evaluate statement**: [ - var@15 := move var@16 == 1: u32; - var@14 := ¬ move var@15; - assert(¬move var@14); - x := move test_loop5(2: u32); - var@20 := copy x; - var@19 := move var@20 == 2: u32; - var@18 := ¬ move var@19; - assert(¬move var@18); - x := move test_loop6(2: u32); - var@24 := copy x; - var@23 := move var@24 == 2: u32; - var@22 := ¬ move var@23; - assert(¬move var@22); - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> s@3 : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> s@6 : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> s@9 : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> s@9 : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - - -[Debug] -**About to evaluate statement**: [ - var@15 := move var@16 == 1: u32 -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> s@3 : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> s@6 : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> s@9 : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> s@9 : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> s@3 : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> s@6 : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> s@9 : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> s@9 : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - -- op: -move var@16 - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> s@3 : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> s@6 : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> s@9 : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - -- op: -1: u32 - -[Debug] -**About to evaluate statement**: [ - var@14 := ¬ move var@15; - assert(¬move var@14); - x := move test_loop5(2: u32); - var@20 := copy x; - var@19 := move var@20 == 2: u32; - var@18 := ¬ move var@19; - assert(¬move var@18); - x := move test_loop6(2: u32); - var@24 := copy x; - var@23 := move var@24 == 2: u32; - var@22 := ¬ move var@23; - assert(¬move var@22); - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> s@3 : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> s@6 : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> s@9 : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> s@10 : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - - -[Debug] -**About to evaluate statement**: [ - var@14 := ¬ move var@15 -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> s@3 : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> s@6 : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> s@9 : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> s@10 : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> s@3 : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> s@6 : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> s@9 : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> s@10 : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - -- op: -move var@15 - -[Debug] -**About to evaluate statement**: [ - assert(¬move var@14); - x := move test_loop5(2: u32); - var@20 := copy x; - var@19 := move var@20 == 2: u32; - var@18 := ¬ move var@19; - assert(¬move var@18); - x := move test_loop6(2: u32); - var@24 := copy x; - var@23 := move var@24 == 2: u32; - var@22 := ¬ move var@23; - assert(¬move var@22); - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> s@3 : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> s@6 : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> s@9 : u32 ; - Some (var@14) -> s@11 : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - - -[Debug] -**About to evaluate statement**: [ - assert(¬move var@14) -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> s@3 : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> s@6 : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> s@9 : u32 ; - Some (var@14) -> s@11 : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> s@3 : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> s@6 : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> s@9 : u32 ; - Some (var@14) -> true ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - -- op: -move var@14 - -[Debug] -**About to evaluate statement**: [ - x := move test_loop5(2: u32); - var@20 := copy x; - var@19 := move var@20 == 2: u32; - var@18 := ¬ move var@19; - assert(¬move var@18); - x := move test_loop6(2: u32); - var@24 := copy x; - var@23 := move var@24 == 2: u32; - var@22 := ¬ move var@23; - assert(¬move var@22); - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> s@3 : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> s@6 : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> s@9 : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - - -[Debug] -**About to evaluate statement**: [ - x := move test_loop5(2: u32) -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> s@3 : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> s@6 : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> s@9 : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> s@3 : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> s@6 : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> s@9 : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - -- op: -2: u32 - -[Debug] -**About to evaluate statement**: [ - var@20 := copy x; - var@19 := move var@20 == 2: u32; - var@18 := ¬ move var@19; - assert(¬move var@18); - x := move test_loop6(2: u32); - var@24 := copy x; - var@23 := move var@24 == 2: u32; - var@22 := ¬ move var@23; - assert(¬move var@22); - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> s@3 : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> s@6 : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> s@9 : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> s@12 : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - - -[Debug] -**About to evaluate statement**: [ - var@20 := copy x -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> s@3 : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> s@6 : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> s@9 : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> s@12 : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> s@3 : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> s@6 : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> s@9 : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> s@12 : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - -- op: -copy x - -[Debug] -**About to evaluate statement**: [ - var@19 := move var@20 == 2: u32; - var@18 := ¬ move var@19; - assert(¬move var@18); - x := move test_loop6(2: u32); - var@24 := copy x; - var@23 := move var@24 == 2: u32; - var@22 := ¬ move var@23; - assert(¬move var@22); - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> s@3 : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> s@6 : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> s@9 : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> s@12 : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> s@12 : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - - -[Debug] -**About to evaluate statement**: [ - var@19 := move var@20 == 2: u32 -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> s@3 : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> s@6 : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> s@9 : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> s@12 : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> s@12 : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> s@3 : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> s@6 : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> s@9 : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> s@12 : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> s@12 : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - -- op: -move var@20 - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> s@3 : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> s@6 : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> s@9 : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> s@12 : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - -- op: -2: u32 - -[Debug] -**About to evaluate statement**: [ - var@18 := ¬ move var@19; - assert(¬move var@18); - x := move test_loop6(2: u32); - var@24 := copy x; - var@23 := move var@24 == 2: u32; - var@22 := ¬ move var@23; - assert(¬move var@22); - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> s@3 : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> s@6 : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> s@9 : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> s@12 : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> s@13 : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - - -[Debug] -**About to evaluate statement**: [ - var@18 := ¬ move var@19 -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> s@3 : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> s@6 : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> s@9 : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> s@12 : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> s@13 : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> s@3 : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> s@6 : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> s@9 : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> s@12 : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> s@13 : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - -- op: -move var@19 - -[Debug] -**About to evaluate statement**: [ - assert(¬move var@18); - x := move test_loop6(2: u32); - var@24 := copy x; - var@23 := move var@24 == 2: u32; - var@22 := ¬ move var@23; - assert(¬move var@22); - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> s@3 : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> s@6 : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> s@9 : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> s@12 : u32 ; - Some (var@18) -> s@14 : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - - -[Debug] -**About to evaluate statement**: [ - assert(¬move var@18) -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> s@3 : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> s@6 : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> s@9 : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> s@12 : u32 ; - Some (var@18) -> s@14 : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> s@3 : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> s@6 : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> s@9 : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> s@12 : u32 ; - Some (var@18) -> true ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - -- op: -move var@18 - -[Debug] -**About to evaluate statement**: [ - x := move test_loop6(2: u32); - var@24 := copy x; - var@23 := move var@24 == 2: u32; - var@22 := ¬ move var@23; - assert(¬move var@22); - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> s@3 : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> s@6 : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> s@9 : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> s@12 : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - - -[Debug] -**About to evaluate statement**: [ - x := move test_loop6(2: u32) -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> s@3 : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> s@6 : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> s@9 : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> s@12 : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> s@3 : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> s@6 : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> s@9 : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> s@12 : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> ⊥ : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - -- op: -2: u32 - -[Debug] -**About to evaluate statement**: [ - var@24 := copy x; - var@23 := move var@24 == 2: u32; - var@22 := ¬ move var@23; - assert(¬move var@22); - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> s@3 : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> s@6 : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> s@9 : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> s@12 : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> s@15 : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - - -[Debug] -**About to evaluate statement**: [ - var@24 := copy x -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> s@3 : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> s@6 : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> s@9 : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> s@12 : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> s@15 : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> s@3 : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> s@6 : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> s@9 : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> s@12 : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> s@15 : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - -- op: -copy x - -[Debug] -**About to evaluate statement**: [ - var@23 := move var@24 == 2: u32; - var@22 := ¬ move var@23; - assert(¬move var@22); - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> s@3 : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> s@6 : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> s@9 : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> s@12 : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> s@15 : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> s@15 : u32 ; -} - - - -[Debug] -**About to evaluate statement**: [ - var@23 := move var@24 == 2: u32 -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> s@3 : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> s@6 : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> s@9 : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> s@12 : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> s@15 : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> s@15 : u32 ; -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> s@3 : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> s@6 : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> s@9 : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> s@12 : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> s@15 : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> s@15 : u32 ; -} - - -- op: -move var@24 - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> s@3 : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> s@6 : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> s@9 : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> s@12 : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> s@15 : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - -- op: -2: u32 - -[Debug] -**About to evaluate statement**: [ - var@22 := ¬ move var@23; - assert(¬move var@22); - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> s@3 : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> s@6 : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> s@9 : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> s@12 : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> s@15 : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> s@16 : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - - -[Debug] -**About to evaluate statement**: [ - var@22 := ¬ move var@23 -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> s@3 : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> s@6 : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> s@9 : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> s@12 : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> s@15 : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> s@16 : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> s@3 : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> s@6 : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> s@9 : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> s@12 : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> s@15 : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> s@16 : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - -- op: -move var@23 - -[Debug] -**About to evaluate statement**: [ - assert(¬move var@22); - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> s@3 : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> s@6 : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> s@9 : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> s@12 : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> s@15 : u32 ; - Some (var@22) -> s@17 : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - - -[Debug] -**About to evaluate statement**: [ - assert(¬move var@22) -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> s@3 : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> s@6 : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> s@9 : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> s@12 : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> s@15 : u32 ; - Some (var@22) -> s@17 : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> s@3 : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> s@6 : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> s@9 : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> s@12 : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> s@15 : u32 ; - Some (var@22) -> true ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - -- op: -move var@22 - -[Debug] -**About to evaluate statement**: [ - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@0 : u32 ; - Some (var@2) -> ⊥ : bool ; - Some (var@3) -> ⊥ : bool ; - Some (var@4) -> ⊥ : u32 ; - Some (x) -> s@3 : u32 ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : u32 ; - Some (x) -> s@6 : u32 ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : u32 ; - Some (x) -> s@9 : u32 ; - Some (var@14) -> ⊥ : bool ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : u32 ; - Some (x) -> s@12 : u32 ; - Some (var@18) -> ⊥ : bool ; - Some (var@19) -> ⊥ : bool ; - Some (var@20) -> ⊥ : u32 ; - Some (x) -> s@15 : u32 ; - Some (var@22) -> ⊥ : bool ; - Some (var@23) -> ⊥ : bool ; - Some (var@24) -> ⊥ : u32 ; -} - - - -[Debug] test_function_symbolic: id_mut_mut_test1 -[Debug] -**About to evaluate statement**: [ - x := 0: i32; - px := &mut x; - ppx := &mut px; - var@5 := &two-phase *(ppx); - ppy := move id_mut_mut(move var@5); - *(*(ppy)) := 1: i32; - var@8 := copy *(px); - var@7 := move var@8 == 1: i32; - var@6 := ¬ move var@7; - assert(¬move var@6); - var@11 := copy x; - var@10 := move var@11 == 1: i32; - var@9 := ¬ move var@10; - assert(¬move var@9); - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⊥ : i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; -} - - - -[Debug] -**About to evaluate statement**: [ - x := 0: i32 -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⊥ : i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⊥ : i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; -} - - -- op: -0: i32 - -[Debug] -**About to evaluate statement**: [ - px := &mut x; - ppx := &mut px; - var@5 := &two-phase *(ppx); - ppy := move id_mut_mut(move var@5); - *(*(ppy)) := 1: i32; - var@8 := copy *(px); - var@7 := move var@8 == 1: i32; - var@6 := ¬ move var@7; - assert(¬move var@6); - var@11 := copy x; - var@10 := move var@11 == 1: i32; - var@9 := ¬ move var@10; - assert(¬move var@9); - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; -} - - - -[Debug] -**About to evaluate statement**: [ - px := &mut x -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; -} - - - -[Debug] -**About to evaluate statement**: [ - ppx := &mut px; - var@5 := &two-phase *(ppx); - ppy := move id_mut_mut(move var@5); - *(*(ppy)) := 1: i32; - var@8 := copy *(px); - var@7 := move var@8 == 1: i32; - var@6 := ¬ move var@7; - assert(¬move var@6); - var@11 := copy x; - var@10 := move var@11 == 1: i32; - var@9 := ¬ move var@10; - assert(¬move var@9); - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@0 (0: i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; -} - - - -[Debug] -**About to evaluate statement**: [ - ppx := &mut px -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@0 (0: i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; -} - - - -[Debug] -**About to evaluate statement**: [ - var@5 := &two-phase *(ppx); - ppy := move id_mut_mut(move var@5); - *(*(ppy)) := 1: i32; - var@8 := copy *(px); - var@7 := move var@8 == 1: i32; - var@6 := ¬ move var@7; - assert(¬move var@6); - var@11 := copy x; - var@10 := move var@11 == 1: i32; - var@9 := ¬ move var@10; - assert(¬move var@9); - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (&mut@0 (0: i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; -} - - - -[Debug] -**About to evaluate statement**: [ - var@5 := &two-phase *(ppx) -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (&mut@0 (0: i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; -} - - - -[Debug] -**About to evaluate statement**: [ - ppy := move id_mut_mut(move var@5); - *(*(ppy)) := 1: i32; - var@8 := copy *(px); - var@7 := move var@8 == 1: i32; - var@6 := ¬ move var@7; - assert(¬move var@6); - var@11 := copy x; - var@10 := move var@11 == 1: i32; - var@9 := ¬ move var@10; - assert(¬move var@9); - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (@shared_loan({2}, &mut@0 (0: i32))) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⌊inactivated_mut@2⌋ ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; -} - - - -[Debug] -**About to evaluate statement**: [ - ppy := move id_mut_mut(move var@5) -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (@shared_loan({2}, &mut@0 (0: i32))) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⌊inactivated_mut@2⌋ ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; -} - - - -[Debug] activate_inactivated_mut_borrow: resulting value: -&mut@0 (0: i32) -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> &mut@2 (&mut@0 (0: i32)) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; -} - - -- op: -move var@5 - -[Debug] -**About to evaluate statement**: [ - *(*(ppy)) := 1: i32; - var@8 := copy *(px); - var@7 := move var@8 == 1: i32; - var@6 := ¬ move var@7; - assert(¬move var@6); - var@11 := copy x; - var@10 := move var@11 == 1: i32; - var@9 := ¬ move var@10; - assert(¬move var@9); - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> s@0 : &r@0 mut (&r@1 mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - &mut@2 (@ignored_mut_borrow(None, 0: i32)), - proj_loans (s@0 : &r@0 mut (&r@1 mut (i32))) - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - proj_loans (s@0 : &r@0 mut (&r@1 mut (i32))) - } -} - - - -[Debug] -**About to evaluate statement**: [ - *(*(ppy)) := 1: i32 -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> s@0 : &r@0 mut (&r@1 mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - &mut@2 (@ignored_mut_borrow(None, 0: i32)), - proj_loans (s@0 : &r@0 mut (&r@1 mut (i32))) - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - proj_loans (s@0 : &r@0 mut (&r@1 mut (i32))) - } -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> s@0 : &r@0 mut (&r@1 mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - &mut@2 (@ignored_mut_borrow(None, 0: i32)), - proj_loans (s@0 : &r@0 mut (&r@1 mut (i32))) - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - proj_loans (s@0 : &r@0 mut (&r@1 mut (i32))) - } -} - - -- op: -1: i32 - -[Debug] expand_symbolic_value: s@0 : &r@0 mut (&r@1 mut (i32)) - -- original context: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> s@0 : &r@0 mut (&r@1 mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - &mut@2 (@ignored_mut_borrow(None, 0: i32)), - proj_loans (s@0 : &r@0 mut (&r@1 mut (i32))) - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - proj_loans (s@0 : &r@0 mut (&r@1 mut (i32))) - } - None -> 1: i32 ; -} - - -- new context: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@3 (s@1 : &r@1 mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - &mut@2 (@ignored_mut_borrow(None, 0: i32)), - ⌊mut@3, proj_loans (s@1 : &r@1 mut (i32))⌋ - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - @ignored_mut_loan(3, proj_loans (s@1 : &r@1 mut (i32))) - } - None -> 1: i32 ; -} - - -[Debug] expand_symbolic_value: s@1 : &r@1 mut (i32) - -- original context: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@3 (s@1 : &r@1 mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - &mut@2 (@ignored_mut_borrow(None, 0: i32)), - ⌊mut@3, proj_loans (s@1 : &r@1 mut (i32))⌋ - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - @ignored_mut_loan(3, proj_loans (s@1 : &r@1 mut (i32))) - } - None -> 1: i32 ; -} - - -- new context: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@3 (&mut@4 (s@2 : i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - &mut@2 (@ignored_mut_borrow(None, 0: i32)), - ⌊mut@3, @ignored_mut_loan(4, proj_loans (s@2 : i32))⌋ - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - @ignored_mut_loan(3, ⌊mut@4, proj_loans (s@2 : i32)⌋) - } - None -> 1: i32 ; -} - - -[Debug] -**About to evaluate statement**: [ - var@8 := copy *(px); - var@7 := move var@8 == 1: i32; - var@6 := ¬ move var@7; - assert(¬move var@6); - var@11 := copy x; - var@10 := move var@11 == 1: i32; - var@9 := ¬ move var@10; - assert(¬move var@9); - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@3 (&mut@4 (1: i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - &mut@2 (@ignored_mut_borrow(None, 0: i32)), - ⌊mut@3, @ignored_mut_loan(4, proj_loans (s@2 : i32))⌋ - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - @ignored_mut_loan(3, ⌊mut@4, proj_loans (s@2 : i32)⌋) - } -} - - - -[Debug] -**About to evaluate statement**: [ - var@8 := copy *(px) -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@3 (&mut@4 (1: i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - &mut@2 (@ignored_mut_borrow(None, 0: i32)), - ⌊mut@3, @ignored_mut_loan(4, proj_loans (s@2 : i32))⌋ - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - @ignored_mut_loan(3, ⌊mut@4, proj_loans (s@2 : i32)⌋) - } -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@3 (&mut@4 (1: i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - &mut@2 (@ignored_mut_borrow(None, 0: i32)), - ⌊mut@3, @ignored_mut_loan(4, proj_loans (s@2 : i32))⌋ - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - @ignored_mut_loan(3, ⌊mut@4, proj_loans (s@2 : i32)⌋) - } -} - - -- op: -copy *(px) - -[Debug] end borrow: 1: -- original context: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@3 (&mut@4 (1: i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - &mut@2 (@ignored_mut_borrow(None, 0: i32)), - ⌊mut@3, @ignored_mut_loan(4, proj_loans (s@2 : i32))⌋ - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - @ignored_mut_loan(3, ⌊mut@4, proj_loans (s@2 : i32)⌋) - } -} - -[Debug] end borrow: 1: found outer borrows/abs:(InterpreterBorrowsCore.InnerLoans (InterpreterBorrowsCore.Borrow 2)) -[Debug] end borrow: 2: -- original context: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@3 (&mut@4 (1: i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - &mut@2 (@ignored_mut_borrow(None, 0: i32)), - ⌊mut@3, @ignored_mut_loan(4, proj_loans (s@2 : i32))⌋ - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - @ignored_mut_loan(3, ⌊mut@4, proj_loans (s@2 : i32)⌋) - } -} - -[Debug] end borrow: 2: found outer borrows/abs:(InterpreterBorrowsCore.OuterAbs 0) -[Debug] end_abstraction: 0 -- original context: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@3 (&mut@4 (1: i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - &mut@2 (@ignored_mut_borrow(None, 0: i32)), - ⌊mut@3, @ignored_mut_loan(4, proj_loans (s@2 : i32))⌋ - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - @ignored_mut_loan(3, ⌊mut@4, proj_loans (s@2 : i32)⌋) - } -} - -[Debug] end_abstraction: 0 -- context after parent abstractions ended: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@3 (&mut@4 (1: i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - &mut@2 (@ignored_mut_borrow(None, 0: i32)), - ⌊mut@3, @ignored_mut_loan(4, proj_loans (s@2 : i32))⌋ - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - @ignored_mut_loan(3, ⌊mut@4, proj_loans (s@2 : i32)⌋) - } -} - -[Debug] end borrow: 3: -- original context: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@3 (&mut@4 (1: i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - &mut@2 (@ignored_mut_borrow(None, 0: i32)), - ⌊mut@3, @ignored_mut_loan(4, proj_loans (s@2 : i32))⌋ - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - @ignored_mut_loan(3, ⌊mut@4, proj_loans (s@2 : i32)⌋) - } -} - -[Debug] give_back: -- bid: 3 -- content: &mut@3 (&mut@4 (1: i32)) -- context: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - &mut@2 (@ignored_mut_borrow(None, 0: i32)), - ⌊mut@3, @ignored_mut_loan(4, proj_loans (s@2 : i32))⌋ - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - @ignored_mut_loan(3, ⌊mut@4, proj_loans (s@2 : i32)⌋) - } -} - - -[Debug] give_back_value: -- bid: 3 -- value: &mut@4 (1: i32) -- context: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - &mut@2 (@ignored_mut_borrow(None, 0: i32)), - ⌊mut@3, @ignored_mut_loan(4, proj_loans (s@2 : i32))⌋ - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - @ignored_mut_loan(3, ⌊mut@4, proj_loans (s@2 : i32)⌋) - } -} - - -[Debug] end_abstraction: 0 -- context after loans ended: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - &mut@2 (@ignored_mut_borrow(None, 0: i32)), - @ended_mut_loan{ given_back=@ignored_mut_borrow(None, 1: i32); child=@ignored_mut_loan(4, proj_loans (s@2 : i32)) } - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=&mut@4 (1: i32); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} - } -} - -[Debug] give_back_value: -- bid: 2 -- value: s@3 : &r@1 mut (i32) -- context: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - ⊥ : &r@0 mut (&r@1 mut (i32)), - @ended_mut_loan{ given_back=@ignored_mut_borrow(None, 1: i32); child=@ignored_mut_loan(4, proj_loans (s@2 : i32)) } - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=&mut@4 (1: i32); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} - } -} - - -[Debug] end_abstraction: 0 -- original context: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@3 (&mut@4 (1: i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - &mut@2 (@ignored_mut_borrow(None, 0: i32)), - ⌊mut@3, @ignored_mut_loan(4, proj_loans (s@2 : i32))⌋ - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - @ignored_mut_loan(3, ⌊mut@4, proj_loans (s@2 : i32)⌋) - } -} - - -- new context: -# Ended regions: {0} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (s@3 : &r@1 mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=proj_loans (s@3 : &r@1 mut (i32)); child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=&mut@4 (1: i32); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} - } -} - -[Debug] end borrow: 1: -- original context: -# Ended regions: {0} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (s@3 : &r@1 mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=proj_loans (s@3 : &r@1 mut (i32)); child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=&mut@4 (1: i32); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} - } -} - -[Debug] give_back: -- bid: 1 -- content: &mut@1 (s@3 : &r@1 mut (i32)) -- context: -# Ended regions: {0} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=proj_loans (s@3 : &r@1 mut (i32)); child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=&mut@4 (1: i32); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} - } -} - - -[Debug] give_back_value: -- bid: 1 -- value: s@3 : &r@1 mut (i32) -- context: -# Ended regions: {0} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=proj_loans (s@3 : &r@1 mut (i32)); child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=&mut@4 (1: i32); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} - } -} - - -[Debug] expand_symbolic_value: s@3 : &r@1 mut (i32) - -- original context: -# Ended regions: {0} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> s@3 : &r@1 mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=proj_loans (s@3 : &r@1 mut (i32)); child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=&mut@4 (1: i32); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} - } -} - - -- new context: -# Ended regions: {0} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@5 (s@4 : i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@5, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=&mut@4 (1: i32); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} - } -} - - -[Debug] -**About to evaluate statement**: [ - var@7 := move var@8 == 1: i32; - var@6 := ¬ move var@7; - assert(¬move var@6); - var@11 := copy x; - var@10 := move var@11 == 1: i32; - var@9 := ¬ move var@10; - assert(¬move var@9); - return -] - -**Context**: -# Ended regions: {0} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@5 (s@4 : i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> s@4 : i32 ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@5, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=&mut@4 (1: i32); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} - } -} - - - -[Debug] -**About to evaluate statement**: [ - var@7 := move var@8 == 1: i32 -] - -**Context**: -# Ended regions: {0} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@5 (s@4 : i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> s@4 : i32 ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@5, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=&mut@4 (1: i32); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} - } -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {0} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@5 (s@4 : i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> s@4 : i32 ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@5, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=&mut@4 (1: i32); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} - } -} - - -- op: -move var@8 - -[Debug] eval_operand: -- ctx: -# Ended regions: {0} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@5 (s@4 : i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@5, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=&mut@4 (1: i32); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} - } -} - - -- op: -1: i32 - -[Debug] -**About to evaluate statement**: [ - var@6 := ¬ move var@7; - assert(¬move var@6); - var@11 := copy x; - var@10 := move var@11 == 1: i32; - var@9 := ¬ move var@10; - assert(¬move var@9); - return -] - -**Context**: -# Ended regions: {0} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@5 (s@4 : i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> s@5 : bool ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@5, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=&mut@4 (1: i32); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} - } -} - - - -[Debug] -**About to evaluate statement**: [ - var@6 := ¬ move var@7 -] - -**Context**: -# Ended regions: {0} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@5 (s@4 : i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> s@5 : bool ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@5, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=&mut@4 (1: i32); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} - } -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {0} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@5 (s@4 : i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> s@5 : bool ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@5, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=&mut@4 (1: i32); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} - } -} - - -- op: -move var@7 - -[Debug] -**About to evaluate statement**: [ - assert(¬move var@6); - var@11 := copy x; - var@10 := move var@11 == 1: i32; - var@9 := ¬ move var@10; - assert(¬move var@9); - return -] - -**Context**: -# Ended regions: {0} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@5 (s@4 : i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> s@6 : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@5, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=&mut@4 (1: i32); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} - } -} - - - -[Debug] -**About to evaluate statement**: [ - assert(¬move var@6) -] - -**Context**: -# Ended regions: {0} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@5 (s@4 : i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> s@6 : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@5, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=&mut@4 (1: i32); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} - } -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {0} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@5 (s@4 : i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> true ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@5, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=&mut@4 (1: i32); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} - } -} - - -- op: -move var@6 - -[Debug] -**About to evaluate statement**: [ - var@11 := copy x; - var@10 := move var@11 == 1: i32; - var@9 := ¬ move var@10; - assert(¬move var@9); - return -] - -**Context**: -# Ended regions: {0} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@5 (s@4 : i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@5, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=&mut@4 (1: i32); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} - } -} - - - -[Debug] -**About to evaluate statement**: [ - var@11 := copy x -] - -**Context**: -# Ended regions: {0} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@5 (s@4 : i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@5, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=&mut@4 (1: i32); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} - } -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {0} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@5 (s@4 : i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@5, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=&mut@4 (1: i32); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} - } -} - - -- op: -copy x - -[Debug] end borrow: 0: -- original context: -# Ended regions: {0} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@5 (s@4 : i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@5, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=&mut@4 (1: i32); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} - } -} - -[Debug] end borrow: 0: found outer borrows/abs:(InterpreterBorrowsCore.OuterAbs 1) -[Debug] end_abstraction: 1 -- original context: -# Ended regions: {0} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@5 (s@4 : i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@5, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=&mut@4 (1: i32); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} - } -} - -[Debug] end_abstraction: 1 -- context after parent abstractions ended: -# Ended regions: {0} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@5 (s@4 : i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@5, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=&mut@4 (1: i32); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} - } -} - -[Debug] end borrow: 5: -- original context: -# Ended regions: {0} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@5 (s@4 : i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@5, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=&mut@4 (1: i32); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} - } -} - -[Debug] give_back: -- bid: 5 -- content: &mut@5 (s@4 : i32) -- context: -# Ended regions: {0} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@5, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=&mut@4 (1: i32); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} - } -} - - -[Debug] give_back_value: -- bid: 5 -- value: s@4 : i32 -- context: -# Ended regions: {0} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@5, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=&mut@4 (1: i32); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} - } -} - - -[Debug] end borrow: 4: -- original context: -# Ended regions: {0} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=@ended_mut_loan{ given_back=proj_borrows (s@4 : i32 <: i32); child=proj_loans (s@4 : i32) }; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=&mut@4 (1: i32); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} - } -} - -[Debug] end borrow: 4: found outer borrows/abs:(InterpreterBorrowsCore.OuterAbs 1) -[Debug] end borrow: 4: -- original context: -# Ended regions: {0} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=@ended_mut_loan{ given_back=proj_borrows (s@4 : i32 <: i32); child=proj_loans (s@4 : i32) }; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=&mut@4 (1: i32); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} - } -} - -[Debug] give_back: -- bid: 4 -- content: &mut@4 (1: i32) -- context: -# Ended regions: {0} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=@ended_mut_loan{ given_back=proj_borrows (s@4 : i32 <: i32); child=proj_loans (s@4 : i32) }; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=⊥ : &r@1 mut (i32); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} - } -} - - -[Debug] end_abstraction: 1 -- context after loans ended: -# Ended regions: {0} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=@ended_mut_loan{ given_back=proj_borrows (s@4 : i32 <: i32); child=proj_loans (s@4 : i32) }; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=⊥ : &r@1 mut (i32); child: @ended_mut_loan{ given_back=1: i32; child=proj_loans (s@2 : i32) }} - } -} - -[Debug] give_back_value: -- bid: 0 -- value: s@7 : i32 -- context: -# Ended regions: {0} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=@ended_mut_loan{ given_back=proj_borrows (s@4 : i32 <: i32); child=proj_loans (s@4 : i32) }; child=⊥ : &r@1 mut (i32)), - @ended_ignored_mut_loan{ given_back=⊥ : &r@1 mut (i32); child: @ended_mut_loan{ given_back=1: i32; child=proj_loans (s@2 : i32) }} - } -} - - -[Debug] end_abstraction: 1 -- original context: -# Ended regions: {0} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@5 (s@4 : i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@5, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=&mut@4 (1: i32); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} - } -} - - -- new context: -# Ended regions: {0, 1} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@7 : i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; -} - -[Debug] -**About to evaluate statement**: [ - var@10 := move var@11 == 1: i32; - var@9 := ¬ move var@10; - assert(¬move var@9); - return -] - -**Context**: -# Ended regions: {0, 1} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@7 : i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> s@7 : i32 ; -} - - - -[Debug] -**About to evaluate statement**: [ - var@10 := move var@11 == 1: i32 -] - -**Context**: -# Ended regions: {0, 1} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@7 : i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> s@7 : i32 ; -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {0, 1} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@7 : i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> s@7 : i32 ; -} - - -- op: -move var@11 - -[Debug] eval_operand: -- ctx: -# Ended regions: {0, 1} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@7 : i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; -} - - -- op: -1: i32 - -[Debug] -**About to evaluate statement**: [ - var@9 := ¬ move var@10; - assert(¬move var@9); - return -] - -**Context**: -# Ended regions: {0, 1} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@7 : i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> s@8 : bool ; - Some (var@11) -> ⊥ : i32 ; -} - - - -[Debug] -**About to evaluate statement**: [ - var@9 := ¬ move var@10 -] - -**Context**: -# Ended regions: {0, 1} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@7 : i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> s@8 : bool ; - Some (var@11) -> ⊥ : i32 ; -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {0, 1} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@7 : i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> s@8 : bool ; - Some (var@11) -> ⊥ : i32 ; -} - - -- op: -move var@10 - -[Debug] -**About to evaluate statement**: [ - assert(¬move var@9); - return -] - -**Context**: -# Ended regions: {0, 1} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@7 : i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> s@9 : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; -} - - - -[Debug] -**About to evaluate statement**: [ - assert(¬move var@9) -] - -**Context**: -# Ended regions: {0, 1} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@7 : i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> s@9 : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {0, 1} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@7 : i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> true ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; -} - - -- op: -move var@9 - -[Debug] -**About to evaluate statement**: [ - return -] - -**Context**: -# Ended regions: {0, 1} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@7 : i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@6) -> ⊥ : bool ; - Some (var@7) -> ⊥ : bool ; - Some (var@8) -> ⊥ : i32 ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; -} - - - -[Debug] test_function_symbolic: id_mut_mut_test2 -[Debug] -**About to evaluate statement**: [ - x := 0: i32; - px := &mut x; - ppx := &mut px; - var@5 := &two-phase *(ppx); - ppy := move id_mut_mut(move var@5); - *(*(ppy)) := 1: i32; - y := 2: i32; - py := &mut y; - var@8 := &mut *(py); - *(ppy) := move var@8; - var@11 := copy *(px); - var@10 := move var@11 == 2: i32; - var@9 := ¬ move var@10; - assert(¬move var@9); - *(px) := 3: i32; - var@14 := copy x; - var@13 := move var@14 == 1: i32; - var@12 := ¬ move var@13; - assert(¬move var@12); - var@17 := copy y; - var@16 := move var@17 == 3: i32; - var@15 := ¬ move var@16; - assert(¬move var@15); - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⊥ : i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⊥ : i32 ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; -} - - - -[Debug] -**About to evaluate statement**: [ - x := 0: i32 -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⊥ : i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⊥ : i32 ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⊥ : i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⊥ : i32 ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; -} - - -- op: -0: i32 - -[Debug] -**About to evaluate statement**: [ - px := &mut x; - ppx := &mut px; - var@5 := &two-phase *(ppx); - ppy := move id_mut_mut(move var@5); - *(*(ppy)) := 1: i32; - y := 2: i32; - py := &mut y; - var@8 := &mut *(py); - *(ppy) := move var@8; - var@11 := copy *(px); - var@10 := move var@11 == 2: i32; - var@9 := ¬ move var@10; - assert(¬move var@9); - *(px) := 3: i32; - var@14 := copy x; - var@13 := move var@14 == 1: i32; - var@12 := ¬ move var@13; - assert(¬move var@12); - var@17 := copy y; - var@16 := move var@17 == 3: i32; - var@15 := ¬ move var@16; - assert(¬move var@15); - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⊥ : i32 ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; -} - - - -[Debug] -**About to evaluate statement**: [ - px := &mut x -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⊥ : i32 ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; -} - - - -[Debug] -**About to evaluate statement**: [ - ppx := &mut px; - var@5 := &two-phase *(ppx); - ppy := move id_mut_mut(move var@5); - *(*(ppy)) := 1: i32; - y := 2: i32; - py := &mut y; - var@8 := &mut *(py); - *(ppy) := move var@8; - var@11 := copy *(px); - var@10 := move var@11 == 2: i32; - var@9 := ¬ move var@10; - assert(¬move var@9); - *(px) := 3: i32; - var@14 := copy x; - var@13 := move var@14 == 1: i32; - var@12 := ¬ move var@13; - assert(¬move var@12); - var@17 := copy y; - var@16 := move var@17 == 3: i32; - var@15 := ¬ move var@16; - assert(¬move var@15); - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@0 (0: i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⊥ : i32 ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; -} - - - -[Debug] -**About to evaluate statement**: [ - ppx := &mut px -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@0 (0: i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⊥ : i32 ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; -} - - - -[Debug] -**About to evaluate statement**: [ - var@5 := &two-phase *(ppx); - ppy := move id_mut_mut(move var@5); - *(*(ppy)) := 1: i32; - y := 2: i32; - py := &mut y; - var@8 := &mut *(py); - *(ppy) := move var@8; - var@11 := copy *(px); - var@10 := move var@11 == 2: i32; - var@9 := ¬ move var@10; - assert(¬move var@9); - *(px) := 3: i32; - var@14 := copy x; - var@13 := move var@14 == 1: i32; - var@12 := ¬ move var@13; - assert(¬move var@12); - var@17 := copy y; - var@16 := move var@17 == 3: i32; - var@15 := ¬ move var@16; - assert(¬move var@15); - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (&mut@0 (0: i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⊥ : i32 ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; -} - - - -[Debug] -**About to evaluate statement**: [ - var@5 := &two-phase *(ppx) -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (&mut@0 (0: i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⊥ : i32 ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; -} - - - -[Debug] -**About to evaluate statement**: [ - ppy := move id_mut_mut(move var@5); - *(*(ppy)) := 1: i32; - y := 2: i32; - py := &mut y; - var@8 := &mut *(py); - *(ppy) := move var@8; - var@11 := copy *(px); - var@10 := move var@11 == 2: i32; - var@9 := ¬ move var@10; - assert(¬move var@9); - *(px) := 3: i32; - var@14 := copy x; - var@13 := move var@14 == 1: i32; - var@12 := ¬ move var@13; - assert(¬move var@12); - var@17 := copy y; - var@16 := move var@17 == 3: i32; - var@15 := ¬ move var@16; - assert(¬move var@15); - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (@shared_loan({2}, &mut@0 (0: i32))) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⌊inactivated_mut@2⌋ ; - Some (y) -> ⊥ : i32 ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; -} - - - -[Debug] -**About to evaluate statement**: [ - ppy := move id_mut_mut(move var@5) -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (@shared_loan({2}, &mut@0 (0: i32))) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⌊inactivated_mut@2⌋ ; - Some (y) -> ⊥ : i32 ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; -} - - - -[Debug] activate_inactivated_mut_borrow: resulting value: -&mut@0 (0: i32) -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> &mut@2 (&mut@0 (0: i32)) ; - Some (y) -> ⊥ : i32 ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; -} - - -- op: -move var@5 - -[Debug] -**About to evaluate statement**: [ - *(*(ppy)) := 1: i32; - y := 2: i32; - py := &mut y; - var@8 := &mut *(py); - *(ppy) := move var@8; - var@11 := copy *(px); - var@10 := move var@11 == 2: i32; - var@9 := ¬ move var@10; - assert(¬move var@9); - *(px) := 3: i32; - var@14 := copy x; - var@13 := move var@14 == 1: i32; - var@12 := ¬ move var@13; - assert(¬move var@12); - var@17 := copy y; - var@16 := move var@17 == 3: i32; - var@15 := ¬ move var@16; - assert(¬move var@15); - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> s@0 : &r@0 mut (&r@1 mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⊥ : i32 ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - &mut@2 (@ignored_mut_borrow(None, 0: i32)), - proj_loans (s@0 : &r@0 mut (&r@1 mut (i32))) - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - proj_loans (s@0 : &r@0 mut (&r@1 mut (i32))) - } -} - - - -[Debug] -**About to evaluate statement**: [ - *(*(ppy)) := 1: i32 -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> s@0 : &r@0 mut (&r@1 mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⊥ : i32 ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - &mut@2 (@ignored_mut_borrow(None, 0: i32)), - proj_loans (s@0 : &r@0 mut (&r@1 mut (i32))) - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - proj_loans (s@0 : &r@0 mut (&r@1 mut (i32))) - } -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> s@0 : &r@0 mut (&r@1 mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⊥ : i32 ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - &mut@2 (@ignored_mut_borrow(None, 0: i32)), - proj_loans (s@0 : &r@0 mut (&r@1 mut (i32))) - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - proj_loans (s@0 : &r@0 mut (&r@1 mut (i32))) - } -} - - -- op: -1: i32 - -[Debug] expand_symbolic_value: s@0 : &r@0 mut (&r@1 mut (i32)) - -- original context: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> s@0 : &r@0 mut (&r@1 mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⊥ : i32 ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - &mut@2 (@ignored_mut_borrow(None, 0: i32)), - proj_loans (s@0 : &r@0 mut (&r@1 mut (i32))) - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - proj_loans (s@0 : &r@0 mut (&r@1 mut (i32))) - } - None -> 1: i32 ; -} - - -- new context: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@3 (s@1 : &r@1 mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⊥ : i32 ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - &mut@2 (@ignored_mut_borrow(None, 0: i32)), - ⌊mut@3, proj_loans (s@1 : &r@1 mut (i32))⌋ - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - @ignored_mut_loan(3, proj_loans (s@1 : &r@1 mut (i32))) - } - None -> 1: i32 ; -} - - -[Debug] expand_symbolic_value: s@1 : &r@1 mut (i32) - -- original context: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@3 (s@1 : &r@1 mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⊥ : i32 ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - &mut@2 (@ignored_mut_borrow(None, 0: i32)), - ⌊mut@3, proj_loans (s@1 : &r@1 mut (i32))⌋ - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - @ignored_mut_loan(3, proj_loans (s@1 : &r@1 mut (i32))) - } - None -> 1: i32 ; -} - - -- new context: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@3 (&mut@4 (s@2 : i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⊥ : i32 ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - &mut@2 (@ignored_mut_borrow(None, 0: i32)), - ⌊mut@3, @ignored_mut_loan(4, proj_loans (s@2 : i32))⌋ - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - @ignored_mut_loan(3, ⌊mut@4, proj_loans (s@2 : i32)⌋) - } - None -> 1: i32 ; -} - - -[Debug] -**About to evaluate statement**: [ - y := 2: i32; - py := &mut y; - var@8 := &mut *(py); - *(ppy) := move var@8; - var@11 := copy *(px); - var@10 := move var@11 == 2: i32; - var@9 := ¬ move var@10; - assert(¬move var@9); - *(px) := 3: i32; - var@14 := copy x; - var@13 := move var@14 == 1: i32; - var@12 := ¬ move var@13; - assert(¬move var@12); - var@17 := copy y; - var@16 := move var@17 == 3: i32; - var@15 := ¬ move var@16; - assert(¬move var@15); - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@3 (&mut@4 (1: i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⊥ : i32 ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - &mut@2 (@ignored_mut_borrow(None, 0: i32)), - ⌊mut@3, @ignored_mut_loan(4, proj_loans (s@2 : i32))⌋ - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - @ignored_mut_loan(3, ⌊mut@4, proj_loans (s@2 : i32)⌋) - } -} - - - -[Debug] -**About to evaluate statement**: [ - y := 2: i32 -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@3 (&mut@4 (1: i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⊥ : i32 ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - &mut@2 (@ignored_mut_borrow(None, 0: i32)), - ⌊mut@3, @ignored_mut_loan(4, proj_loans (s@2 : i32))⌋ - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - @ignored_mut_loan(3, ⌊mut@4, proj_loans (s@2 : i32)⌋) - } -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@3 (&mut@4 (1: i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⊥ : i32 ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - &mut@2 (@ignored_mut_borrow(None, 0: i32)), - ⌊mut@3, @ignored_mut_loan(4, proj_loans (s@2 : i32))⌋ - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - @ignored_mut_loan(3, ⌊mut@4, proj_loans (s@2 : i32)⌋) - } -} - - -- op: -2: i32 - -[Debug] -**About to evaluate statement**: [ - py := &mut y; - var@8 := &mut *(py); - *(ppy) := move var@8; - var@11 := copy *(px); - var@10 := move var@11 == 2: i32; - var@9 := ¬ move var@10; - assert(¬move var@9); - *(px) := 3: i32; - var@14 := copy x; - var@13 := move var@14 == 1: i32; - var@12 := ¬ move var@13; - assert(¬move var@12); - var@17 := copy y; - var@16 := move var@17 == 3: i32; - var@15 := ¬ move var@16; - assert(¬move var@15); - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@3 (&mut@4 (1: i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> 2: i32 ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - &mut@2 (@ignored_mut_borrow(None, 0: i32)), - ⌊mut@3, @ignored_mut_loan(4, proj_loans (s@2 : i32))⌋ - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - @ignored_mut_loan(3, ⌊mut@4, proj_loans (s@2 : i32)⌋) - } -} - - - -[Debug] -**About to evaluate statement**: [ - py := &mut y -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@3 (&mut@4 (1: i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> 2: i32 ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - &mut@2 (@ignored_mut_borrow(None, 0: i32)), - ⌊mut@3, @ignored_mut_loan(4, proj_loans (s@2 : i32))⌋ - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - @ignored_mut_loan(3, ⌊mut@4, proj_loans (s@2 : i32)⌋) - } -} - - - -[Debug] -**About to evaluate statement**: [ - var@8 := &mut *(py); - *(ppy) := move var@8; - var@11 := copy *(px); - var@10 := move var@11 == 2: i32; - var@9 := ¬ move var@10; - assert(¬move var@9); - *(px) := 3: i32; - var@14 := copy x; - var@13 := move var@14 == 1: i32; - var@12 := ¬ move var@13; - assert(¬move var@12); - var@17 := copy y; - var@16 := move var@17 == 3: i32; - var@15 := ¬ move var@16; - assert(¬move var@15); - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@3 (&mut@4 (1: i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (2: i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - &mut@2 (@ignored_mut_borrow(None, 0: i32)), - ⌊mut@3, @ignored_mut_loan(4, proj_loans (s@2 : i32))⌋ - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - @ignored_mut_loan(3, ⌊mut@4, proj_loans (s@2 : i32)⌋) - } -} - - - -[Debug] -**About to evaluate statement**: [ - var@8 := &mut *(py) -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@3 (&mut@4 (1: i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (2: i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - &mut@2 (@ignored_mut_borrow(None, 0: i32)), - ⌊mut@3, @ignored_mut_loan(4, proj_loans (s@2 : i32))⌋ - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - @ignored_mut_loan(3, ⌊mut@4, proj_loans (s@2 : i32)⌋) - } -} - - - -[Debug] -**About to evaluate statement**: [ - *(ppy) := move var@8; - var@11 := copy *(px); - var@10 := move var@11 == 2: i32; - var@9 := ¬ move var@10; - assert(¬move var@9); - *(px) := 3: i32; - var@14 := copy x; - var@13 := move var@14 == 1: i32; - var@12 := ¬ move var@13; - assert(¬move var@12); - var@17 := copy y; - var@16 := move var@17 == 3: i32; - var@15 := ¬ move var@16; - assert(¬move var@15); - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@3 (&mut@4 (1: i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> &mut@6 (2: i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - &mut@2 (@ignored_mut_borrow(None, 0: i32)), - ⌊mut@3, @ignored_mut_loan(4, proj_loans (s@2 : i32))⌋ - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - @ignored_mut_loan(3, ⌊mut@4, proj_loans (s@2 : i32)⌋) - } -} - - - -[Debug] -**About to evaluate statement**: [ - *(ppy) := move var@8 -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@3 (&mut@4 (1: i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> &mut@6 (2: i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - &mut@2 (@ignored_mut_borrow(None, 0: i32)), - ⌊mut@3, @ignored_mut_loan(4, proj_loans (s@2 : i32))⌋ - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - @ignored_mut_loan(3, ⌊mut@4, proj_loans (s@2 : i32)⌋) - } -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@3 (&mut@4 (1: i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> &mut@6 (2: i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - &mut@2 (@ignored_mut_borrow(None, 0: i32)), - ⌊mut@3, @ignored_mut_loan(4, proj_loans (s@2 : i32))⌋ - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - @ignored_mut_loan(3, ⌊mut@4, proj_loans (s@2 : i32)⌋) - } -} - - -- op: -move var@8 - -[Debug] end borrow: 4: -- original context: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@3 (⊥ : &'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - &mut@2 (@ignored_mut_borrow(None, 0: i32)), - ⌊mut@3, @ignored_mut_loan(4, proj_loans (s@2 : i32))⌋ - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - @ignored_mut_loan(3, ⌊mut@4, proj_loans (s@2 : i32)⌋) - } - None -> &mut@6 (2: i32) ; - None -> &mut@4 (1: i32) ; -} - -[Debug] give_back: -- bid: 4 -- content: &mut@4 (1: i32) -- context: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@3 (⊥ : &'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - &mut@2 (@ignored_mut_borrow(None, 0: i32)), - ⌊mut@3, @ignored_mut_loan(4, proj_loans (s@2 : i32))⌋ - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - @ignored_mut_loan(3, ⌊mut@4, proj_loans (s@2 : i32)⌋) - } - None -> &mut@6 (2: i32) ; - None -> ⊥ : &'_ mut (i32) ; -} - - -[Debug] give_back_value: -- bid: 4 -- value: 1: i32 -- context: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@3 (⊥ : &'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - &mut@2 (@ignored_mut_borrow(None, 0: i32)), - ⌊mut@3, @ignored_mut_loan(4, proj_loans (s@2 : i32))⌋ - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - @ignored_mut_loan(3, ⌊mut@4, proj_loans (s@2 : i32)⌋) - } - None -> &mut@6 (2: i32) ; - None -> ⊥ : &'_ mut (i32) ; -} - - -[Debug] -**About to evaluate statement**: [ - var@11 := copy *(px); - var@10 := move var@11 == 2: i32; - var@9 := ¬ move var@10; - assert(¬move var@9); - *(px) := 3: i32; - var@14 := copy x; - var@13 := move var@14 == 1: i32; - var@12 := ¬ move var@13; - assert(¬move var@12); - var@17 := copy y; - var@16 := move var@17 == 3: i32; - var@15 := ¬ move var@16; - assert(¬move var@15); - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@3 (&mut@6 (2: i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - &mut@2 (@ignored_mut_borrow(None, 0: i32)), - ⌊mut@3, @ended_ignored_mut_loan{ given_back=1: i32; child: proj_loans (s@2 : i32)}⌋ - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - @ignored_mut_loan(3, @ended_mut_loan{ given_back=1: i32; child=proj_loans (s@2 : i32) }) - } -} - - - -[Debug] -**About to evaluate statement**: [ - var@11 := copy *(px) -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@3 (&mut@6 (2: i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - &mut@2 (@ignored_mut_borrow(None, 0: i32)), - ⌊mut@3, @ended_ignored_mut_loan{ given_back=1: i32; child: proj_loans (s@2 : i32)}⌋ - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - @ignored_mut_loan(3, @ended_mut_loan{ given_back=1: i32; child=proj_loans (s@2 : i32) }) - } -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@3 (&mut@6 (2: i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - &mut@2 (@ignored_mut_borrow(None, 0: i32)), - ⌊mut@3, @ended_ignored_mut_loan{ given_back=1: i32; child: proj_loans (s@2 : i32)}⌋ - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - @ignored_mut_loan(3, @ended_mut_loan{ given_back=1: i32; child=proj_loans (s@2 : i32) }) - } -} - - -- op: -copy *(px) - -[Debug] end borrow: 1: -- original context: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@3 (&mut@6 (2: i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - &mut@2 (@ignored_mut_borrow(None, 0: i32)), - ⌊mut@3, @ended_ignored_mut_loan{ given_back=1: i32; child: proj_loans (s@2 : i32)}⌋ - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - @ignored_mut_loan(3, @ended_mut_loan{ given_back=1: i32; child=proj_loans (s@2 : i32) }) - } -} - -[Debug] end borrow: 1: found outer borrows/abs:(InterpreterBorrowsCore.InnerLoans (InterpreterBorrowsCore.Borrow 2)) -[Debug] end borrow: 2: -- original context: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@3 (&mut@6 (2: i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - &mut@2 (@ignored_mut_borrow(None, 0: i32)), - ⌊mut@3, @ended_ignored_mut_loan{ given_back=1: i32; child: proj_loans (s@2 : i32)}⌋ - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - @ignored_mut_loan(3, @ended_mut_loan{ given_back=1: i32; child=proj_loans (s@2 : i32) }) - } -} - -[Debug] end borrow: 2: found outer borrows/abs:(InterpreterBorrowsCore.OuterAbs 0) -[Debug] end_abstraction: 0 -- original context: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@3 (&mut@6 (2: i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - &mut@2 (@ignored_mut_borrow(None, 0: i32)), - ⌊mut@3, @ended_ignored_mut_loan{ given_back=1: i32; child: proj_loans (s@2 : i32)}⌋ - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - @ignored_mut_loan(3, @ended_mut_loan{ given_back=1: i32; child=proj_loans (s@2 : i32) }) - } -} - -[Debug] end_abstraction: 0 -- context after parent abstractions ended: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@3 (&mut@6 (2: i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - &mut@2 (@ignored_mut_borrow(None, 0: i32)), - ⌊mut@3, @ended_ignored_mut_loan{ given_back=1: i32; child: proj_loans (s@2 : i32)}⌋ - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - @ignored_mut_loan(3, @ended_mut_loan{ given_back=1: i32; child=proj_loans (s@2 : i32) }) - } -} - -[Debug] end borrow: 3: -- original context: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@3 (&mut@6 (2: i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - &mut@2 (@ignored_mut_borrow(None, 0: i32)), - ⌊mut@3, @ended_ignored_mut_loan{ given_back=1: i32; child: proj_loans (s@2 : i32)}⌋ - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - @ignored_mut_loan(3, @ended_mut_loan{ given_back=1: i32; child=proj_loans (s@2 : i32) }) - } -} - -[Debug] give_back: -- bid: 3 -- content: &mut@3 (&mut@6 (2: i32)) -- context: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - &mut@2 (@ignored_mut_borrow(None, 0: i32)), - ⌊mut@3, @ended_ignored_mut_loan{ given_back=1: i32; child: proj_loans (s@2 : i32)}⌋ - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - @ignored_mut_loan(3, @ended_mut_loan{ given_back=1: i32; child=proj_loans (s@2 : i32) }) - } -} - - -[Debug] give_back_value: -- bid: 3 -- value: &mut@6 (2: i32) -- context: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - &mut@2 (@ignored_mut_borrow(None, 0: i32)), - ⌊mut@3, @ended_ignored_mut_loan{ given_back=1: i32; child: proj_loans (s@2 : i32)}⌋ - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - @ignored_mut_loan(3, @ended_mut_loan{ given_back=1: i32; child=proj_loans (s@2 : i32) }) - } -} - - -[Debug] end_abstraction: 0 -- context after loans ended: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - &mut@2 (@ignored_mut_borrow(None, 0: i32)), - @ended_mut_loan{ given_back=@ignored_mut_borrow(None, 2: i32); child=@ended_ignored_mut_loan{ given_back=1: i32; child: proj_loans (s@2 : i32)} } - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=&mut@6 (2: i32); child: @ended_mut_loan{ given_back=1: i32; child=proj_loans (s@2 : i32) }} - } -} - -[Debug] give_back_value: -- bid: 2 -- value: s@3 : &r@1 mut (i32) -- context: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - ⊥ : &r@0 mut (&r@1 mut (i32)), - @ended_mut_loan{ given_back=@ignored_mut_borrow(None, 2: i32); child=@ended_ignored_mut_loan{ given_back=1: i32; child: proj_loans (s@2 : i32)} } - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=&mut@6 (2: i32); child: @ended_mut_loan{ given_back=1: i32; child=proj_loans (s@2 : i32) }} - } -} - - -[Debug] end_abstraction: 0 -- original context: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@3 (&mut@6 (2: i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - &mut@2 (@ignored_mut_borrow(None, 0: i32)), - ⌊mut@3, @ended_ignored_mut_loan{ given_back=1: i32; child: proj_loans (s@2 : i32)}⌋ - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - @ignored_mut_loan(3, @ended_mut_loan{ given_back=1: i32; child=proj_loans (s@2 : i32) }) - } -} - - -- new context: -# Ended regions: {0} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (s@3 : &r@1 mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=proj_loans (s@3 : &r@1 mut (i32)); child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=&mut@6 (2: i32); child: @ended_mut_loan{ given_back=1: i32; child=proj_loans (s@2 : i32) }} - } -} - -[Debug] end borrow: 1: -- original context: -# Ended regions: {0} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (s@3 : &r@1 mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=proj_loans (s@3 : &r@1 mut (i32)); child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=&mut@6 (2: i32); child: @ended_mut_loan{ given_back=1: i32; child=proj_loans (s@2 : i32) }} - } -} - -[Debug] give_back: -- bid: 1 -- content: &mut@1 (s@3 : &r@1 mut (i32)) -- context: -# Ended regions: {0} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=proj_loans (s@3 : &r@1 mut (i32)); child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=&mut@6 (2: i32); child: @ended_mut_loan{ given_back=1: i32; child=proj_loans (s@2 : i32) }} - } -} - - -[Debug] give_back_value: -- bid: 1 -- value: s@3 : &r@1 mut (i32) -- context: -# Ended regions: {0} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=proj_loans (s@3 : &r@1 mut (i32)); child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=&mut@6 (2: i32); child: @ended_mut_loan{ given_back=1: i32; child=proj_loans (s@2 : i32) }} - } -} - - -[Debug] expand_symbolic_value: s@3 : &r@1 mut (i32) - -- original context: -# Ended regions: {0} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> s@3 : &r@1 mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=proj_loans (s@3 : &r@1 mut (i32)); child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=&mut@6 (2: i32); child: @ended_mut_loan{ given_back=1: i32; child=proj_loans (s@2 : i32) }} - } -} - - -- new context: -# Ended regions: {0} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@7 (s@4 : i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@7, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=&mut@6 (2: i32); child: @ended_mut_loan{ given_back=1: i32; child=proj_loans (s@2 : i32) }} - } -} - - -[Debug] -**About to evaluate statement**: [ - var@10 := move var@11 == 2: i32; - var@9 := ¬ move var@10; - assert(¬move var@9); - *(px) := 3: i32; - var@14 := copy x; - var@13 := move var@14 == 1: i32; - var@12 := ¬ move var@13; - assert(¬move var@12); - var@17 := copy y; - var@16 := move var@17 == 3: i32; - var@15 := ¬ move var@16; - assert(¬move var@15); - return -] - -**Context**: -# Ended regions: {0} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@7 (s@4 : i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> s@4 : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@7, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=&mut@6 (2: i32); child: @ended_mut_loan{ given_back=1: i32; child=proj_loans (s@2 : i32) }} - } -} - - - -[Debug] -**About to evaluate statement**: [ - var@10 := move var@11 == 2: i32 -] - -**Context**: -# Ended regions: {0} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@7 (s@4 : i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> s@4 : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@7, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=&mut@6 (2: i32); child: @ended_mut_loan{ given_back=1: i32; child=proj_loans (s@2 : i32) }} - } -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {0} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@7 (s@4 : i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> s@4 : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@7, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=&mut@6 (2: i32); child: @ended_mut_loan{ given_back=1: i32; child=proj_loans (s@2 : i32) }} - } -} - - -- op: -move var@11 - -[Debug] eval_operand: -- ctx: -# Ended regions: {0} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@7 (s@4 : i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@7, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=&mut@6 (2: i32); child: @ended_mut_loan{ given_back=1: i32; child=proj_loans (s@2 : i32) }} - } -} - - -- op: -2: i32 - -[Debug] -**About to evaluate statement**: [ - var@9 := ¬ move var@10; - assert(¬move var@9); - *(px) := 3: i32; - var@14 := copy x; - var@13 := move var@14 == 1: i32; - var@12 := ¬ move var@13; - assert(¬move var@12); - var@17 := copy y; - var@16 := move var@17 == 3: i32; - var@15 := ¬ move var@16; - assert(¬move var@15); - return -] - -**Context**: -# Ended regions: {0} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@7 (s@4 : i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> s@5 : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@7, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=&mut@6 (2: i32); child: @ended_mut_loan{ given_back=1: i32; child=proj_loans (s@2 : i32) }} - } -} - - - -[Debug] -**About to evaluate statement**: [ - var@9 := ¬ move var@10 -] - -**Context**: -# Ended regions: {0} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@7 (s@4 : i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> s@5 : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@7, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=&mut@6 (2: i32); child: @ended_mut_loan{ given_back=1: i32; child=proj_loans (s@2 : i32) }} - } -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {0} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@7 (s@4 : i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> s@5 : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> s@3 : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> s@6 : u32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@14) -> ⊥ : bool ; Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@7, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=&mut@6 (2: i32); child: @ended_mut_loan{ given_back=1: i32; child=proj_loans (s@2 : i32) }} - } + Some (var@16) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } - op: -move var@10 +3: u32 [Debug] **About to evaluate statement**: [ - assert(¬move var@9); - *(px) := 3: i32; - var@14 := copy x; - var@13 := move var@14 == 1: i32; - var@12 := ¬ move var@13; - assert(¬move var@12); - var@17 := copy y; - var@16 := move var@17 == 3: i32; - var@15 := ¬ move var@16; - assert(¬move var@15); + var@10 := ¬ move var@11; + assert(¬move var@10); + x := move test_loop4(20: u32); + var@16 := copy x; + var@15 := move var@16 == 1: u32; + var@14 := ¬ move var@15; + assert(¬move var@14); + x := move test_loop5(2: u32); + var@20 := copy x; + var@19 := move var@20 == 2: u32; + var@18 := ¬ move var@19; + assert(¬move var@18); + x := move test_loop6(2: u32); + var@24 := copy x; + var@23 := move var@24 == 2: u32; + var@22 := ¬ move var@23; + assert(¬move var@22); return ] **Context**: -# Ended regions: {0} +# Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@7 (s@4 : i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> s@6 : bool ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> s@3 : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> s@6 : u32 ; Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; + Some (var@11) -> s@7 : bool ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@14) -> ⊥ : bool ; Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@7, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=&mut@6 (2: i32); child: @ended_mut_loan{ given_back=1: i32; child=proj_loans (s@2 : i32) }} - } + Some (var@16) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } [Debug] **About to evaluate statement**: [ - assert(¬move var@9) + var@10 := ¬ move var@11 ] **Context**: -# Ended regions: {0} +# Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@7 (s@4 : i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> s@6 : bool ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> s@3 : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> s@6 : u32 ; Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; + Some (var@11) -> s@7 : bool ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@14) -> ⊥ : bool ; Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@7, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=&mut@6 (2: i32); child: @ended_mut_loan{ given_back=1: i32; child=proj_loans (s@2 : i32) }} - } + Some (var@16) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } [Debug] eval_operand: - ctx: -# Ended regions: {0} +# Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@7 (s@4 : i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> true ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> s@3 : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> s@6 : u32 ; Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; + Some (var@11) -> s@7 : bool ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@14) -> ⊥ : bool ; Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@7, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=&mut@6 (2: i32); child: @ended_mut_loan{ given_back=1: i32; child=proj_loans (s@2 : i32) }} - } + Some (var@16) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } - op: -move var@9 +move var@11 [Debug] **About to evaluate statement**: [ - *(px) := 3: i32; - var@14 := copy x; - var@13 := move var@14 == 1: i32; - var@12 := ¬ move var@13; - assert(¬move var@12); - var@17 := copy y; - var@16 := move var@17 == 3: i32; - var@15 := ¬ move var@16; - assert(¬move var@15); + assert(¬move var@10); + x := move test_loop4(20: u32); + var@16 := copy x; + var@15 := move var@16 == 1: u32; + var@14 := ¬ move var@15; + assert(¬move var@14); + x := move test_loop5(2: u32); + var@20 := copy x; + var@19 := move var@20 == 2: u32; + var@18 := ¬ move var@19; + assert(¬move var@18); + x := move test_loop6(2: u32); + var@24 := copy x; + var@23 := move var@24 == 2: u32; + var@22 := ¬ move var@23; + assert(¬move var@22); return ] **Context**: -# Ended regions: {0} +# Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@7 (s@4 : i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> s@3 : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> s@6 : u32 ; + Some (var@10) -> s@8 : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@14) -> ⊥ : bool ; Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@7, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=&mut@6 (2: i32); child: @ended_mut_loan{ given_back=1: i32; child=proj_loans (s@2 : i32) }} - } + Some (var@16) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } [Debug] **About to evaluate statement**: [ - *(px) := 3: i32 + assert(¬move var@10) ] **Context**: -# Ended regions: {0} +# Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@7 (s@4 : i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> s@3 : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> s@6 : u32 ; + Some (var@10) -> s@8 : bool ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@14) -> ⊥ : bool ; Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@7, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=&mut@6 (2: i32); child: @ended_mut_loan{ given_back=1: i32; child=proj_loans (s@2 : i32) }} - } + Some (var@16) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } [Debug] eval_operand: - ctx: -# Ended regions: {0} +# Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@7 (s@4 : i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> s@3 : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> s@6 : u32 ; + Some (var@10) -> true ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@14) -> ⊥ : bool ; Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@7, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=&mut@6 (2: i32); child: @ended_mut_loan{ given_back=1: i32; child=proj_loans (s@2 : i32) }} - } + Some (var@16) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } - op: -3: i32 +move var@10 [Debug] **About to evaluate statement**: [ - var@14 := copy x; - var@13 := move var@14 == 1: i32; - var@12 := ¬ move var@13; - assert(¬move var@12); - var@17 := copy y; - var@16 := move var@17 == 3: i32; - var@15 := ¬ move var@16; - assert(¬move var@15); + x := move test_loop4(20: u32); + var@16 := copy x; + var@15 := move var@16 == 1: u32; + var@14 := ¬ move var@15; + assert(¬move var@14); + x := move test_loop5(2: u32); + var@20 := copy x; + var@19 := move var@20 == 2: u32; + var@18 := ¬ move var@19; + assert(¬move var@18); + x := move test_loop6(2: u32); + var@24 := copy x; + var@23 := move var@24 == 2: u32; + var@22 := ¬ move var@23; + assert(¬move var@22); return ] **Context**: -# Ended regions: {0} +# Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@7 (3: i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> s@3 : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> s@6 : u32 ; Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@14) -> ⊥ : bool ; Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@7, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=&mut@6 (2: i32); child: @ended_mut_loan{ given_back=1: i32; child=proj_loans (s@2 : i32) }} - } + Some (var@16) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } [Debug] **About to evaluate statement**: [ - var@14 := copy x + x := move test_loop4(20: u32) ] **Context**: -# Ended regions: {0} +# Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@7 (3: i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> s@3 : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> s@6 : u32 ; Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@14) -> ⊥ : bool ; Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@7, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=&mut@6 (2: i32); child: @ended_mut_loan{ given_back=1: i32; child=proj_loans (s@2 : i32) }} - } + Some (var@16) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } [Debug] eval_operand: - ctx: -# Ended regions: {0} +# Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@7 (3: i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> s@3 : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> s@6 : u32 ; Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@14) -> ⊥ : bool ; Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@7, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=&mut@6 (2: i32); child: @ended_mut_loan{ given_back=1: i32; child=proj_loans (s@2 : i32) }} - } + Some (var@16) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } - op: -copy x +20: u32 -[Debug] end borrow: 0: -- original context: -# Ended regions: {0} +[Debug] +**About to evaluate statement**: [ + var@16 := copy x; + var@15 := move var@16 == 1: u32; + var@14 := ¬ move var@15; + assert(¬move var@14); + x := move test_loop5(2: u32); + var@20 := copy x; + var@19 := move var@20 == 2: u32; + var@18 := ¬ move var@19; + assert(¬move var@18); + x := move test_loop6(2: u32); + var@24 := copy x; + var@23 := move var@24 == 2: u32; + var@22 := ¬ move var@23; + assert(¬move var@22); + return +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@7 (3: i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> s@3 : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> s@6 : u32 ; Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> s@9 : u32 ; + Some (var@14) -> ⊥ : bool ; Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@7, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=&mut@6 (2: i32); child: @ended_mut_loan{ given_back=1: i32; child=proj_loans (s@2 : i32) }} - } + Some (var@16) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } -[Debug] end borrow: 0: found outer borrows/abs:(InterpreterBorrowsCore.OuterAbs 1) -[Debug] end_abstraction: 1 -- original context: -# Ended regions: {0} -# 1 frame(s) -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@7 (3: i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@7, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=&mut@6 (2: i32); child: @ended_mut_loan{ given_back=1: i32; child=proj_loans (s@2 : i32) }} - } -} -[Debug] end_abstraction: 1 -- context after parent abstractions ended: -# Ended regions: {0} +[Debug] +**About to evaluate statement**: [ + var@16 := copy x +] + +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@7 (3: i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> s@3 : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> s@6 : u32 ; Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> s@9 : u32 ; + Some (var@14) -> ⊥ : bool ; Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@7, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=&mut@6 (2: i32); child: @ended_mut_loan{ given_back=1: i32; child=proj_loans (s@2 : i32) }} - } + Some (var@16) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } -[Debug] end borrow: 7: -- original context: -# Ended regions: {0} -# 1 frame(s) -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@7 (3: i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@7, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=&mut@6 (2: i32); child: @ended_mut_loan{ given_back=1: i32; child=proj_loans (s@2 : i32) }} - } -} -[Debug] give_back: -- bid: 7 -- content: &mut@7 (3: i32) -- context: -# Ended regions: {0} +[Debug] eval_operand: +- ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> s@3 : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> s@6 : u32 ; Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> s@9 : u32 ; + Some (var@14) -> ⊥ : bool ; Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@7, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=&mut@6 (2: i32); child: @ended_mut_loan{ given_back=1: i32; child=proj_loans (s@2 : i32) }} - } + Some (var@16) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } -[Debug] give_back_value: -- bid: 7 -- value: 3: i32 -- context: -# Ended regions: {0} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@7, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=&mut@6 (2: i32); child: @ended_mut_loan{ given_back=1: i32; child=proj_loans (s@2 : i32) }} - } -} +- op: +copy x +[Debug] +**About to evaluate statement**: [ + var@15 := move var@16 == 1: u32; + var@14 := ¬ move var@15; + assert(¬move var@14); + x := move test_loop5(2: u32); + var@20 := copy x; + var@19 := move var@20 == 2: u32; + var@18 := ¬ move var@19; + assert(¬move var@18); + x := move test_loop6(2: u32); + var@24 := copy x; + var@23 := move var@24 == 2: u32; + var@22 := ¬ move var@23; + assert(¬move var@22); + return +] -[Debug] end_abstraction: 1 -- context after loans ended: -# Ended regions: {0} +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> s@3 : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> s@6 : u32 ; Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> s@9 : u32 ; + Some (var@14) -> ⊥ : bool ; Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=@ended_mut_loan{ given_back=3: i32; child=proj_loans (s@4 : i32) }; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=&mut@6 (2: i32); child: @ended_mut_loan{ given_back=1: i32; child=proj_loans (s@2 : i32) }} - } + Some (var@16) -> s@9 : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } -[Debug] give_back_value: -- bid: 0 -- value: s@7 : i32 -- context: -# Ended regions: {0} -# 1 frame(s) -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=@ended_mut_loan{ given_back=3: i32; child=proj_loans (s@4 : i32) }; child=⊥ : &r@1 mut (i32)), - @ended_ignored_mut_loan{ given_back=&mut@6 (2: i32); child: @ended_mut_loan{ given_back=1: i32; child=proj_loans (s@2 : i32) }} - } -} +[Debug] +**About to evaluate statement**: [ + var@15 := move var@16 == 1: u32 +] -[Debug] give_back_value: -- bid: 6 -- value: s@8 : i32 -- context: -# Ended regions: {0} +**Context**: +# Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> s@7 : i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> s@3 : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> s@6 : u32 ; Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> s@9 : u32 ; + Some (var@14) -> ⊥ : bool ; Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=@ended_mut_loan{ given_back=3: i32; child=proj_loans (s@4 : i32) }; child=⊥ : &r@1 mut (i32)), - @ended_ignored_mut_loan{ given_back=⊥ : &r@1 mut (i32); child: @ended_mut_loan{ given_back=1: i32; child=proj_loans (s@2 : i32) }} - } + Some (var@16) -> s@9 : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } -[Debug] end_abstraction: 1 -- original context: -# Ended regions: {0} + +[Debug] eval_operand: +- ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@7 (3: i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (⌊mut@6⌋) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> s@3 : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> s@6 : u32 ; Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> s@9 : u32 ; + Some (var@14) -> ⊥ : bool ; Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@7, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=&mut@6 (2: i32); child: @ended_mut_loan{ given_back=1: i32; child=proj_loans (s@2 : i32) }} - } + Some (var@16) -> s@9 : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } -- new context: -# Ended regions: {0, 1} +- op: +move var@16 + +[Debug] eval_operand: +- ctx: +# Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> s@7 : i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (s@8 : i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> s@3 : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> s@6 : u32 ; Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> s@9 : u32 ; + Some (var@14) -> ⊥ : bool ; Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } + +- op: +1: u32 + [Debug] **About to evaluate statement**: [ - var@13 := move var@14 == 1: i32; - var@12 := ¬ move var@13; - assert(¬move var@12); - var@17 := copy y; - var@16 := move var@17 == 3: i32; - var@15 := ¬ move var@16; - assert(¬move var@15); + var@14 := ¬ move var@15; + assert(¬move var@14); + x := move test_loop5(2: u32); + var@20 := copy x; + var@19 := move var@20 == 2: u32; + var@18 := ¬ move var@19; + assert(¬move var@18); + x := move test_loop6(2: u32); + var@24 := copy x; + var@23 := move var@24 == 2: u32; + var@22 := ¬ move var@23; + assert(¬move var@22); return ] **Context**: -# Ended regions: {0, 1} +# Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> s@7 : i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (s@8 : i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> s@3 : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> s@6 : u32 ; Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> s@7 : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> s@9 : u32 ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> s@10 : bool ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } [Debug] **About to evaluate statement**: [ - var@13 := move var@14 == 1: i32 + var@14 := ¬ move var@15 ] **Context**: -# Ended regions: {0, 1} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@7 : i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (s@8 : i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> s@7 : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; -} - - - -[Debug] eval_operand: -- ctx: -# Ended regions: {0, 1} +# Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> s@7 : i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (s@8 : i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> s@3 : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> s@6 : u32 ; Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> s@7 : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> s@9 : u32 ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> s@10 : bool ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } -- op: -move var@14 [Debug] eval_operand: - ctx: -# Ended regions: {0, 1} +# Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> s@7 : i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (s@8 : i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> s@3 : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> s@6 : u32 ; Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> s@9 : u32 ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> s@10 : bool ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } - op: -1: i32 +move var@15 [Debug] **About to evaluate statement**: [ - var@12 := ¬ move var@13; - assert(¬move var@12); - var@17 := copy y; - var@16 := move var@17 == 3: i32; - var@15 := ¬ move var@16; - assert(¬move var@15); + assert(¬move var@14); + x := move test_loop5(2: u32); + var@20 := copy x; + var@19 := move var@20 == 2: u32; + var@18 := ¬ move var@19; + assert(¬move var@18); + x := move test_loop6(2: u32); + var@24 := copy x; + var@23 := move var@24 == 2: u32; + var@22 := ¬ move var@23; + assert(¬move var@22); return ] **Context**: -# Ended regions: {0, 1} +# Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> s@7 : i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (s@8 : i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> s@3 : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> s@6 : u32 ; Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> s@9 : bool ; - Some (var@14) -> ⊥ : i32 ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> s@9 : u32 ; + Some (var@14) -> s@11 : bool ; Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } [Debug] **About to evaluate statement**: [ - var@12 := ¬ move var@13 + assert(¬move var@14) ] **Context**: -# Ended regions: {0, 1} +# Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> s@7 : i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (s@8 : i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> s@3 : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> s@6 : u32 ; Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> s@9 : bool ; - Some (var@14) -> ⊥ : i32 ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> s@9 : u32 ; + Some (var@14) -> s@11 : bool ; Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } [Debug] eval_operand: - ctx: -# Ended regions: {0, 1} +# Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> s@7 : i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (s@8 : i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> s@3 : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> s@6 : u32 ; Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> s@9 : bool ; - Some (var@14) -> ⊥ : i32 ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> s@9 : u32 ; + Some (var@14) -> true ; Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } - op: -move var@13 +move var@14 [Debug] **About to evaluate statement**: [ - assert(¬move var@12); - var@17 := copy y; - var@16 := move var@17 == 3: i32; - var@15 := ¬ move var@16; - assert(¬move var@15); + x := move test_loop5(2: u32); + var@20 := copy x; + var@19 := move var@20 == 2: u32; + var@18 := ¬ move var@19; + assert(¬move var@18); + x := move test_loop6(2: u32); + var@24 := copy x; + var@23 := move var@24 == 2: u32; + var@22 := ¬ move var@23; + assert(¬move var@22); return ] **Context**: -# Ended regions: {0, 1} +# Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> s@7 : i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (s@8 : i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> s@3 : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> s@6 : u32 ; Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> s@10 : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> s@9 : u32 ; + Some (var@14) -> ⊥ : bool ; Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } [Debug] **About to evaluate statement**: [ - assert(¬move var@12) + x := move test_loop5(2: u32) ] **Context**: -# Ended regions: {0, 1} +# Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> s@7 : i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (s@8 : i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> s@3 : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> s@6 : u32 ; Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> s@10 : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> s@9 : u32 ; + Some (var@14) -> ⊥ : bool ; Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } [Debug] eval_operand: - ctx: -# Ended regions: {0, 1} +# Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> s@7 : i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (s@8 : i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> s@3 : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> s@6 : u32 ; Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> true ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> s@9 : u32 ; + Some (var@14) -> ⊥ : bool ; Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } - op: -move var@12 +2: u32 [Debug] **About to evaluate statement**: [ - var@17 := copy y; - var@16 := move var@17 == 3: i32; - var@15 := ¬ move var@16; - assert(¬move var@15); + var@20 := copy x; + var@19 := move var@20 == 2: u32; + var@18 := ¬ move var@19; + assert(¬move var@18); + x := move test_loop6(2: u32); + var@24 := copy x; + var@23 := move var@24 == 2: u32; + var@22 := ¬ move var@23; + assert(¬move var@22); return ] **Context**: -# Ended regions: {0, 1} +# Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> s@7 : i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (s@8 : i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> s@3 : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> s@6 : u32 ; Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> s@9 : u32 ; + Some (var@14) -> ⊥ : bool ; Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> s@12 : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } [Debug] **About to evaluate statement**: [ - var@17 := copy y + var@20 := copy x ] **Context**: -# Ended regions: {0, 1} +# Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> s@7 : i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (s@8 : i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> s@3 : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> s@6 : u32 ; Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> s@9 : u32 ; + Some (var@14) -> ⊥ : bool ; Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> s@12 : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } [Debug] eval_operand: - ctx: -# Ended regions: {0, 1} +# Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> s@7 : i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (s@8 : i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> s@3 : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> s@6 : u32 ; Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> s@9 : u32 ; + Some (var@14) -> ⊥ : bool ; Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> s@12 : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } - op: -copy y - -[Debug] end borrow: 5: -- original context: -# Ended regions: {0, 1} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@7 : i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> &mut@5 (s@8 : i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; -} - -[Debug] give_back: -- bid: 5 -- content: &mut@5 (s@8 : i32) -- context: -# Ended regions: {0, 1} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@7 : i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; -} - - -[Debug] give_back_value: -- bid: 5 -- value: s@8 : i32 -- context: -# Ended regions: {0, 1} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@7 : i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> ⌊mut@5⌋ ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; -} - +copy x [Debug] **About to evaluate statement**: [ - var@16 := move var@17 == 3: i32; - var@15 := ¬ move var@16; - assert(¬move var@15); + var@19 := move var@20 == 2: u32; + var@18 := ¬ move var@19; + assert(¬move var@18); + x := move test_loop6(2: u32); + var@24 := copy x; + var@23 := move var@24 == 2: u32; + var@22 := ¬ move var@23; + assert(¬move var@22); return ] **Context**: -# Ended regions: {0, 1} +# Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> s@7 : i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> s@8 : i32 ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> s@3 : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> s@6 : u32 ; Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> s@9 : u32 ; + Some (var@14) -> ⊥ : bool ; Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> s@8 : i32 ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> s@12 : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> s@12 : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } [Debug] **About to evaluate statement**: [ - var@16 := move var@17 == 3: i32 + var@19 := move var@20 == 2: u32 ] **Context**: -# Ended regions: {0, 1} +# Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> s@7 : i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> s@8 : i32 ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> s@3 : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> s@6 : u32 ; Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> s@9 : u32 ; + Some (var@14) -> ⊥ : bool ; Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> s@8 : i32 ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> s@12 : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> s@12 : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } [Debug] eval_operand: - ctx: -# Ended regions: {0, 1} +# Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> s@7 : i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> s@8 : i32 ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> s@3 : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> s@6 : u32 ; Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> s@9 : u32 ; + Some (var@14) -> ⊥ : bool ; Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> s@8 : i32 ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> s@12 : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> s@12 : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } - op: -move var@17 +move var@20 [Debug] eval_operand: - ctx: -# Ended regions: {0, 1} +# Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> s@7 : i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> s@8 : i32 ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> s@3 : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> s@6 : u32 ; Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> s@9 : u32 ; + Some (var@14) -> ⊥ : bool ; Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> s@12 : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } - op: -3: i32 +2: u32 [Debug] **About to evaluate statement**: [ - var@15 := ¬ move var@16; - assert(¬move var@15); + var@18 := ¬ move var@19; + assert(¬move var@18); + x := move test_loop6(2: u32); + var@24 := copy x; + var@23 := move var@24 == 2: u32; + var@22 := ¬ move var@23; + assert(¬move var@22); return ] **Context**: -# Ended regions: {0, 1} +# Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> s@7 : i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> s@8 : i32 ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> s@3 : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> s@6 : u32 ; Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> s@9 : u32 ; + Some (var@14) -> ⊥ : bool ; Some (var@15) -> ⊥ : bool ; - Some (var@16) -> s@11 : bool ; - Some (var@17) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> s@12 : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> s@13 : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } [Debug] **About to evaluate statement**: [ - var@15 := ¬ move var@16 + var@18 := ¬ move var@19 ] **Context**: -# Ended regions: {0, 1} +# Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> s@7 : i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> s@8 : i32 ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> s@3 : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> s@6 : u32 ; Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> s@9 : u32 ; + Some (var@14) -> ⊥ : bool ; Some (var@15) -> ⊥ : bool ; - Some (var@16) -> s@11 : bool ; - Some (var@17) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> s@12 : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> s@13 : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } [Debug] eval_operand: - ctx: -# Ended regions: {0, 1} +# Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> s@7 : i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> s@8 : i32 ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> s@3 : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> s@6 : u32 ; Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> s@9 : u32 ; + Some (var@14) -> ⊥ : bool ; Some (var@15) -> ⊥ : bool ; - Some (var@16) -> s@11 : bool ; - Some (var@17) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> s@12 : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> s@13 : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } - op: -move var@16 +move var@19 [Debug] **About to evaluate statement**: [ - assert(¬move var@15); + assert(¬move var@18); + x := move test_loop6(2: u32); + var@24 := copy x; + var@23 := move var@24 == 2: u32; + var@22 := ¬ move var@23; + assert(¬move var@22); return ] **Context**: -# Ended regions: {0, 1} +# Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> s@7 : i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> s@8 : i32 ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> s@3 : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> s@6 : u32 ; Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> s@12 : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> s@9 : u32 ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : bool ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> s@12 : u32 ; + Some (var@18) -> s@14 : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } [Debug] **About to evaluate statement**: [ - assert(¬move var@15) + assert(¬move var@18) ] **Context**: -# Ended regions: {0, 1} +# Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> s@7 : i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> s@8 : i32 ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> s@3 : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> s@6 : u32 ; Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> s@12 : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> s@9 : u32 ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : bool ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> s@12 : u32 ; + Some (var@18) -> s@14 : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } [Debug] eval_operand: - ctx: -# Ended regions: {0, 1} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> s@7 : i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> s@8 : i32 ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; - Some (var@15) -> true ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; -} - - -- op: -move var@15 - -[Debug] -**About to evaluate statement**: [ - return -] - -**Context**: -# Ended regions: {0, 1} +# Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> s@7 : i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (y) -> s@8 : i32 ; - Some (py) -> ⊥ : &'_ mut (i32) ; - Some (var@8) -> ⊥ : &'_ mut (i32) ; - Some (var@9) -> ⊥ : bool ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> s@3 : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> s@6 : u32 ; Some (var@10) -> ⊥ : bool ; - Some (var@11) -> ⊥ : i32 ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : bool ; - Some (var@14) -> ⊥ : i32 ; + Some (var@11) -> ⊥ : bool ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> s@9 : u32 ; + Some (var@14) -> ⊥ : bool ; Some (var@15) -> ⊥ : bool ; - Some (var@16) -> ⊥ : bool ; - Some (var@17) -> ⊥ : i32 ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> s@12 : u32 ; + Some (var@18) -> true ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } +- op: +move var@18 -[Debug] test_function_symbolic: id_mut_mut_test3 [Debug] **About to evaluate statement**: [ - x := 0: i32; - px := &mut x; - ppx := &mut px; - var@5 := &two-phase *(ppx); - ppy := move id_mut_mut(move var@5); - *(*(ppy)) := 1: i32; - var@7 := &two-phase *(ppy); - ppz := move id_mut_mut(move var@7); - *(*(ppz)) := 2: i32; - var@10 := copy *(px); - var@9 := move var@10 == 2: i32; - var@8 := ¬ move var@9; - assert(¬move var@8); - var@13 := copy x; - var@12 := move var@13 == 2: i32; - var@11 := ¬ move var@12; - assert(¬move var@11); + x := move test_loop6(2: u32); + var@24 := copy x; + var@23 := move var@24 == 2: u32; + var@22 := ¬ move var@23; + assert(¬move var@22); return ] @@ -146218,26 +132332,37 @@ move var@15 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⊥ : i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> s@3 : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> s@6 : u32 ; + Some (var@10) -> ⊥ : bool ; Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> s@9 : u32 ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : bool ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> s@12 : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } [Debug] **About to evaluate statement**: [ - x := 0: i32 + x := move test_loop6(2: u32) ] **Context**: @@ -146247,19 +132372,30 @@ move var@15 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⊥ : i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> s@3 : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> s@6 : u32 ; + Some (var@10) -> ⊥ : bool ; Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> s@9 : u32 ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : bool ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> s@12 : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } @@ -146272,116 +132408,42 @@ move var@15 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⊥ : i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> s@3 : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> s@6 : u32 ; + Some (var@10) -> ⊥ : bool ; Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> s@9 : u32 ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : bool ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> s@12 : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> ⊥ : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } - op: -0: i32 - -[Debug] -**About to evaluate statement**: [ - px := &mut x; - ppx := &mut px; - var@5 := &two-phase *(ppx); - ppy := move id_mut_mut(move var@5); - *(*(ppy)) := 1: i32; - var@7 := &two-phase *(ppy); - ppz := move id_mut_mut(move var@7); - *(*(ppz)) := 2: i32; - var@10 := copy *(px); - var@9 := move var@10 == 2: i32; - var@8 := ¬ move var@9; - assert(¬move var@8); - var@13 := copy x; - var@12 := move var@13 == 2: i32; - var@11 := ¬ move var@12; - assert(¬move var@11); - return -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; -} - - - -[Debug] -**About to evaluate statement**: [ - px := &mut x -] - -**Context**: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> 0: i32 ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; -} - - +2: u32 [Debug] **About to evaluate statement**: [ - ppx := &mut px; - var@5 := &two-phase *(ppx); - ppy := move id_mut_mut(move var@5); - *(*(ppy)) := 1: i32; - var@7 := &two-phase *(ppy); - ppz := move id_mut_mut(move var@7); - *(*(ppz)) := 2: i32; - var@10 := copy *(px); - var@9 := move var@10 == 2: i32; - var@8 := ¬ move var@9; - assert(¬move var@8); - var@13 := copy x; - var@12 := move var@13 == 2: i32; - var@11 := ¬ move var@12; - assert(¬move var@11); + var@24 := copy x; + var@23 := move var@24 == 2: u32; + var@22 := ¬ move var@23; + assert(¬move var@22); return ] @@ -146392,26 +132454,37 @@ move var@15 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@0 (0: i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> s@3 : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> s@6 : u32 ; + Some (var@10) -> ⊥ : bool ; Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> s@9 : u32 ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : bool ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> s@12 : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> s@15 : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } [Debug] **About to evaluate statement**: [ - ppx := &mut px + var@24 := copy x ] **Context**: @@ -146421,69 +132494,78 @@ move var@15 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@0 (0: i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> s@3 : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> s@6 : u32 ; + Some (var@10) -> ⊥ : bool ; Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> s@9 : u32 ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : bool ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> s@12 : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> s@15 : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } -[Debug] -**About to evaluate statement**: [ - var@5 := &two-phase *(ppx); - ppy := move id_mut_mut(move var@5); - *(*(ppy)) := 1: i32; - var@7 := &two-phase *(ppy); - ppz := move id_mut_mut(move var@7); - *(*(ppz)) := 2: i32; - var@10 := copy *(px); - var@9 := move var@10 == 2: i32; - var@8 := ¬ move var@9; - assert(¬move var@8); - var@13 := copy x; - var@12 := move var@13 == 2: i32; - var@11 := ¬ move var@12; - assert(¬move var@11); - return -] - -**Context**: +[Debug] eval_operand: +- ctx: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (&mut@0 (0: i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> s@3 : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> s@6 : u32 ; + Some (var@10) -> ⊥ : bool ; Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> s@9 : u32 ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : bool ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> s@12 : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> s@15 : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } +- op: +copy x [Debug] **About to evaluate statement**: [ - var@5 := &two-phase *(ppx) + var@23 := move var@24 == 2: u32; + var@22 := ¬ move var@23; + assert(¬move var@22); + return ] **Context**: @@ -146493,39 +132575,37 @@ move var@15 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (&mut@0 (0: i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> s@3 : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> s@6 : u32 ; + Some (var@10) -> ⊥ : bool ; Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> s@9 : u32 ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : bool ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> s@12 : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> s@15 : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> s@15 : u32 ; } [Debug] **About to evaluate statement**: [ - ppy := move id_mut_mut(move var@5); - *(*(ppy)) := 1: i32; - var@7 := &two-phase *(ppy); - ppz := move id_mut_mut(move var@7); - *(*(ppz)) := 2: i32; - var@10 := copy *(px); - var@9 := move var@10 == 2: i32; - var@8 := ¬ move var@9; - assert(¬move var@8); - var@13 := copy x; - var@12 := move var@13 == 2: i32; - var@11 := ¬ move var@12; - assert(¬move var@11); - return + var@23 := move var@24 == 2: u32 ] **Context**: @@ -146535,54 +132615,72 @@ move var@15 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (@shared_loan({2}, &mut@0 (0: i32))) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⌊inactivated_mut@2⌋ ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> s@3 : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> s@6 : u32 ; + Some (var@10) -> ⊥ : bool ; Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> s@9 : u32 ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : bool ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> s@12 : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> s@15 : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> s@15 : u32 ; } -[Debug] -**About to evaluate statement**: [ - ppy := move id_mut_mut(move var@5) -] - -**Context**: +[Debug] eval_operand: +- ctx: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (@shared_loan({2}, &mut@0 (0: i32))) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⌊inactivated_mut@2⌋ ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> s@3 : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> s@6 : u32 ; + Some (var@10) -> ⊥ : bool ; Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> s@9 : u32 ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : bool ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> s@12 : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> s@15 : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> s@15 : u32 ; } +- op: +move var@24 -[Debug] activate_inactivated_mut_borrow: resulting value: -&mut@0 (0: i32) [Debug] eval_operand: - ctx: # Ended regions: {} @@ -146591,39 +132689,40 @@ move var@15 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> &mut@2 (&mut@0 (0: i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> s@3 : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> s@6 : u32 ; + Some (var@10) -> ⊥ : bool ; Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> s@9 : u32 ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : bool ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> s@12 : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> s@15 : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } - op: -move var@5 +2: u32 [Debug] **About to evaluate statement**: [ - *(*(ppy)) := 1: i32; - var@7 := &two-phase *(ppy); - ppz := move id_mut_mut(move var@7); - *(*(ppz)) := 2: i32; - var@10 := copy *(px); - var@9 := move var@10 == 2: i32; - var@8 := ¬ move var@9; - assert(¬move var@8); - var@13 := copy x; - var@12 := move var@13 == 2: i32; - var@11 := ¬ move var@12; - assert(¬move var@11); + var@22 := ¬ move var@23; + assert(¬move var@22); return ] @@ -146634,34 +132733,37 @@ move var@5 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> s@0 : &r@0 mut (&r@1 mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> s@3 : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> s@6 : u32 ; + Some (var@10) -> ⊥ : bool ; Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - &mut@2 (@ignored_mut_borrow(None, 0: i32)), - proj_loans (s@0 : &r@0 mut (&r@1 mut (i32))) - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - proj_loans (s@0 : &r@0 mut (&r@1 mut (i32))) - } + Some (var@12) -> ⊥ : u32 ; + Some (x) -> s@9 : u32 ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : bool ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> s@12 : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> s@15 : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> s@16 : bool ; + Some (var@24) -> ⊥ : u32 ; } [Debug] **About to evaluate statement**: [ - *(*(ppy)) := 1: i32 + var@22 := ¬ move var@23 ] **Context**: @@ -146671,27 +132773,30 @@ move var@5 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> s@0 : &r@0 mut (&r@1 mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> s@3 : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> s@6 : u32 ; + Some (var@10) -> ⊥ : bool ; Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - &mut@2 (@ignored_mut_borrow(None, 0: i32)), - proj_loans (s@0 : &r@0 mut (&r@1 mut (i32))) - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - proj_loans (s@0 : &r@0 mut (&r@1 mut (i32))) - } + Some (var@12) -> ⊥ : u32 ; + Some (x) -> s@9 : u32 ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : bool ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> s@12 : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> s@15 : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> s@16 : bool ; + Some (var@24) -> ⊥ : u32 ; } @@ -146704,216 +132809,158 @@ move var@5 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> s@0 : &r@0 mut (&r@1 mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> s@3 : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> s@6 : u32 ; + Some (var@10) -> ⊥ : bool ; Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - &mut@2 (@ignored_mut_borrow(None, 0: i32)), - proj_loans (s@0 : &r@0 mut (&r@1 mut (i32))) - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - proj_loans (s@0 : &r@0 mut (&r@1 mut (i32))) - } + Some (var@12) -> ⊥ : u32 ; + Some (x) -> s@9 : u32 ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : bool ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> s@12 : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> s@15 : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> s@16 : bool ; + Some (var@24) -> ⊥ : u32 ; } - op: -1: i32 - -[Debug] expand_symbolic_value: s@0 : &r@0 mut (&r@1 mut (i32)) - -- original context: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> s@0 : &r@0 mut (&r@1 mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - &mut@2 (@ignored_mut_borrow(None, 0: i32)), - proj_loans (s@0 : &r@0 mut (&r@1 mut (i32))) - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - proj_loans (s@0 : &r@0 mut (&r@1 mut (i32))) - } - None -> 1: i32 ; -} +move var@23 +[Debug] +**About to evaluate statement**: [ + assert(¬move var@22); + return +] -- new context: +**Context**: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@3 (s@1 : &r@1 mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> s@3 : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> s@6 : u32 ; + Some (var@10) -> ⊥ : bool ; Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - &mut@2 (@ignored_mut_borrow(None, 0: i32)), - ⌊mut@3, proj_loans (s@1 : &r@1 mut (i32))⌋ - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - @ignored_mut_loan(3, proj_loans (s@1 : &r@1 mut (i32))) - } - None -> 1: i32 ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> s@9 : u32 ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : bool ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> s@12 : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> s@15 : u32 ; + Some (var@22) -> s@17 : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } -[Debug] expand_symbolic_value: s@1 : &r@1 mut (i32) - -- original context: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@3 (s@1 : &r@1 mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - &mut@2 (@ignored_mut_borrow(None, 0: i32)), - ⌊mut@3, proj_loans (s@1 : &r@1 mut (i32))⌋ - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - @ignored_mut_loan(3, proj_loans (s@1 : &r@1 mut (i32))) - } - None -> 1: i32 ; -} +[Debug] +**About to evaluate statement**: [ + assert(¬move var@22) +] -- new context: +**Context**: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@3 (&mut@4 (s@2 : i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> s@3 : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> s@6 : u32 ; + Some (var@10) -> ⊥ : bool ; Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - &mut@2 (@ignored_mut_borrow(None, 0: i32)), - ⌊mut@3, @ignored_mut_loan(4, proj_loans (s@2 : i32))⌋ - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - @ignored_mut_loan(3, ⌊mut@4, proj_loans (s@2 : i32)⌋) - } - None -> 1: i32 ; + Some (var@12) -> ⊥ : u32 ; + Some (x) -> s@9 : u32 ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : bool ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> s@12 : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> s@15 : u32 ; + Some (var@22) -> s@17 : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } -[Debug] -**About to evaluate statement**: [ - var@7 := &two-phase *(ppy); - ppz := move id_mut_mut(move var@7); - *(*(ppz)) := 2: i32; - var@10 := copy *(px); - var@9 := move var@10 == 2: i32; - var@8 := ¬ move var@9; - assert(¬move var@8); - var@13 := copy x; - var@12 := move var@13 == 2: i32; - var@11 := ¬ move var@12; - assert(¬move var@11); - return -] -**Context**: +[Debug] eval_operand: +- ctx: # Ended regions: {} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@3 (&mut@4 (1: i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> s@3 : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> s@6 : u32 ; + Some (var@10) -> ⊥ : bool ; Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - &mut@2 (@ignored_mut_borrow(None, 0: i32)), - ⌊mut@3, @ignored_mut_loan(4, proj_loans (s@2 : i32))⌋ - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - @ignored_mut_loan(3, ⌊mut@4, proj_loans (s@2 : i32)⌋) - } + Some (var@12) -> ⊥ : u32 ; + Some (x) -> s@9 : u32 ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : bool ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> s@12 : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> s@15 : u32 ; + Some (var@22) -> true ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } +- op: +move var@22 [Debug] **About to evaluate statement**: [ - var@7 := &two-phase *(ppy) + return ] **Context**: @@ -146923,43 +132970,51 @@ move var@5 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@3 (&mut@4 (1: i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; + Some (x) -> s@0 : u32 ; + Some (var@2) -> ⊥ : bool ; + Some (var@3) -> ⊥ : bool ; + Some (var@4) -> ⊥ : u32 ; + Some (x) -> s@3 : u32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : u32 ; + Some (x) -> s@6 : u32 ; + Some (var@10) -> ⊥ : bool ; Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - &mut@2 (@ignored_mut_borrow(None, 0: i32)), - ⌊mut@3, @ignored_mut_loan(4, proj_loans (s@2 : i32))⌋ - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - @ignored_mut_loan(3, ⌊mut@4, proj_loans (s@2 : i32)⌋) - } + Some (var@12) -> ⊥ : u32 ; + Some (x) -> s@9 : u32 ; + Some (var@14) -> ⊥ : bool ; + Some (var@15) -> ⊥ : bool ; + Some (var@16) -> ⊥ : u32 ; + Some (x) -> s@12 : u32 ; + Some (var@18) -> ⊥ : bool ; + Some (var@19) -> ⊥ : bool ; + Some (var@20) -> ⊥ : u32 ; + Some (x) -> s@15 : u32 ; + Some (var@22) -> ⊥ : bool ; + Some (var@23) -> ⊥ : bool ; + Some (var@24) -> ⊥ : u32 ; } +[Debug] test_function_symbolic: id_mut_mut_test1 [Debug] **About to evaluate statement**: [ - ppz := move id_mut_mut(move var@7); - *(*(ppz)) := 2: i32; - var@10 := copy *(px); - var@9 := move var@10 == 2: i32; - var@8 := ¬ move var@9; - assert(¬move var@8); - var@13 := copy x; - var@12 := move var@13 == 2: i32; - var@11 := ¬ move var@12; - assert(¬move var@11); + x := 0: i32; + px := &mut x; + ppx := &mut px; + var@5 := &two-phase *(ppx); + ppy := move id_mut_mut(move var@5); + *(*(ppy)) := 1: i32; + var@8 := copy *(px); + var@7 := move var@8 == 1: i32; + var@6 := ¬ move var@7; + assert(¬move var@6); + var@11 := copy x; + var@10 := move var@11 == 1: i32; + var@9 := ¬ move var@10; + assert(¬move var@9); return ] @@ -146970,34 +133025,24 @@ move var@5 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@3 (@shared_loan({5}, &mut@4 (1: i32))) ; + Some (x) -> ⊥ : i32 ; + Some (px) -> ⊥ : &'_ mut (i32) ; + Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⌊inactivated_mut@5⌋ ; - Some (var@8) -> ⊥ : bool ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - &mut@2 (@ignored_mut_borrow(None, 0: i32)), - ⌊mut@3, @ignored_mut_loan(4, proj_loans (s@2 : i32))⌋ - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - @ignored_mut_loan(3, ⌊mut@4, proj_loans (s@2 : i32)⌋) - } + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : i32 ; } [Debug] **About to evaluate statement**: [ - ppz := move id_mut_mut(move var@7) + x := 0: i32 ] **Context**: @@ -147007,33 +133052,21 @@ move var@5 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@3 (@shared_loan({5}, &mut@4 (1: i32))) ; + Some (x) -> ⊥ : i32 ; + Some (px) -> ⊥ : &'_ mut (i32) ; + Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⌊inactivated_mut@5⌋ ; - Some (var@8) -> ⊥ : bool ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - &mut@2 (@ignored_mut_borrow(None, 0: i32)), - ⌊mut@3, @ignored_mut_loan(4, proj_loans (s@2 : i32))⌋ - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - @ignored_mut_loan(3, ⌊mut@4, proj_loans (s@2 : i32)⌋) - } + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : i32 ; } -[Debug] activate_inactivated_mut_borrow: resulting value: -&mut@4 (1: i32) [Debug] eval_operand: - ctx: # Ended regions: {} @@ -147042,44 +133075,38 @@ move var@5 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@3 (⌊mut@5⌋) ; + Some (x) -> ⊥ : i32 ; + Some (px) -> ⊥ : &'_ mut (i32) ; + Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> &mut@5 (&mut@4 (1: i32)) ; - Some (var@8) -> ⊥ : bool ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - &mut@2 (@ignored_mut_borrow(None, 0: i32)), - ⌊mut@3, @ignored_mut_loan(4, proj_loans (s@2 : i32))⌋ - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - @ignored_mut_loan(3, ⌊mut@4, proj_loans (s@2 : i32)⌋) - } + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : i32 ; } - op: -move var@7 +0: i32 [Debug] **About to evaluate statement**: [ - *(*(ppz)) := 2: i32; - var@10 := copy *(px); - var@9 := move var@10 == 2: i32; - var@8 := ¬ move var@9; - assert(¬move var@8); - var@13 := copy x; - var@12 := move var@13 == 2: i32; - var@11 := ¬ move var@12; - assert(¬move var@11); + px := &mut x; + ppx := &mut px; + var@5 := &two-phase *(ppx); + ppy := move id_mut_mut(move var@5); + *(*(ppy)) := 1: i32; + var@8 := copy *(px); + var@7 := move var@8 == 1: i32; + var@6 := ¬ move var@7; + assert(¬move var@6); + var@11 := copy x; + var@10 := move var@11 == 1: i32; + var@9 := ¬ move var@10; + assert(¬move var@9); return ] @@ -147090,42 +133117,24 @@ move var@7 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@3 (⌊mut@5⌋) ; + Some (x) -> 0: i32 ; + Some (px) -> ⊥ : &'_ mut (i32) ; + Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> s@3 : &r@2 mut (&r@3 mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - &mut@2 (@ignored_mut_borrow(None, 0: i32)), - ⌊mut@3, @ignored_mut_loan(4, proj_loans (s@2 : i32))⌋ - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - @ignored_mut_loan(3, ⌊mut@4, proj_loans (s@2 : i32)⌋) - } - abs@2{parents={}}{regions={2}} { - &mut@5 (@ignored_mut_borrow(None, 1: i32)), - proj_loans (s@3 : &r@2 mut (&r@3 mut (i32))) - } - abs@3{parents={2}}{regions={3}} { - @ignored_mut_borrow(Some (5), &mut@4 (1: i32)), - proj_loans (s@3 : &r@2 mut (&r@3 mut (i32))) - } + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : i32 ; } [Debug] **About to evaluate statement**: [ - *(*(ppz)) := 2: i32 + px := &mut x ] **Context**: @@ -147135,41 +133144,39 @@ move var@7 # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@3 (⌊mut@5⌋) ; + Some (x) -> 0: i32 ; + Some (px) -> ⊥ : &'_ mut (i32) ; + Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> s@3 : &r@2 mut (&r@3 mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - &mut@2 (@ignored_mut_borrow(None, 0: i32)), - ⌊mut@3, @ignored_mut_loan(4, proj_loans (s@2 : i32))⌋ - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - @ignored_mut_loan(3, ⌊mut@4, proj_loans (s@2 : i32)⌋) - } - abs@2{parents={}}{regions={2}} { - &mut@5 (@ignored_mut_borrow(None, 1: i32)), - proj_loans (s@3 : &r@2 mut (&r@3 mut (i32))) - } - abs@3{parents={2}}{regions={3}} { - @ignored_mut_borrow(Some (5), &mut@4 (1: i32)), - proj_loans (s@3 : &r@2 mut (&r@3 mut (i32))) - } + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : i32 ; } -[Debug] eval_operand: -- ctx: +[Debug] +**About to evaluate statement**: [ + ppx := &mut px; + var@5 := &two-phase *(ppx); + ppy := move id_mut_mut(move var@5); + *(*(ppy)) := 1: i32; + var@8 := copy *(px); + var@7 := move var@8 == 1: i32; + var@6 := ¬ move var@7; + assert(¬move var@6); + var@11 := copy x; + var@10 := move var@11 == 1: i32; + var@9 := ¬ move var@10; + assert(¬move var@9); + return +] + +**Context**: # Ended regions: {} # 1 frame(s) @@ -147177,43 +133184,26 @@ move var@7 { Some (var@0) -> ⊥ : () ; Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@3 (⌊mut@5⌋) ; + Some (px) -> &mut@0 (0: i32) ; + Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> s@3 : &r@2 mut (&r@3 mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - &mut@2 (@ignored_mut_borrow(None, 0: i32)), - ⌊mut@3, @ignored_mut_loan(4, proj_loans (s@2 : i32))⌋ - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - @ignored_mut_loan(3, ⌊mut@4, proj_loans (s@2 : i32)⌋) - } - abs@2{parents={}}{regions={2}} { - &mut@5 (@ignored_mut_borrow(None, 1: i32)), - proj_loans (s@3 : &r@2 mut (&r@3 mut (i32))) - } - abs@3{parents={2}}{regions={3}} { - @ignored_mut_borrow(Some (5), &mut@4 (1: i32)), - proj_loans (s@3 : &r@2 mut (&r@3 mut (i32))) - } + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : i32 ; } -- op: -2: i32 -[Debug] expand_symbolic_value: s@3 : &r@2 mut (&r@3 mut (i32)) +[Debug] +**About to evaluate statement**: [ + ppx := &mut px +] -- original context: +**Context**: # Ended regions: {} # 1 frame(s) @@ -147221,81 +133211,37 @@ move var@7 { Some (var@0) -> ⊥ : () ; Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@3 (⌊mut@5⌋) ; + Some (px) -> &mut@0 (0: i32) ; + Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> s@3 : &r@2 mut (&r@3 mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - &mut@2 (@ignored_mut_borrow(None, 0: i32)), - ⌊mut@3, @ignored_mut_loan(4, proj_loans (s@2 : i32))⌋ - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - @ignored_mut_loan(3, ⌊mut@4, proj_loans (s@2 : i32)⌋) - } - abs@2{parents={}}{regions={2}} { - &mut@5 (@ignored_mut_borrow(None, 1: i32)), - proj_loans (s@3 : &r@2 mut (&r@3 mut (i32))) - } - abs@3{parents={2}}{regions={3}} { - @ignored_mut_borrow(Some (5), &mut@4 (1: i32)), - proj_loans (s@3 : &r@2 mut (&r@3 mut (i32))) - } - None -> 2: i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : i32 ; } -- new context: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@3 (⌊mut@5⌋) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> &mut@6 (s@4 : &r@3 mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - &mut@2 (@ignored_mut_borrow(None, 0: i32)), - ⌊mut@3, @ignored_mut_loan(4, proj_loans (s@2 : i32))⌋ - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - @ignored_mut_loan(3, ⌊mut@4, proj_loans (s@2 : i32)⌋) - } - abs@2{parents={}}{regions={2}} { - &mut@5 (@ignored_mut_borrow(None, 1: i32)), - ⌊mut@6, proj_loans (s@4 : &r@3 mut (i32))⌋ - } - abs@3{parents={2}}{regions={3}} { - @ignored_mut_borrow(Some (5), &mut@4 (1: i32)), - @ignored_mut_loan(6, proj_loans (s@4 : &r@3 mut (i32))) - } - None -> 2: i32 ; -} - -[Debug] expand_symbolic_value: s@4 : &r@3 mut (i32) +[Debug] +**About to evaluate statement**: [ + var@5 := &two-phase *(ppx); + ppy := move id_mut_mut(move var@5); + *(*(ppy)) := 1: i32; + var@8 := copy *(px); + var@7 := move var@8 == 1: i32; + var@6 := ¬ move var@7; + assert(¬move var@6); + var@11 := copy x; + var@10 := move var@11 == 1: i32; + var@9 := ¬ move var@10; + assert(¬move var@9); + return +] -- original context: +**Context**: # Ended regions: {} # 1 frame(s) @@ -147304,38 +133250,25 @@ move var@7 Some (var@0) -> ⊥ : () ; Some (x) -> ⌊mut@0⌋ ; Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@3 (⌊mut@5⌋) ; + Some (ppx) -> &mut@1 (&mut@0 (0: i32)) ; + Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> &mut@6 (s@4 : &r@3 mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - &mut@2 (@ignored_mut_borrow(None, 0: i32)), - ⌊mut@3, @ignored_mut_loan(4, proj_loans (s@2 : i32))⌋ - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - @ignored_mut_loan(3, ⌊mut@4, proj_loans (s@2 : i32)⌋) - } - abs@2{parents={}}{regions={2}} { - &mut@5 (@ignored_mut_borrow(None, 1: i32)), - ⌊mut@6, proj_loans (s@4 : &r@3 mut (i32))⌋ - } - abs@3{parents={2}}{regions={3}} { - @ignored_mut_borrow(Some (5), &mut@4 (1: i32)), - @ignored_mut_loan(6, proj_loans (s@4 : &r@3 mut (i32))) - } - None -> 2: i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : i32 ; } -- new context: + +[Debug] +**About to evaluate statement**: [ + var@5 := &two-phase *(ppx) +] + +**Context**: # Ended regions: {} # 1 frame(s) @@ -147344,47 +133277,31 @@ move var@7 Some (var@0) -> ⊥ : () ; Some (x) -> ⌊mut@0⌋ ; Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@3 (⌊mut@5⌋) ; + Some (ppx) -> &mut@1 (&mut@0 (0: i32)) ; + Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> &mut@6 (&mut@7 (s@5 : i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - &mut@2 (@ignored_mut_borrow(None, 0: i32)), - ⌊mut@3, @ignored_mut_loan(4, proj_loans (s@2 : i32))⌋ - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - @ignored_mut_loan(3, ⌊mut@4, proj_loans (s@2 : i32)⌋) - } - abs@2{parents={}}{regions={2}} { - &mut@5 (@ignored_mut_borrow(None, 1: i32)), - ⌊mut@6, @ignored_mut_loan(7, proj_loans (s@5 : i32))⌋ - } - abs@3{parents={2}}{regions={3}} { - @ignored_mut_borrow(Some (5), &mut@4 (1: i32)), - @ignored_mut_loan(6, ⌊mut@7, proj_loans (s@5 : i32)⌋) - } - None -> 2: i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : i32 ; } + [Debug] **About to evaluate statement**: [ - var@10 := copy *(px); - var@9 := move var@10 == 2: i32; - var@8 := ¬ move var@9; - assert(¬move var@8); - var@13 := copy x; - var@12 := move var@13 == 2: i32; - var@11 := ¬ move var@12; - assert(¬move var@11); + ppy := move id_mut_mut(move var@5); + *(*(ppy)) := 1: i32; + var@8 := copy *(px); + var@7 := move var@8 == 1: i32; + var@6 := ¬ move var@7; + assert(¬move var@6); + var@11 := copy x; + var@10 := move var@11 == 1: i32; + var@9 := ¬ move var@10; + assert(¬move var@9); return ] @@ -147397,40 +133314,22 @@ move var@7 Some (var@0) -> ⊥ : () ; Some (x) -> ⌊mut@0⌋ ; Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@3 (⌊mut@5⌋) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> &mut@6 (&mut@7 (2: i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; + Some (ppx) -> &mut@1 (@shared_loan({2}, &mut@0 (0: i32))) ; + Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@5) -> ⌊inactivated_mut@2⌋ ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - &mut@2 (@ignored_mut_borrow(None, 0: i32)), - ⌊mut@3, @ignored_mut_loan(4, proj_loans (s@2 : i32))⌋ - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - @ignored_mut_loan(3, ⌊mut@4, proj_loans (s@2 : i32)⌋) - } - abs@2{parents={}}{regions={2}} { - &mut@5 (@ignored_mut_borrow(None, 1: i32)), - ⌊mut@6, @ignored_mut_loan(7, proj_loans (s@5 : i32))⌋ - } - abs@3{parents={2}}{regions={3}} { - @ignored_mut_borrow(Some (5), &mut@4 (1: i32)), - @ignored_mut_loan(6, ⌊mut@7, proj_loans (s@5 : i32)⌋) - } + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : i32 ; } [Debug] **About to evaluate statement**: [ - var@10 := copy *(px) + ppy := move id_mut_mut(move var@5) ] **Context**: @@ -147442,37 +133341,21 @@ move var@7 Some (var@0) -> ⊥ : () ; Some (x) -> ⌊mut@0⌋ ; Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@3 (⌊mut@5⌋) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> &mut@6 (&mut@7 (2: i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; + Some (ppx) -> &mut@1 (@shared_loan({2}, &mut@0 (0: i32))) ; + Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@5) -> ⌊inactivated_mut@2⌋ ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - &mut@2 (@ignored_mut_borrow(None, 0: i32)), - ⌊mut@3, @ignored_mut_loan(4, proj_loans (s@2 : i32))⌋ - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - @ignored_mut_loan(3, ⌊mut@4, proj_loans (s@2 : i32)⌋) - } - abs@2{parents={}}{regions={2}} { - &mut@5 (@ignored_mut_borrow(None, 1: i32)), - ⌊mut@6, @ignored_mut_loan(7, proj_loans (s@5 : i32))⌋ - } - abs@3{parents={2}}{regions={3}} { - @ignored_mut_borrow(Some (5), &mut@4 (1: i32)), - @ignored_mut_loan(6, ⌊mut@7, proj_loans (s@5 : i32)⌋) - } + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : i32 ; } +[Debug] activate_inactivated_mut_borrow: resulting value: +&mut@0 (0: i32) [Debug] eval_operand: - ctx: # Ended regions: {} @@ -147484,40 +133367,35 @@ move var@7 Some (x) -> ⌊mut@0⌋ ; Some (px) -> ⌊mut@1⌋ ; Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@3 (⌊mut@5⌋) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> &mut@6 (&mut@7 (2: i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; + Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; + Some (var@5) -> &mut@2 (&mut@0 (0: i32)) ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - &mut@2 (@ignored_mut_borrow(None, 0: i32)), - ⌊mut@3, @ignored_mut_loan(4, proj_loans (s@2 : i32))⌋ - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - @ignored_mut_loan(3, ⌊mut@4, proj_loans (s@2 : i32)⌋) - } - abs@2{parents={}}{regions={2}} { - &mut@5 (@ignored_mut_borrow(None, 1: i32)), - ⌊mut@6, @ignored_mut_loan(7, proj_loans (s@5 : i32))⌋ - } - abs@3{parents={2}}{regions={3}} { - @ignored_mut_borrow(Some (5), &mut@4 (1: i32)), - @ignored_mut_loan(6, ⌊mut@7, proj_loans (s@5 : i32)⌋) - } + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : i32 ; } - op: -copy *(px) +move var@5 -[Debug] end borrow: 1: -- original context: +[Debug] +**About to evaluate statement**: [ + *(*(ppy)) := 1: i32; + var@8 := copy *(px); + var@7 := move var@8 == 1: i32; + var@6 := ¬ move var@7; + assert(¬move var@6); + var@11 := copy x; + var@10 := move var@11 == 1: i32; + var@9 := ¬ move var@10; + assert(¬move var@9); + return +] + +**Context**: # Ended regions: {} # 1 frame(s) @@ -147527,77 +133405,32 @@ copy *(px) Some (x) -> ⌊mut@0⌋ ; Some (px) -> ⌊mut@1⌋ ; Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@3 (⌊mut@5⌋) ; + Some (ppy) -> s@0 : &r@0 mut (&r@1 mut (i32)) ; Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> &mut@6 (&mut@7 (2: i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : i32 ; abs@0{parents={}}{regions={0}} { &mut@2 (@ignored_mut_borrow(None, 0: i32)), - ⌊mut@3, @ignored_mut_loan(4, proj_loans (s@2 : i32))⌋ + proj_loans (s@0 : &r@0 mut (&r@1 mut (i32))) } abs@1{parents={0}}{regions={1}} { @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - @ignored_mut_loan(3, ⌊mut@4, proj_loans (s@2 : i32)⌋) - } - abs@2{parents={}}{regions={2}} { - &mut@5 (@ignored_mut_borrow(None, 1: i32)), - ⌊mut@6, @ignored_mut_loan(7, proj_loans (s@5 : i32))⌋ - } - abs@3{parents={2}}{regions={3}} { - @ignored_mut_borrow(Some (5), &mut@4 (1: i32)), - @ignored_mut_loan(6, ⌊mut@7, proj_loans (s@5 : i32)⌋) + proj_loans (s@0 : &r@0 mut (&r@1 mut (i32))) } } -[Debug] end borrow: 1: found outer borrows/abs:(InterpreterBorrowsCore.InnerLoans (InterpreterBorrowsCore.Borrow 2)) -[Debug] end borrow: 2: -- original context: -# Ended regions: {} -# 1 frame(s) -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@3 (⌊mut@5⌋) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> &mut@6 (&mut@7 (2: i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - abs@0{parents={}}{regions={0}} { - &mut@2 (@ignored_mut_borrow(None, 0: i32)), - ⌊mut@3, @ignored_mut_loan(4, proj_loans (s@2 : i32))⌋ - } - abs@1{parents={0}}{regions={1}} { - @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - @ignored_mut_loan(3, ⌊mut@4, proj_loans (s@2 : i32)⌋) - } - abs@2{parents={}}{regions={2}} { - &mut@5 (@ignored_mut_borrow(None, 1: i32)), - ⌊mut@6, @ignored_mut_loan(7, proj_loans (s@5 : i32))⌋ - } - abs@3{parents={2}}{regions={3}} { - @ignored_mut_borrow(Some (5), &mut@4 (1: i32)), - @ignored_mut_loan(6, ⌊mut@7, proj_loans (s@5 : i32)⌋) - } -} -[Debug] end borrow: 2: found outer borrows/abs:(InterpreterBorrowsCore.OuterAbs 0) -[Debug] end_abstraction: 0 -- original context: +[Debug] +**About to evaluate statement**: [ + *(*(ppy)) := 1: i32 +] + +**Context**: # Ended regions: {} # 1 frame(s) @@ -147607,36 +133440,28 @@ copy *(px) Some (x) -> ⌊mut@0⌋ ; Some (px) -> ⌊mut@1⌋ ; Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@3 (⌊mut@5⌋) ; + Some (ppy) -> s@0 : &r@0 mut (&r@1 mut (i32)) ; Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> &mut@6 (&mut@7 (2: i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : i32 ; abs@0{parents={}}{regions={0}} { &mut@2 (@ignored_mut_borrow(None, 0: i32)), - ⌊mut@3, @ignored_mut_loan(4, proj_loans (s@2 : i32))⌋ + proj_loans (s@0 : &r@0 mut (&r@1 mut (i32))) } abs@1{parents={0}}{regions={1}} { @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - @ignored_mut_loan(3, ⌊mut@4, proj_loans (s@2 : i32)⌋) - } - abs@2{parents={}}{regions={2}} { - &mut@5 (@ignored_mut_borrow(None, 1: i32)), - ⌊mut@6, @ignored_mut_loan(7, proj_loans (s@5 : i32))⌋ - } - abs@3{parents={2}}{regions={3}} { - @ignored_mut_borrow(Some (5), &mut@4 (1: i32)), - @ignored_mut_loan(6, ⌊mut@7, proj_loans (s@5 : i32)⌋) + proj_loans (s@0 : &r@0 mut (&r@1 mut (i32))) } } -[Debug] end_abstraction: 0 -- context after parent abstractions ended: + + +[Debug] eval_operand: +- ctx: # Ended regions: {} # 1 frame(s) @@ -147646,35 +133471,30 @@ copy *(px) Some (x) -> ⌊mut@0⌋ ; Some (px) -> ⌊mut@1⌋ ; Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@3 (⌊mut@5⌋) ; + Some (ppy) -> s@0 : &r@0 mut (&r@1 mut (i32)) ; Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> &mut@6 (&mut@7 (2: i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : i32 ; abs@0{parents={}}{regions={0}} { &mut@2 (@ignored_mut_borrow(None, 0: i32)), - ⌊mut@3, @ignored_mut_loan(4, proj_loans (s@2 : i32))⌋ + proj_loans (s@0 : &r@0 mut (&r@1 mut (i32))) } abs@1{parents={0}}{regions={1}} { @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - @ignored_mut_loan(3, ⌊mut@4, proj_loans (s@2 : i32)⌋) - } - abs@2{parents={}}{regions={2}} { - &mut@5 (@ignored_mut_borrow(None, 1: i32)), - ⌊mut@6, @ignored_mut_loan(7, proj_loans (s@5 : i32))⌋ - } - abs@3{parents={2}}{regions={3}} { - @ignored_mut_borrow(Some (5), &mut@4 (1: i32)), - @ignored_mut_loan(6, ⌊mut@7, proj_loans (s@5 : i32)⌋) + proj_loans (s@0 : &r@0 mut (&r@1 mut (i32))) } } -[Debug] end borrow: 3: + +- op: +1: i32 + +[Debug] expand_symbolic_value: s@0 : &r@0 mut (&r@1 mut (i32)) + - original context: # Ended regions: {} # 1 frame(s) @@ -147685,37 +133505,27 @@ copy *(px) Some (x) -> ⌊mut@0⌋ ; Some (px) -> ⌊mut@1⌋ ; Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@3 (⌊mut@5⌋) ; + Some (ppy) -> s@0 : &r@0 mut (&r@1 mut (i32)) ; Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> &mut@6 (&mut@7 (2: i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : i32 ; abs@0{parents={}}{regions={0}} { &mut@2 (@ignored_mut_borrow(None, 0: i32)), - ⌊mut@3, @ignored_mut_loan(4, proj_loans (s@2 : i32))⌋ + proj_loans (s@0 : &r@0 mut (&r@1 mut (i32))) } abs@1{parents={0}}{regions={1}} { @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - @ignored_mut_loan(3, ⌊mut@4, proj_loans (s@2 : i32)⌋) - } - abs@2{parents={}}{regions={2}} { - &mut@5 (@ignored_mut_borrow(None, 1: i32)), - ⌊mut@6, @ignored_mut_loan(7, proj_loans (s@5 : i32))⌋ - } - abs@3{parents={2}}{regions={3}} { - @ignored_mut_borrow(Some (5), &mut@4 (1: i32)), - @ignored_mut_loan(6, ⌊mut@7, proj_loans (s@5 : i32)⌋) + proj_loans (s@0 : &r@0 mut (&r@1 mut (i32))) } + None -> 1: i32 ; } -[Debug] end borrow: 3: found outer borrows/abs:(InterpreterBorrowsCore.InnerLoans (InterpreterBorrowsCore.Borrow 5)) -[Debug] end borrow: 5: -- original context: + +- new context: # Ended regions: {} # 1 frame(s) @@ -147725,36 +133535,28 @@ copy *(px) Some (x) -> ⌊mut@0⌋ ; Some (px) -> ⌊mut@1⌋ ; Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@3 (⌊mut@5⌋) ; + Some (ppy) -> &mut@3 (s@1 : &r@1 mut (i32)) ; Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> &mut@6 (&mut@7 (2: i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : i32 ; abs@0{parents={}}{regions={0}} { &mut@2 (@ignored_mut_borrow(None, 0: i32)), - ⌊mut@3, @ignored_mut_loan(4, proj_loans (s@2 : i32))⌋ + ⌊mut@3, proj_loans (s@1 : &r@1 mut (i32))⌋ } abs@1{parents={0}}{regions={1}} { @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - @ignored_mut_loan(3, ⌊mut@4, proj_loans (s@2 : i32)⌋) - } - abs@2{parents={}}{regions={2}} { - &mut@5 (@ignored_mut_borrow(None, 1: i32)), - ⌊mut@6, @ignored_mut_loan(7, proj_loans (s@5 : i32))⌋ - } - abs@3{parents={2}}{regions={3}} { - @ignored_mut_borrow(Some (5), &mut@4 (1: i32)), - @ignored_mut_loan(6, ⌊mut@7, proj_loans (s@5 : i32)⌋) + @ignored_mut_loan(3, proj_loans (s@1 : &r@1 mut (i32))) } + None -> 1: i32 ; } -[Debug] end borrow: 5: found outer borrows/abs:(InterpreterBorrowsCore.OuterAbs 2) -[Debug] end_abstraction: 2 + +[Debug] expand_symbolic_value: s@1 : &r@1 mut (i32) + - original context: # Ended regions: {} # 1 frame(s) @@ -147765,36 +133567,27 @@ copy *(px) Some (x) -> ⌊mut@0⌋ ; Some (px) -> ⌊mut@1⌋ ; Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@3 (⌊mut@5⌋) ; + Some (ppy) -> &mut@3 (s@1 : &r@1 mut (i32)) ; Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> &mut@6 (&mut@7 (2: i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : i32 ; abs@0{parents={}}{regions={0}} { &mut@2 (@ignored_mut_borrow(None, 0: i32)), - ⌊mut@3, @ignored_mut_loan(4, proj_loans (s@2 : i32))⌋ + ⌊mut@3, proj_loans (s@1 : &r@1 mut (i32))⌋ } abs@1{parents={0}}{regions={1}} { @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - @ignored_mut_loan(3, ⌊mut@4, proj_loans (s@2 : i32)⌋) - } - abs@2{parents={}}{regions={2}} { - &mut@5 (@ignored_mut_borrow(None, 1: i32)), - ⌊mut@6, @ignored_mut_loan(7, proj_loans (s@5 : i32))⌋ - } - abs@3{parents={2}}{regions={3}} { - @ignored_mut_borrow(Some (5), &mut@4 (1: i32)), - @ignored_mut_loan(6, ⌊mut@7, proj_loans (s@5 : i32)⌋) + @ignored_mut_loan(3, proj_loans (s@1 : &r@1 mut (i32))) } + None -> 1: i32 ; } -[Debug] end_abstraction: 2 -- context after parent abstractions ended: + +- new context: # Ended regions: {} # 1 frame(s) @@ -147804,16 +133597,14 @@ copy *(px) Some (x) -> ⌊mut@0⌋ ; Some (px) -> ⌊mut@1⌋ ; Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@3 (⌊mut@5⌋) ; + Some (ppy) -> &mut@3 (&mut@4 (s@2 : i32)) ; Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> &mut@6 (&mut@7 (2: i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : i32 ; abs@0{parents={}}{regions={0}} { &mut@2 (@ignored_mut_borrow(None, 0: i32)), ⌊mut@3, @ignored_mut_loan(4, proj_loans (s@2 : i32))⌋ @@ -147822,18 +133613,24 @@ copy *(px) @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), @ignored_mut_loan(3, ⌊mut@4, proj_loans (s@2 : i32)⌋) } - abs@2{parents={}}{regions={2}} { - &mut@5 (@ignored_mut_borrow(None, 1: i32)), - ⌊mut@6, @ignored_mut_loan(7, proj_loans (s@5 : i32))⌋ - } - abs@3{parents={2}}{regions={3}} { - @ignored_mut_borrow(Some (5), &mut@4 (1: i32)), - @ignored_mut_loan(6, ⌊mut@7, proj_loans (s@5 : i32)⌋) - } + None -> 1: i32 ; } -[Debug] end borrow: 6: -- original context: + +[Debug] +**About to evaluate statement**: [ + var@8 := copy *(px); + var@7 := move var@8 == 1: i32; + var@6 := ¬ move var@7; + assert(¬move var@6); + var@11 := copy x; + var@10 := move var@11 == 1: i32; + var@9 := ¬ move var@10; + assert(¬move var@9); + return +] + +**Context**: # Ended regions: {} # 1 frame(s) @@ -147843,16 +133640,14 @@ copy *(px) Some (x) -> ⌊mut@0⌋ ; Some (px) -> ⌊mut@1⌋ ; Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@3 (⌊mut@5⌋) ; + Some (ppy) -> &mut@3 (&mut@4 (1: i32)) ; Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> &mut@6 (&mut@7 (2: i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : i32 ; abs@0{parents={}}{regions={0}} { &mut@2 (@ignored_mut_borrow(None, 0: i32)), ⌊mut@3, @ignored_mut_loan(4, proj_loans (s@2 : i32))⌋ @@ -147861,20 +133656,16 @@ copy *(px) @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), @ignored_mut_loan(3, ⌊mut@4, proj_loans (s@2 : i32)⌋) } - abs@2{parents={}}{regions={2}} { - &mut@5 (@ignored_mut_borrow(None, 1: i32)), - ⌊mut@6, @ignored_mut_loan(7, proj_loans (s@5 : i32))⌋ - } - abs@3{parents={2}}{regions={3}} { - @ignored_mut_borrow(Some (5), &mut@4 (1: i32)), - @ignored_mut_loan(6, ⌊mut@7, proj_loans (s@5 : i32)⌋) - } } -[Debug] give_back: -- bid: 6 -- content: &mut@6 (&mut@7 (2: i32)) -- context: + + +[Debug] +**About to evaluate statement**: [ + var@8 := copy *(px) +] + +**Context**: # Ended regions: {} # 1 frame(s) @@ -147884,16 +133675,14 @@ copy *(px) Some (x) -> ⌊mut@0⌋ ; Some (px) -> ⌊mut@1⌋ ; Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@3 (⌊mut@5⌋) ; + Some (ppy) -> &mut@3 (&mut@4 (1: i32)) ; Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : i32 ; abs@0{parents={}}{regions={0}} { &mut@2 (@ignored_mut_borrow(None, 0: i32)), ⌊mut@3, @ignored_mut_loan(4, proj_loans (s@2 : i32))⌋ @@ -147902,21 +133691,12 @@ copy *(px) @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), @ignored_mut_loan(3, ⌊mut@4, proj_loans (s@2 : i32)⌋) } - abs@2{parents={}}{regions={2}} { - &mut@5 (@ignored_mut_borrow(None, 1: i32)), - ⌊mut@6, @ignored_mut_loan(7, proj_loans (s@5 : i32))⌋ - } - abs@3{parents={2}}{regions={3}} { - @ignored_mut_borrow(Some (5), &mut@4 (1: i32)), - @ignored_mut_loan(6, ⌊mut@7, proj_loans (s@5 : i32)⌋) - } } -[Debug] give_back_value: -- bid: 6 -- value: &mut@7 (2: i32) -- context: + +[Debug] eval_operand: +- ctx: # Ended regions: {} # 1 frame(s) @@ -147926,16 +133706,14 @@ copy *(px) Some (x) -> ⌊mut@0⌋ ; Some (px) -> ⌊mut@1⌋ ; Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@3 (⌊mut@5⌋) ; + Some (ppy) -> &mut@3 (&mut@4 (1: i32)) ; Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : i32 ; abs@0{parents={}}{regions={0}} { &mut@2 (@ignored_mut_borrow(None, 0: i32)), ⌊mut@3, @ignored_mut_loan(4, proj_loans (s@2 : i32))⌋ @@ -147944,19 +133722,14 @@ copy *(px) @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), @ignored_mut_loan(3, ⌊mut@4, proj_loans (s@2 : i32)⌋) } - abs@2{parents={}}{regions={2}} { - &mut@5 (@ignored_mut_borrow(None, 1: i32)), - ⌊mut@6, @ignored_mut_loan(7, proj_loans (s@5 : i32))⌋ - } - abs@3{parents={2}}{regions={3}} { - @ignored_mut_borrow(Some (5), &mut@4 (1: i32)), - @ignored_mut_loan(6, ⌊mut@7, proj_loans (s@5 : i32)⌋) - } } -[Debug] end_abstraction: 2 -- context after loans ended: +- op: +copy *(px) + +[Debug] end borrow: 1: +- original context: # Ended regions: {} # 1 frame(s) @@ -147966,16 +133739,14 @@ copy *(px) Some (x) -> ⌊mut@0⌋ ; Some (px) -> ⌊mut@1⌋ ; Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@3 (⌊mut@5⌋) ; + Some (ppy) -> &mut@3 (&mut@4 (1: i32)) ; Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : i32 ; abs@0{parents={}}{regions={0}} { &mut@2 (@ignored_mut_borrow(None, 0: i32)), ⌊mut@3, @ignored_mut_loan(4, proj_loans (s@2 : i32))⌋ @@ -147984,20 +133755,11 @@ copy *(px) @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), @ignored_mut_loan(3, ⌊mut@4, proj_loans (s@2 : i32)⌋) } - abs@2{parents={}}{regions={2}} { - &mut@5 (@ignored_mut_borrow(None, 1: i32)), - @ended_mut_loan{ given_back=@ignored_mut_borrow(None, 2: i32); child=@ignored_mut_loan(7, proj_loans (s@5 : i32)) } - } - abs@3{parents={2}}{regions={3}} { - @ignored_mut_borrow(Some (5), &mut@4 (1: i32)), - @ended_ignored_mut_loan{ given_back=&mut@7 (2: i32); child: ⌊mut@7, proj_loans (s@5 : i32)⌋} - } } -[Debug] give_back_value: -- bid: 5 -- value: s@6 : &r@3 mut (i32) -- context: +[Debug] end borrow: 1: found outer borrows/abs:(InterpreterBorrowsCore.InnerLoans (InterpreterBorrowsCore.Borrow 2)) +[Debug] end borrow: 2: +- original context: # Ended regions: {} # 1 frame(s) @@ -148007,16 +133769,14 @@ copy *(px) Some (x) -> ⌊mut@0⌋ ; Some (px) -> ⌊mut@1⌋ ; Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@3 (⌊mut@5⌋) ; + Some (ppy) -> &mut@3 (&mut@4 (1: i32)) ; Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : i32 ; abs@0{parents={}}{regions={0}} { &mut@2 (@ignored_mut_borrow(None, 0: i32)), ⌊mut@3, @ignored_mut_loan(4, proj_loans (s@2 : i32))⌋ @@ -148025,18 +133785,10 @@ copy *(px) @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), @ignored_mut_loan(3, ⌊mut@4, proj_loans (s@2 : i32)⌋) } - abs@2{parents={}}{regions={2}} { - ⊥ : &r@2 mut (&r@3 mut (i32)), - @ended_mut_loan{ given_back=@ignored_mut_borrow(None, 2: i32); child=@ignored_mut_loan(7, proj_loans (s@5 : i32)) } - } - abs@3{parents={2}}{regions={3}} { - @ignored_mut_borrow(Some (5), &mut@4 (1: i32)), - @ended_ignored_mut_loan{ given_back=&mut@7 (2: i32); child: ⌊mut@7, proj_loans (s@5 : i32)⌋} - } } - -[Debug] end_abstraction: 2 +[Debug] end borrow: 2: found outer borrows/abs:(InterpreterBorrowsCore.OuterAbs 0) +[Debug] end_abstraction: 0 - original context: # Ended regions: {} # 1 frame(s) @@ -148047,16 +133799,14 @@ copy *(px) Some (x) -> ⌊mut@0⌋ ; Some (px) -> ⌊mut@1⌋ ; Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@3 (⌊mut@5⌋) ; + Some (ppy) -> &mut@3 (&mut@4 (1: i32)) ; Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> &mut@6 (&mut@7 (2: i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : i32 ; abs@0{parents={}}{regions={0}} { &mut@2 (@ignored_mut_borrow(None, 0: i32)), ⌊mut@3, @ignored_mut_loan(4, proj_loans (s@2 : i32))⌋ @@ -148065,19 +133815,11 @@ copy *(px) @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), @ignored_mut_loan(3, ⌊mut@4, proj_loans (s@2 : i32)⌋) } - abs@2{parents={}}{regions={2}} { - &mut@5 (@ignored_mut_borrow(None, 1: i32)), - ⌊mut@6, @ignored_mut_loan(7, proj_loans (s@5 : i32))⌋ - } - abs@3{parents={2}}{regions={3}} { - @ignored_mut_borrow(Some (5), &mut@4 (1: i32)), - @ignored_mut_loan(6, ⌊mut@7, proj_loans (s@5 : i32)⌋) - } } - -- new context: -# Ended regions: {2} +[Debug] end_abstraction: 0 +- context after parent abstractions ended: +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -148086,16 +133828,14 @@ copy *(px) Some (x) -> ⌊mut@0⌋ ; Some (px) -> ⌊mut@1⌋ ; Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@3 (s@6 : &r@3 mut (i32)) ; + Some (ppy) -> &mut@3 (&mut@4 (1: i32)) ; Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : i32 ; abs@0{parents={}}{regions={0}} { &mut@2 (@ignored_mut_borrow(None, 0: i32)), ⌊mut@3, @ignored_mut_loan(4, proj_loans (s@2 : i32))⌋ @@ -148104,15 +133844,11 @@ copy *(px) @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), @ignored_mut_loan(3, ⌊mut@4, proj_loans (s@2 : i32)⌋) } - abs@3{parents={}}{regions={3}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=proj_loans (s@6 : &r@3 mut (i32)); child=&mut@4 (1: i32)), - @ended_ignored_mut_loan{ given_back=&mut@7 (2: i32); child: ⌊mut@7, proj_loans (s@5 : i32)⌋} - } } [Debug] end borrow: 3: - original context: -# Ended regions: {2} +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -148121,16 +133857,14 @@ copy *(px) Some (x) -> ⌊mut@0⌋ ; Some (px) -> ⌊mut@1⌋ ; Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@3 (s@6 : &r@3 mut (i32)) ; + Some (ppy) -> &mut@3 (&mut@4 (1: i32)) ; Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : i32 ; abs@0{parents={}}{regions={0}} { &mut@2 (@ignored_mut_borrow(None, 0: i32)), ⌊mut@3, @ignored_mut_loan(4, proj_loans (s@2 : i32))⌋ @@ -148139,17 +133873,13 @@ copy *(px) @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), @ignored_mut_loan(3, ⌊mut@4, proj_loans (s@2 : i32)⌋) } - abs@3{parents={}}{regions={3}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=proj_loans (s@6 : &r@3 mut (i32)); child=&mut@4 (1: i32)), - @ended_ignored_mut_loan{ given_back=&mut@7 (2: i32); child: ⌊mut@7, proj_loans (s@5 : i32)⌋} - } } [Debug] give_back: - bid: 3 -- content: &mut@3 (s@6 : &r@3 mut (i32)) +- content: &mut@3 (&mut@4 (1: i32)) - context: -# Ended regions: {2} +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -148160,14 +133890,12 @@ copy *(px) Some (ppx) -> &mut@1 (⌊mut@2⌋) ; Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : i32 ; abs@0{parents={}}{regions={0}} { &mut@2 (@ignored_mut_borrow(None, 0: i32)), ⌊mut@3, @ignored_mut_loan(4, proj_loans (s@2 : i32))⌋ @@ -148176,18 +133904,14 @@ copy *(px) @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), @ignored_mut_loan(3, ⌊mut@4, proj_loans (s@2 : i32)⌋) } - abs@3{parents={}}{regions={3}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=proj_loans (s@6 : &r@3 mut (i32)); child=&mut@4 (1: i32)), - @ended_ignored_mut_loan{ given_back=&mut@7 (2: i32); child: ⌊mut@7, proj_loans (s@5 : i32)⌋} - } } [Debug] give_back_value: - bid: 3 -- value: s@6 : &r@3 mut (i32) +- value: &mut@4 (1: i32) - context: -# Ended regions: {2} +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -148198,14 +133922,12 @@ copy *(px) Some (ppx) -> &mut@1 (⌊mut@2⌋) ; Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : i32 ; abs@0{parents={}}{regions={0}} { &mut@2 (@ignored_mut_borrow(None, 0: i32)), ⌊mut@3, @ignored_mut_loan(4, proj_loans (s@2 : i32))⌋ @@ -148214,16 +133936,12 @@ copy *(px) @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), @ignored_mut_loan(3, ⌊mut@4, proj_loans (s@2 : i32)⌋) } - abs@3{parents={}}{regions={3}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=proj_loans (s@6 : &r@3 mut (i32)); child=&mut@4 (1: i32)), - @ended_ignored_mut_loan{ given_back=&mut@7 (2: i32); child: ⌊mut@7, proj_loans (s@5 : i32)⌋} - } } [Debug] end_abstraction: 0 - context after loans ended: -# Ended regions: {2} +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -148234,33 +133952,27 @@ copy *(px) Some (ppx) -> &mut@1 (⌊mut@2⌋) ; Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : i32 ; abs@0{parents={}}{regions={0}} { &mut@2 (@ignored_mut_borrow(None, 0: i32)), - @ended_mut_loan{ given_back=proj_borrows (s@6 : &r@3 mut (i32) <: &r@1 mut (i32)); child=@ignored_mut_loan(4, proj_loans (s@2 : i32)) } + @ended_mut_loan{ given_back=@ignored_mut_borrow(None, 1: i32); child=@ignored_mut_loan(4, proj_loans (s@2 : i32)) } } abs@1{parents={0}}{regions={1}} { @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=proj_borrows (s@6 : &r@3 mut (i32) <: &r@1 mut (i32)); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} - } - abs@3{parents={}}{regions={3}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=proj_loans (s@6 : &r@3 mut (i32)); child=&mut@4 (1: i32)), - @ended_ignored_mut_loan{ given_back=&mut@7 (2: i32); child: ⌊mut@7, proj_loans (s@5 : i32)⌋} + @ended_ignored_mut_loan{ given_back=&mut@4 (1: i32); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} } } [Debug] give_back_value: - bid: 2 -- value: s@7 : &r@1 mut (i32) +- value: s@3 : &r@1 mut (i32) - context: -# Ended regions: {2} +# Ended regions: {} # 1 frame(s) # Frame 0: @@ -148271,25 +133983,19 @@ copy *(px) Some (ppx) -> &mut@1 (⌊mut@2⌋) ; Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : i32 ; abs@0{parents={}}{regions={0}} { ⊥ : &r@0 mut (&r@1 mut (i32)), - @ended_mut_loan{ given_back=proj_borrows (s@6 : &r@3 mut (i32) <: &r@1 mut (i32)); child=@ignored_mut_loan(4, proj_loans (s@2 : i32)) } + @ended_mut_loan{ given_back=@ignored_mut_borrow(None, 1: i32); child=@ignored_mut_loan(4, proj_loans (s@2 : i32)) } } abs@1{parents={0}}{regions={1}} { @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=proj_borrows (s@6 : &r@3 mut (i32) <: &r@1 mut (i32)); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} - } - abs@3{parents={}}{regions={3}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=proj_loans (s@6 : &r@3 mut (i32)); child=&mut@4 (1: i32)), - @ended_ignored_mut_loan{ given_back=&mut@7 (2: i32); child: ⌊mut@7, proj_loans (s@5 : i32)⌋} + @ended_ignored_mut_loan{ given_back=&mut@4 (1: i32); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} } } @@ -148305,16 +134011,14 @@ copy *(px) Some (x) -> ⌊mut@0⌋ ; Some (px) -> ⌊mut@1⌋ ; Some (ppx) -> &mut@1 (⌊mut@2⌋) ; - Some (ppy) -> &mut@3 (⌊mut@5⌋) ; + Some (ppy) -> &mut@3 (&mut@4 (1: i32)) ; Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> &mut@6 (&mut@7 (2: i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : i32 ; abs@0{parents={}}{regions={0}} { &mut@2 (@ignored_mut_borrow(None, 0: i32)), ⌊mut@3, @ignored_mut_loan(4, proj_loans (s@2 : i32))⌋ @@ -148323,19 +134027,11 @@ copy *(px) @ignored_mut_borrow(Some (2), &mut@0 (0: i32)), @ignored_mut_loan(3, ⌊mut@4, proj_loans (s@2 : i32)⌋) } - abs@2{parents={}}{regions={2}} { - &mut@5 (@ignored_mut_borrow(None, 1: i32)), - ⌊mut@6, @ignored_mut_loan(7, proj_loans (s@5 : i32))⌋ - } - abs@3{parents={2}}{regions={3}} { - @ignored_mut_borrow(Some (5), &mut@4 (1: i32)), - @ignored_mut_loan(6, ⌊mut@7, proj_loans (s@5 : i32)⌋) - } } - new context: -# Ended regions: {0, 2} +# Ended regions: {0} # 1 frame(s) # Frame 0: @@ -148343,30 +134039,24 @@ copy *(px) Some (var@0) -> ⊥ : () ; Some (x) -> ⌊mut@0⌋ ; Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (s@7 : &r@1 mut (i32)) ; + Some (ppx) -> &mut@1 (s@3 : &r@1 mut (i32)) ; Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : i32 ; abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=proj_loans (s@7 : &r@1 mut (i32)); child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=proj_borrows (s@6 : &r@3 mut (i32) <: &r@1 mut (i32)); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} - } - abs@3{parents={}}{regions={3}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=proj_loans (s@6 : &r@3 mut (i32)); child=&mut@4 (1: i32)), - @ended_ignored_mut_loan{ given_back=&mut@7 (2: i32); child: ⌊mut@7, proj_loans (s@5 : i32)⌋} + @ended_ignored_mut_borrow{ given_back_loans_proj=proj_loans (s@3 : &r@1 mut (i32)); child=&mut@0 (0: i32)), + @ended_ignored_mut_loan{ given_back=&mut@4 (1: i32); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} } } [Debug] end borrow: 1: - original context: -# Ended regions: {0, 2} +# Ended regions: {0} # 1 frame(s) # Frame 0: @@ -148374,32 +134064,26 @@ copy *(px) Some (var@0) -> ⊥ : () ; Some (x) -> ⌊mut@0⌋ ; Some (px) -> ⌊mut@1⌋ ; - Some (ppx) -> &mut@1 (s@7 : &r@1 mut (i32)) ; + Some (ppx) -> &mut@1 (s@3 : &r@1 mut (i32)) ; Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : i32 ; abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=proj_loans (s@7 : &r@1 mut (i32)); child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=proj_borrows (s@6 : &r@3 mut (i32) <: &r@1 mut (i32)); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} - } - abs@3{parents={}}{regions={3}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=proj_loans (s@6 : &r@3 mut (i32)); child=&mut@4 (1: i32)), - @ended_ignored_mut_loan{ given_back=&mut@7 (2: i32); child: ⌊mut@7, proj_loans (s@5 : i32)⌋} + @ended_ignored_mut_borrow{ given_back_loans_proj=proj_loans (s@3 : &r@1 mut (i32)); child=&mut@0 (0: i32)), + @ended_ignored_mut_loan{ given_back=&mut@4 (1: i32); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} } } [Debug] give_back: - bid: 1 -- content: &mut@1 (s@7 : &r@1 mut (i32)) +- content: &mut@1 (s@3 : &r@1 mut (i32)) - context: -# Ended regions: {0, 2} +# Ended regions: {0} # 1 frame(s) # Frame 0: @@ -148410,30 +134094,24 @@ copy *(px) Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : i32 ; abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=proj_loans (s@7 : &r@1 mut (i32)); child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=proj_borrows (s@6 : &r@3 mut (i32) <: &r@1 mut (i32)); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} - } - abs@3{parents={}}{regions={3}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=proj_loans (s@6 : &r@3 mut (i32)); child=&mut@4 (1: i32)), - @ended_ignored_mut_loan{ given_back=&mut@7 (2: i32); child: ⌊mut@7, proj_loans (s@5 : i32)⌋} + @ended_ignored_mut_borrow{ given_back_loans_proj=proj_loans (s@3 : &r@1 mut (i32)); child=&mut@0 (0: i32)), + @ended_ignored_mut_loan{ given_back=&mut@4 (1: i32); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} } } [Debug] give_back_value: - bid: 1 -- value: s@7 : &r@1 mut (i32) +- value: s@3 : &r@1 mut (i32) - context: -# Ended regions: {0, 2} +# Ended regions: {0} # 1 frame(s) # Frame 0: @@ -148444,128 +134122,104 @@ copy *(px) Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : i32 ; abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=proj_loans (s@7 : &r@1 mut (i32)); child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=proj_borrows (s@6 : &r@3 mut (i32) <: &r@1 mut (i32)); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} - } - abs@3{parents={}}{regions={3}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=proj_loans (s@6 : &r@3 mut (i32)); child=&mut@4 (1: i32)), - @ended_ignored_mut_loan{ given_back=&mut@7 (2: i32); child: ⌊mut@7, proj_loans (s@5 : i32)⌋} + @ended_ignored_mut_borrow{ given_back_loans_proj=proj_loans (s@3 : &r@1 mut (i32)); child=&mut@0 (0: i32)), + @ended_ignored_mut_loan{ given_back=&mut@4 (1: i32); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} } } -[Debug] expand_symbolic_value: s@7 : &r@1 mut (i32) +[Debug] expand_symbolic_value: s@3 : &r@1 mut (i32) - original context: -# Ended regions: {0, 2} +# Ended regions: {0} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; Some (x) -> ⌊mut@0⌋ ; - Some (px) -> s@7 : &r@1 mut (i32) ; + Some (px) -> s@3 : &r@1 mut (i32) ; Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : i32 ; abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=proj_loans (s@7 : &r@1 mut (i32)); child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=proj_borrows (s@6 : &r@3 mut (i32) <: &r@1 mut (i32)); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} - } - abs@3{parents={}}{regions={3}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=proj_loans (s@6 : &r@3 mut (i32)); child=&mut@4 (1: i32)), - @ended_ignored_mut_loan{ given_back=&mut@7 (2: i32); child: ⌊mut@7, proj_loans (s@5 : i32)⌋} + @ended_ignored_mut_borrow{ given_back_loans_proj=proj_loans (s@3 : &r@1 mut (i32)); child=&mut@0 (0: i32)), + @ended_ignored_mut_loan{ given_back=&mut@4 (1: i32); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} } } - new context: -# Ended regions: {0, 2} +# Ended regions: {0} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@8 (s@8 : i32) ; + Some (px) -> &mut@5 (s@4 : i32) ; Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : i32 ; abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@8, proj_loans (s@8 : i32)⌋; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=proj_borrows (s@6 : &r@3 mut (i32) <: &r@1 mut (i32)); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} - } - abs@3{parents={}}{regions={3}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=proj_loans (s@6 : &r@3 mut (i32)); child=&mut@4 (1: i32)), - @ended_ignored_mut_loan{ given_back=&mut@7 (2: i32); child: ⌊mut@7, proj_loans (s@5 : i32)⌋} + @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@5, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)), + @ended_ignored_mut_loan{ given_back=&mut@4 (1: i32); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} } } [Debug] **About to evaluate statement**: [ - var@9 := move var@10 == 2: i32; - var@8 := ¬ move var@9; - assert(¬move var@8); - var@13 := copy x; - var@12 := move var@13 == 2: i32; - var@11 := ¬ move var@12; - assert(¬move var@11); + var@7 := move var@8 == 1: i32; + var@6 := ¬ move var@7; + assert(¬move var@6); + var@11 := copy x; + var@10 := move var@11 == 1: i32; + var@9 := ¬ move var@10; + assert(¬move var@9); return ] **Context**: -# Ended regions: {0, 2} +# Ended regions: {0} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@8 (s@8 : i32) ; + Some (px) -> &mut@5 (s@4 : i32) ; Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> s@4 : i32 ; Some (var@9) -> ⊥ : bool ; - Some (var@10) -> s@8 : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : i32 ; abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@8, proj_loans (s@8 : i32)⌋; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=proj_borrows (s@6 : &r@3 mut (i32) <: &r@1 mut (i32)); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} - } - abs@3{parents={}}{regions={3}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=proj_loans (s@6 : &r@3 mut (i32)); child=&mut@4 (1: i32)), - @ended_ignored_mut_loan{ given_back=&mut@7 (2: i32); child: ⌊mut@7, proj_loans (s@5 : i32)⌋} + @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@5, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)), + @ended_ignored_mut_loan{ given_back=&mut@4 (1: i32); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} } } @@ -148573,36 +134227,30 @@ copy *(px) [Debug] **About to evaluate statement**: [ - var@9 := move var@10 == 2: i32 + var@7 := move var@8 == 1: i32 ] **Context**: -# Ended regions: {0, 2} +# Ended regions: {0} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@8 (s@8 : i32) ; + Some (px) -> &mut@5 (s@4 : i32) ; Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> s@4 : i32 ; Some (var@9) -> ⊥ : bool ; - Some (var@10) -> s@8 : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : i32 ; abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@8, proj_loans (s@8 : i32)⌋; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=proj_borrows (s@6 : &r@3 mut (i32) <: &r@1 mut (i32)); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} - } - abs@3{parents={}}{regions={3}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=proj_loans (s@6 : &r@3 mut (i32)); child=&mut@4 (1: i32)), - @ended_ignored_mut_loan{ given_back=&mut@7 (2: i32); child: ⌊mut@7, proj_loans (s@5 : i32)⌋} + @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@5, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)), + @ended_ignored_mut_loan{ given_back=&mut@4 (1: i32); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} } } @@ -148610,112 +134258,94 @@ copy *(px) [Debug] eval_operand: - ctx: -# Ended regions: {0, 2} +# Ended regions: {0} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@8 (s@8 : i32) ; + Some (px) -> &mut@5 (s@4 : i32) ; Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> s@4 : i32 ; Some (var@9) -> ⊥ : bool ; - Some (var@10) -> s@8 : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : i32 ; abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@8, proj_loans (s@8 : i32)⌋; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=proj_borrows (s@6 : &r@3 mut (i32) <: &r@1 mut (i32)); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} - } - abs@3{parents={}}{regions={3}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=proj_loans (s@6 : &r@3 mut (i32)); child=&mut@4 (1: i32)), - @ended_ignored_mut_loan{ given_back=&mut@7 (2: i32); child: ⌊mut@7, proj_loans (s@5 : i32)⌋} + @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@5, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)), + @ended_ignored_mut_loan{ given_back=&mut@4 (1: i32); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} } } - op: -move var@10 +move var@8 [Debug] eval_operand: - ctx: -# Ended regions: {0, 2} +# Ended regions: {0} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@8 (s@8 : i32) ; + Some (px) -> &mut@5 (s@4 : i32) ; Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : i32 ; abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@8, proj_loans (s@8 : i32)⌋; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=proj_borrows (s@6 : &r@3 mut (i32) <: &r@1 mut (i32)); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} - } - abs@3{parents={}}{regions={3}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=proj_loans (s@6 : &r@3 mut (i32)); child=&mut@4 (1: i32)), - @ended_ignored_mut_loan{ given_back=&mut@7 (2: i32); child: ⌊mut@7, proj_loans (s@5 : i32)⌋} + @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@5, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)), + @ended_ignored_mut_loan{ given_back=&mut@4 (1: i32); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} } } - op: -2: i32 +1: i32 [Debug] **About to evaluate statement**: [ - var@8 := ¬ move var@9; - assert(¬move var@8); - var@13 := copy x; - var@12 := move var@13 == 2: i32; - var@11 := ¬ move var@12; - assert(¬move var@11); + var@6 := ¬ move var@7; + assert(¬move var@6); + var@11 := copy x; + var@10 := move var@11 == 1: i32; + var@9 := ¬ move var@10; + assert(¬move var@9); return ] **Context**: -# Ended regions: {0, 2} +# Ended regions: {0} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@8 (s@8 : i32) ; + Some (px) -> &mut@5 (s@4 : i32) ; Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> s@9 : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> s@5 : bool ; + Some (var@8) -> ⊥ : i32 ; + Some (var@9) -> ⊥ : bool ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : i32 ; abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@8, proj_loans (s@8 : i32)⌋; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=proj_borrows (s@6 : &r@3 mut (i32) <: &r@1 mut (i32)); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} - } - abs@3{parents={}}{regions={3}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=proj_loans (s@6 : &r@3 mut (i32)); child=&mut@4 (1: i32)), - @ended_ignored_mut_loan{ given_back=&mut@7 (2: i32); child: ⌊mut@7, proj_loans (s@5 : i32)⌋} + @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@5, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)), + @ended_ignored_mut_loan{ given_back=&mut@4 (1: i32); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} } } @@ -148723,36 +134353,30 @@ move var@10 [Debug] **About to evaluate statement**: [ - var@8 := ¬ move var@9 + var@6 := ¬ move var@7 ] **Context**: -# Ended regions: {0, 2} +# Ended regions: {0} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@8 (s@8 : i32) ; + Some (px) -> &mut@5 (s@4 : i32) ; Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> s@9 : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> s@5 : bool ; + Some (var@8) -> ⊥ : i32 ; + Some (var@9) -> ⊥ : bool ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : i32 ; abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@8, proj_loans (s@8 : i32)⌋; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=proj_borrows (s@6 : &r@3 mut (i32) <: &r@1 mut (i32)); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} - } - abs@3{parents={}}{regions={3}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=proj_loans (s@6 : &r@3 mut (i32)); child=&mut@4 (1: i32)), - @ended_ignored_mut_loan{ given_back=&mut@7 (2: i32); child: ⌊mut@7, proj_loans (s@5 : i32)⌋} + @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@5, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)), + @ended_ignored_mut_loan{ given_back=&mut@4 (1: i32); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} } } @@ -148760,76 +134384,64 @@ move var@10 [Debug] eval_operand: - ctx: -# Ended regions: {0, 2} +# Ended regions: {0} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@8 (s@8 : i32) ; + Some (px) -> &mut@5 (s@4 : i32) ; Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> s@9 : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> s@5 : bool ; + Some (var@8) -> ⊥ : i32 ; + Some (var@9) -> ⊥ : bool ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : i32 ; abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@8, proj_loans (s@8 : i32)⌋; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=proj_borrows (s@6 : &r@3 mut (i32) <: &r@1 mut (i32)); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} - } - abs@3{parents={}}{regions={3}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=proj_loans (s@6 : &r@3 mut (i32)); child=&mut@4 (1: i32)), - @ended_ignored_mut_loan{ given_back=&mut@7 (2: i32); child: ⌊mut@7, proj_loans (s@5 : i32)⌋} + @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@5, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)), + @ended_ignored_mut_loan{ given_back=&mut@4 (1: i32); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} } } - op: -move var@9 +move var@7 [Debug] **About to evaluate statement**: [ - assert(¬move var@8); - var@13 := copy x; - var@12 := move var@13 == 2: i32; - var@11 := ¬ move var@12; - assert(¬move var@11); + assert(¬move var@6); + var@11 := copy x; + var@10 := move var@11 == 1: i32; + var@9 := ¬ move var@10; + assert(¬move var@9); return ] **Context**: -# Ended regions: {0, 2} +# Ended regions: {0} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@8 (s@8 : i32) ; + Some (px) -> &mut@5 (s@4 : i32) ; Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> s@10 : bool ; + Some (var@6) -> s@6 : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : i32 ; abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@8, proj_loans (s@8 : i32)⌋; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=proj_borrows (s@6 : &r@3 mut (i32) <: &r@1 mut (i32)); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} - } - abs@3{parents={}}{regions={3}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=proj_loans (s@6 : &r@3 mut (i32)); child=&mut@4 (1: i32)), - @ended_ignored_mut_loan{ given_back=&mut@7 (2: i32); child: ⌊mut@7, proj_loans (s@5 : i32)⌋} + @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@5, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)), + @ended_ignored_mut_loan{ given_back=&mut@4 (1: i32); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} } } @@ -148837,36 +134449,30 @@ move var@9 [Debug] **About to evaluate statement**: [ - assert(¬move var@8) + assert(¬move var@6) ] **Context**: -# Ended regions: {0, 2} +# Ended regions: {0} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@8 (s@8 : i32) ; + Some (px) -> &mut@5 (s@4 : i32) ; Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> s@10 : bool ; + Some (var@6) -> s@6 : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : i32 ; abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@8, proj_loans (s@8 : i32)⌋; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=proj_borrows (s@6 : &r@3 mut (i32) <: &r@1 mut (i32)); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} - } - abs@3{parents={}}{regions={3}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=proj_loans (s@6 : &r@3 mut (i32)); child=&mut@4 (1: i32)), - @ended_ignored_mut_loan{ given_back=&mut@7 (2: i32); child: ⌊mut@7, proj_loans (s@5 : i32)⌋} + @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@5, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)), + @ended_ignored_mut_loan{ given_back=&mut@4 (1: i32); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} } } @@ -148874,75 +134480,63 @@ move var@9 [Debug] eval_operand: - ctx: -# Ended regions: {0, 2} +# Ended regions: {0} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@8 (s@8 : i32) ; + Some (px) -> &mut@5 (s@4 : i32) ; Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> true ; + Some (var@6) -> true ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : i32 ; abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@8, proj_loans (s@8 : i32)⌋; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=proj_borrows (s@6 : &r@3 mut (i32) <: &r@1 mut (i32)); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} - } - abs@3{parents={}}{regions={3}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=proj_loans (s@6 : &r@3 mut (i32)); child=&mut@4 (1: i32)), - @ended_ignored_mut_loan{ given_back=&mut@7 (2: i32); child: ⌊mut@7, proj_loans (s@5 : i32)⌋} + @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@5, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)), + @ended_ignored_mut_loan{ given_back=&mut@4 (1: i32); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} } } - op: -move var@8 +move var@6 [Debug] **About to evaluate statement**: [ - var@13 := copy x; - var@12 := move var@13 == 2: i32; - var@11 := ¬ move var@12; - assert(¬move var@11); + var@11 := copy x; + var@10 := move var@11 == 1: i32; + var@9 := ¬ move var@10; + assert(¬move var@9); return ] **Context**: -# Ended regions: {0, 2} +# Ended regions: {0} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@8 (s@8 : i32) ; + Some (px) -> &mut@5 (s@4 : i32) ; Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : i32 ; abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@8, proj_loans (s@8 : i32)⌋; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=proj_borrows (s@6 : &r@3 mut (i32) <: &r@1 mut (i32)); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} - } - abs@3{parents={}}{regions={3}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=proj_loans (s@6 : &r@3 mut (i32)); child=&mut@4 (1: i32)), - @ended_ignored_mut_loan{ given_back=&mut@7 (2: i32); child: ⌊mut@7, proj_loans (s@5 : i32)⌋} + @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@5, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)), + @ended_ignored_mut_loan{ given_back=&mut@4 (1: i32); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} } } @@ -148950,36 +134544,30 @@ move var@8 [Debug] **About to evaluate statement**: [ - var@13 := copy x + var@11 := copy x ] **Context**: -# Ended regions: {0, 2} +# Ended regions: {0} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@8 (s@8 : i32) ; + Some (px) -> &mut@5 (s@4 : i32) ; Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : i32 ; abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@8, proj_loans (s@8 : i32)⌋; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=proj_borrows (s@6 : &r@3 mut (i32) <: &r@1 mut (i32)); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} - } - abs@3{parents={}}{regions={3}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=proj_loans (s@6 : &r@3 mut (i32)); child=&mut@4 (1: i32)), - @ended_ignored_mut_loan{ given_back=&mut@7 (2: i32); child: ⌊mut@7, proj_loans (s@5 : i32)⌋} + @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@5, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)), + @ended_ignored_mut_loan{ given_back=&mut@4 (1: i32); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} } } @@ -148987,32 +134575,26 @@ move var@8 [Debug] eval_operand: - ctx: -# Ended regions: {0, 2} +# Ended regions: {0} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@8 (s@8 : i32) ; + Some (px) -> &mut@5 (s@4 : i32) ; Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : i32 ; abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@8, proj_loans (s@8 : i32)⌋; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=proj_borrows (s@6 : &r@3 mut (i32) <: &r@1 mut (i32)); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} - } - abs@3{parents={}}{regions={3}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=proj_loans (s@6 : &r@3 mut (i32)); child=&mut@4 (1: i32)), - @ended_ignored_mut_loan{ given_back=&mut@7 (2: i32); child: ⌊mut@7, proj_loans (s@5 : i32)⌋} + @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@5, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)), + @ended_ignored_mut_loan{ given_back=&mut@4 (1: i32); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} } } @@ -149022,134 +134604,110 @@ copy x [Debug] end borrow: 0: - original context: -# Ended regions: {0, 2} +# Ended regions: {0} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@8 (s@8 : i32) ; + Some (px) -> &mut@5 (s@4 : i32) ; Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : i32 ; abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@8, proj_loans (s@8 : i32)⌋; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=proj_borrows (s@6 : &r@3 mut (i32) <: &r@1 mut (i32)); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} - } - abs@3{parents={}}{regions={3}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=proj_loans (s@6 : &r@3 mut (i32)); child=&mut@4 (1: i32)), - @ended_ignored_mut_loan{ given_back=&mut@7 (2: i32); child: ⌊mut@7, proj_loans (s@5 : i32)⌋} + @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@5, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)), + @ended_ignored_mut_loan{ given_back=&mut@4 (1: i32); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} } } [Debug] end borrow: 0: found outer borrows/abs:(InterpreterBorrowsCore.OuterAbs 1) [Debug] end_abstraction: 1 - original context: -# Ended regions: {0, 2} +# Ended regions: {0} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@8 (s@8 : i32) ; + Some (px) -> &mut@5 (s@4 : i32) ; Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : i32 ; abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@8, proj_loans (s@8 : i32)⌋; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=proj_borrows (s@6 : &r@3 mut (i32) <: &r@1 mut (i32)); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} - } - abs@3{parents={}}{regions={3}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=proj_loans (s@6 : &r@3 mut (i32)); child=&mut@4 (1: i32)), - @ended_ignored_mut_loan{ given_back=&mut@7 (2: i32); child: ⌊mut@7, proj_loans (s@5 : i32)⌋} + @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@5, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)), + @ended_ignored_mut_loan{ given_back=&mut@4 (1: i32); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} } } [Debug] end_abstraction: 1 - context after parent abstractions ended: -# Ended regions: {0, 2} +# Ended regions: {0} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@8 (s@8 : i32) ; + Some (px) -> &mut@5 (s@4 : i32) ; Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : i32 ; abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@8, proj_loans (s@8 : i32)⌋; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=proj_borrows (s@6 : &r@3 mut (i32) <: &r@1 mut (i32)); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} - } - abs@3{parents={}}{regions={3}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=proj_loans (s@6 : &r@3 mut (i32)); child=&mut@4 (1: i32)), - @ended_ignored_mut_loan{ given_back=&mut@7 (2: i32); child: ⌊mut@7, proj_loans (s@5 : i32)⌋} + @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@5, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)), + @ended_ignored_mut_loan{ given_back=&mut@4 (1: i32); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} } } -[Debug] end borrow: 8: +[Debug] end borrow: 5: - original context: -# Ended regions: {0, 2} +# Ended regions: {0} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@8 (s@8 : i32) ; + Some (px) -> &mut@5 (s@4 : i32) ; Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : i32 ; abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@8, proj_loans (s@8 : i32)⌋; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=proj_borrows (s@6 : &r@3 mut (i32) <: &r@1 mut (i32)); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} - } - abs@3{parents={}}{regions={3}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=proj_loans (s@6 : &r@3 mut (i32)); child=&mut@4 (1: i32)), - @ended_ignored_mut_loan{ given_back=&mut@7 (2: i32); child: ⌊mut@7, proj_loans (s@5 : i32)⌋} + @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@5, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)), + @ended_ignored_mut_loan{ given_back=&mut@4 (1: i32); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} } } [Debug] give_back: -- bid: 8 -- content: &mut@8 (s@8 : i32) +- bid: 5 +- content: &mut@5 (s@4 : i32) - context: -# Ended regions: {0, 2} +# Ended regions: {0} # 1 frame(s) # Frame 0: @@ -149160,30 +134718,24 @@ copy x Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : i32 ; abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@8, proj_loans (s@8 : i32)⌋; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=proj_borrows (s@6 : &r@3 mut (i32) <: &r@1 mut (i32)); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} - } - abs@3{parents={}}{regions={3}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=proj_loans (s@6 : &r@3 mut (i32)); child=&mut@4 (1: i32)), - @ended_ignored_mut_loan{ given_back=&mut@7 (2: i32); child: ⌊mut@7, proj_loans (s@5 : i32)⌋} + @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@5, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)), + @ended_ignored_mut_loan{ given_back=&mut@4 (1: i32); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} } } [Debug] give_back_value: -- bid: 8 -- value: s@8 : i32 +- bid: 5 +- value: s@4 : i32 - context: -# Ended regions: {0, 2} +# Ended regions: {0} # 1 frame(s) # Frame 0: @@ -149194,122 +134746,22 @@ copy x Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : i32 ; abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@8, proj_loans (s@8 : i32)⌋; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=proj_borrows (s@6 : &r@3 mut (i32) <: &r@1 mut (i32)); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} - } - abs@3{parents={}}{regions={3}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=proj_loans (s@6 : &r@3 mut (i32)); child=&mut@4 (1: i32)), - @ended_ignored_mut_loan{ given_back=&mut@7 (2: i32); child: ⌊mut@7, proj_loans (s@5 : i32)⌋} + @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@5, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)), + @ended_ignored_mut_loan{ given_back=&mut@4 (1: i32); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} } } [Debug] end borrow: 4: - original context: -# Ended regions: {0, 2} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=@ended_mut_loan{ given_back=proj_borrows (s@8 : i32 <: i32); child=proj_loans (s@8 : i32) }; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=proj_borrows (s@6 : &r@3 mut (i32) <: &r@1 mut (i32)); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} - } - abs@3{parents={}}{regions={3}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=proj_loans (s@6 : &r@3 mut (i32)); child=&mut@4 (1: i32)), - @ended_ignored_mut_loan{ given_back=&mut@7 (2: i32); child: ⌊mut@7, proj_loans (s@5 : i32)⌋} - } -} - -[Debug] end borrow: 4: found outer borrows/abs:(InterpreterBorrowsCore.OuterAbs 3) -[Debug] end_abstraction: 3 -- original context: -# Ended regions: {0, 2} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=@ended_mut_loan{ given_back=proj_borrows (s@8 : i32 <: i32); child=proj_loans (s@8 : i32) }; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=proj_borrows (s@6 : &r@3 mut (i32) <: &r@1 mut (i32)); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} - } - abs@3{parents={}}{regions={3}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=proj_loans (s@6 : &r@3 mut (i32)); child=&mut@4 (1: i32)), - @ended_ignored_mut_loan{ given_back=&mut@7 (2: i32); child: ⌊mut@7, proj_loans (s@5 : i32)⌋} - } -} - -[Debug] end_abstraction: 3 -- context after parent abstractions ended: -# Ended regions: {0, 2} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=@ended_mut_loan{ given_back=proj_borrows (s@8 : i32 <: i32); child=proj_loans (s@8 : i32) }; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=proj_borrows (s@6 : &r@3 mut (i32) <: &r@1 mut (i32)); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} - } - abs@3{parents={}}{regions={3}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=proj_loans (s@6 : &r@3 mut (i32)); child=&mut@4 (1: i32)), - @ended_ignored_mut_loan{ given_back=&mut@7 (2: i32); child: ⌊mut@7, proj_loans (s@5 : i32)⌋} - } -} - -[Debug] end borrow: 7: -- original context: -# Ended regions: {0, 2} +# Ended regions: {0} # 1 frame(s) # Frame 0: @@ -149320,28 +134772,22 @@ copy x Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : i32 ; abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=@ended_mut_loan{ given_back=proj_borrows (s@8 : i32 <: i32); child=proj_loans (s@8 : i32) }; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=proj_borrows (s@6 : &r@3 mut (i32) <: &r@1 mut (i32)); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} - } - abs@3{parents={}}{regions={3}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=proj_loans (s@6 : &r@3 mut (i32)); child=&mut@4 (1: i32)), - @ended_ignored_mut_loan{ given_back=&mut@7 (2: i32); child: ⌊mut@7, proj_loans (s@5 : i32)⌋} + @ended_ignored_mut_borrow{ given_back_loans_proj=@ended_mut_loan{ given_back=proj_borrows (s@4 : i32 <: i32); child=proj_loans (s@4 : i32) }; child=&mut@0 (0: i32)), + @ended_ignored_mut_loan{ given_back=&mut@4 (1: i32); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} } } -[Debug] end borrow: 7: found outer borrows/abs:(InterpreterBorrowsCore.OuterAbs 3) -[Debug] end borrow: 7: +[Debug] end borrow: 4: found outer borrows/abs:(InterpreterBorrowsCore.OuterAbs 1) +[Debug] end borrow: 4: - original context: -# Ended regions: {0, 2} +# Ended regions: {0} # 1 frame(s) # Frame 0: @@ -149352,126 +134798,23 @@ copy x Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : i32 ; abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=@ended_mut_loan{ given_back=proj_borrows (s@8 : i32 <: i32); child=proj_loans (s@8 : i32) }; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=proj_borrows (s@6 : &r@3 mut (i32) <: &r@1 mut (i32)); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} - } - abs@3{parents={}}{regions={3}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=proj_loans (s@6 : &r@3 mut (i32)); child=&mut@4 (1: i32)), - @ended_ignored_mut_loan{ given_back=&mut@7 (2: i32); child: ⌊mut@7, proj_loans (s@5 : i32)⌋} + @ended_ignored_mut_borrow{ given_back_loans_proj=@ended_mut_loan{ given_back=proj_borrows (s@4 : i32 <: i32); child=proj_loans (s@4 : i32) }; child=&mut@0 (0: i32)), + @ended_ignored_mut_loan{ given_back=&mut@4 (1: i32); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} } } [Debug] give_back: -- bid: 7 -- content: &mut@7 (2: i32) -- context: -# Ended regions: {0, 2} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=@ended_mut_loan{ given_back=proj_borrows (s@8 : i32 <: i32); child=proj_loans (s@8 : i32) }; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=proj_borrows (s@6 : &r@3 mut (i32) <: &r@1 mut (i32)); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} - } - abs@3{parents={}}{regions={3}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=proj_loans (s@6 : &r@3 mut (i32)); child=&mut@4 (1: i32)), - @ended_ignored_mut_loan{ given_back=⊥ : &r@3 mut (i32); child: ⌊mut@7, proj_loans (s@5 : i32)⌋} - } -} - - -[Debug] end_abstraction: 3 -- context after loans ended: -# Ended regions: {0, 2} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=@ended_mut_loan{ given_back=proj_borrows (s@8 : i32 <: i32); child=proj_loans (s@8 : i32) }; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=proj_borrows (s@6 : &r@3 mut (i32) <: &r@1 mut (i32)); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} - } - abs@3{parents={}}{regions={3}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=proj_loans (s@6 : &r@3 mut (i32)); child=&mut@4 (1: i32)), - @ended_ignored_mut_loan{ given_back=⊥ : &r@3 mut (i32); child: @ended_mut_loan{ given_back=2: i32; child=proj_loans (s@5 : i32) }} - } -} - -[Debug] give_back_value: - bid: 4 -- value: s@11 : i32 +- content: &mut@4 (1: i32) - context: -# Ended regions: {0, 2} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=@ended_mut_loan{ given_back=proj_borrows (s@8 : i32 <: i32); child=proj_loans (s@8 : i32) }; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=proj_borrows (s@6 : &r@3 mut (i32) <: &r@1 mut (i32)); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} - } - abs@3{parents={}}{regions={3}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=proj_loans (s@6 : &r@3 mut (i32)); child=⊥ : &r@3 mut (i32)), - @ended_ignored_mut_loan{ given_back=⊥ : &r@3 mut (i32); child: @ended_mut_loan{ given_back=2: i32; child=proj_loans (s@5 : i32) }} - } -} - - -[Debug] end_abstraction: 3 -- original context: -# Ended regions: {0, 2} +# Ended regions: {0} # 1 frame(s) # Frame 0: @@ -149482,54 +134825,22 @@ copy x Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : i32 ; abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=@ended_mut_loan{ given_back=proj_borrows (s@8 : i32 <: i32); child=proj_loans (s@8 : i32) }; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=proj_borrows (s@6 : &r@3 mut (i32) <: &r@1 mut (i32)); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} - } - abs@3{parents={}}{regions={3}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=proj_loans (s@6 : &r@3 mut (i32)); child=&mut@4 (1: i32)), - @ended_ignored_mut_loan{ given_back=&mut@7 (2: i32); child: ⌊mut@7, proj_loans (s@5 : i32)⌋} + @ended_ignored_mut_borrow{ given_back_loans_proj=@ended_mut_loan{ given_back=proj_borrows (s@4 : i32 <: i32); child=proj_loans (s@4 : i32) }; child=&mut@0 (0: i32)), + @ended_ignored_mut_loan{ given_back=⊥ : &r@1 mut (i32); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} } } -- new context: -# Ended regions: {0, 2, 3} -# 1 frame(s) - -# Frame 0: -{ - Some (var@0) -> ⊥ : () ; - Some (x) -> ⌊mut@0⌋ ; - Some (px) -> ⊥ : &'_ mut (i32) ; - Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; - abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=@ended_mut_loan{ given_back=proj_borrows (s@8 : i32 <: i32); child=proj_loans (s@8 : i32) }; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=proj_borrows (s@6 : &r@3 mut (i32) <: &r@1 mut (i32)); child: @ended_mut_loan{ given_back=proj_borrows (s@11 : i32 <: i32); child=proj_loans (s@2 : i32) }} - } -} - [Debug] end_abstraction: 1 - context after loans ended: -# Ended regions: {0, 2, 3} +# Ended regions: {0} # 1 frame(s) # Frame 0: @@ -149540,25 +134851,23 @@ copy x Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : i32 ; abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=@ended_mut_loan{ given_back=proj_borrows (s@8 : i32 <: i32); child=proj_loans (s@8 : i32) }; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=proj_borrows (s@6 : &r@3 mut (i32) <: &r@1 mut (i32)); child: @ended_mut_loan{ given_back=proj_borrows (s@11 : i32 <: i32); child=proj_loans (s@2 : i32) }} + @ended_ignored_mut_borrow{ given_back_loans_proj=@ended_mut_loan{ given_back=proj_borrows (s@4 : i32 <: i32); child=proj_loans (s@4 : i32) }; child=&mut@0 (0: i32)), + @ended_ignored_mut_loan{ given_back=⊥ : &r@1 mut (i32); child: @ended_mut_loan{ given_back=1: i32; child=proj_loans (s@2 : i32) }} } } [Debug] give_back_value: - bid: 0 -- value: s@12 : i32 +- value: s@7 : i32 - context: -# Ended regions: {0, 2, 3} +# Ended regions: {0} # 1 frame(s) # Frame 0: @@ -149569,362 +134878,332 @@ copy x Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : i32 ; abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=@ended_mut_loan{ given_back=proj_borrows (s@8 : i32 <: i32); child=proj_loans (s@8 : i32) }; child=⊥ : &r@1 mut (i32)), - @ended_ignored_mut_loan{ given_back=proj_borrows (s@6 : &r@3 mut (i32) <: &r@1 mut (i32)); child: @ended_mut_loan{ given_back=proj_borrows (s@11 : i32 <: i32); child=proj_loans (s@2 : i32) }} + @ended_ignored_mut_borrow{ given_back_loans_proj=@ended_mut_loan{ given_back=proj_borrows (s@4 : i32 <: i32); child=proj_loans (s@4 : i32) }; child=⊥ : &r@1 mut (i32)), + @ended_ignored_mut_loan{ given_back=⊥ : &r@1 mut (i32); child: @ended_mut_loan{ given_back=1: i32; child=proj_loans (s@2 : i32) }} } } [Debug] end_abstraction: 1 - original context: -# Ended regions: {0, 2} +# Ended regions: {0} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; Some (x) -> ⌊mut@0⌋ ; - Some (px) -> &mut@8 (s@8 : i32) ; + Some (px) -> &mut@5 (s@4 : i32) ; Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : i32 ; abs@1{parents={}}{regions={1}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@8, proj_loans (s@8 : i32)⌋; child=&mut@0 (0: i32)), - @ended_ignored_mut_loan{ given_back=proj_borrows (s@6 : &r@3 mut (i32) <: &r@1 mut (i32)); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} - } - abs@3{parents={}}{regions={3}} { - @ended_ignored_mut_borrow{ given_back_loans_proj=proj_loans (s@6 : &r@3 mut (i32)); child=&mut@4 (1: i32)), - @ended_ignored_mut_loan{ given_back=&mut@7 (2: i32); child: ⌊mut@7, proj_loans (s@5 : i32)⌋} + @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@5, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)), + @ended_ignored_mut_loan{ given_back=&mut@4 (1: i32); child: ⌊mut@4, proj_loans (s@2 : i32)⌋} } } - new context: -# Ended regions: {0, 1, 2, 3} +# Ended regions: {0, 1} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> s@12 : i32 ; + Some (x) -> s@7 : i32 ; Some (px) -> ⊥ : &'_ mut (i32) ; Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : i32 ; } [Debug] **About to evaluate statement**: [ - var@12 := move var@13 == 2: i32; - var@11 := ¬ move var@12; - assert(¬move var@11); + var@10 := move var@11 == 1: i32; + var@9 := ¬ move var@10; + assert(¬move var@9); return ] **Context**: -# Ended regions: {0, 1, 2, 3} +# Ended regions: {0, 1} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> s@12 : i32 ; + Some (x) -> s@7 : i32 ; Some (px) -> ⊥ : &'_ mut (i32) ; Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> s@12 : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> s@7 : i32 ; } [Debug] **About to evaluate statement**: [ - var@12 := move var@13 == 2: i32 + var@10 := move var@11 == 1: i32 ] **Context**: -# Ended regions: {0, 1, 2, 3} +# Ended regions: {0, 1} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> s@12 : i32 ; + Some (x) -> s@7 : i32 ; Some (px) -> ⊥ : &'_ mut (i32) ; Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> s@12 : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> s@7 : i32 ; } [Debug] eval_operand: - ctx: -# Ended regions: {0, 1, 2, 3} +# Ended regions: {0, 1} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> s@12 : i32 ; + Some (x) -> s@7 : i32 ; Some (px) -> ⊥ : &'_ mut (i32) ; Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> s@12 : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> s@7 : i32 ; } - op: -move var@13 +move var@11 [Debug] eval_operand: - ctx: -# Ended regions: {0, 1, 2, 3} +# Ended regions: {0, 1} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> s@12 : i32 ; + Some (x) -> s@7 : i32 ; Some (px) -> ⊥ : &'_ mut (i32) ; Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : i32 ; } - op: -2: i32 +1: i32 [Debug] **About to evaluate statement**: [ - var@11 := ¬ move var@12; - assert(¬move var@11); + var@9 := ¬ move var@10; + assert(¬move var@9); return ] **Context**: -# Ended regions: {0, 1, 2, 3} +# Ended regions: {0, 1} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> s@12 : i32 ; + Some (x) -> s@7 : i32 ; Some (px) -> ⊥ : &'_ mut (i32) ; Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> s@13 : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@10) -> s@8 : bool ; + Some (var@11) -> ⊥ : i32 ; } [Debug] **About to evaluate statement**: [ - var@11 := ¬ move var@12 + var@9 := ¬ move var@10 ] **Context**: -# Ended regions: {0, 1, 2, 3} +# Ended regions: {0, 1} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> s@12 : i32 ; + Some (x) -> s@7 : i32 ; Some (px) -> ⊥ : &'_ mut (i32) ; Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> s@13 : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@10) -> s@8 : bool ; + Some (var@11) -> ⊥ : i32 ; } [Debug] eval_operand: - ctx: -# Ended regions: {0, 1, 2, 3} +# Ended regions: {0, 1} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> s@12 : i32 ; + Some (x) -> s@7 : i32 ; Some (px) -> ⊥ : &'_ mut (i32) ; Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> s@13 : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@10) -> s@8 : bool ; + Some (var@11) -> ⊥ : i32 ; } - op: -move var@12 +move var@10 [Debug] **About to evaluate statement**: [ - assert(¬move var@11); + assert(¬move var@9); return ] **Context**: -# Ended regions: {0, 1, 2, 3} +# Ended regions: {0, 1} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> s@12 : i32 ; + Some (x) -> s@7 : i32 ; Some (px) -> ⊥ : &'_ mut (i32) ; Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> s@14 : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; + Some (var@9) -> s@9 : bool ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : i32 ; } [Debug] **About to evaluate statement**: [ - assert(¬move var@11) + assert(¬move var@9) ] **Context**: -# Ended regions: {0, 1, 2, 3} +# Ended regions: {0, 1} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> s@12 : i32 ; + Some (x) -> s@7 : i32 ; Some (px) -> ⊥ : &'_ mut (i32) ; Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> s@14 : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; + Some (var@9) -> s@9 : bool ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : i32 ; } [Debug] eval_operand: - ctx: -# Ended regions: {0, 1, 2, 3} +# Ended regions: {0, 1} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> s@12 : i32 ; + Some (x) -> s@7 : i32 ; Some (px) -> ⊥ : &'_ mut (i32) ; Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; - Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> true ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; + Some (var@9) -> true ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : i32 ; } - op: -move var@11 +move var@9 [Debug] **About to evaluate statement**: [ @@ -149932,25 +135211,23 @@ move var@11 ] **Context**: -# Ended regions: {0, 1, 2, 3} +# Ended regions: {0, 1} # 1 frame(s) # Frame 0: { Some (var@0) -> ⊥ : () ; - Some (x) -> s@12 : i32 ; + Some (x) -> s@7 : i32 ; Some (px) -> ⊥ : &'_ mut (i32) ; Some (ppx) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (ppy) -> ⊥ : &'_ mut (&'_ mut (i32)) ; Some (var@5) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (ppz) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@7) -> ⊥ : &'_ mut (&'_ mut (i32)) ; - Some (var@8) -> ⊥ : bool ; + Some (var@6) -> ⊥ : bool ; + Some (var@7) -> ⊥ : bool ; + Some (var@8) -> ⊥ : i32 ; Some (var@9) -> ⊥ : bool ; - Some (var@10) -> ⊥ : i32 ; - Some (var@11) -> ⊥ : bool ; - Some (var@12) -> ⊥ : bool ; - Some (var@13) -> ⊥ : i32 ; + Some (var@10) -> ⊥ : bool ; + Some (var@11) -> ⊥ : i32 ; } -- cgit v1.2.3