Skip to content

Commit 9f07a97

Browse files
committed
Support purification inside fold/unfold.
1 parent 2db2d47 commit 9f07a97

File tree

2 files changed

+11
-0
lines changed

2 files changed

+11
-0
lines changed

src/checker/Pulse.Checker.AssertWithBinders.fst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ module Pulse.Checker.AssertWithBinders
1919
open Pulse.Syntax
2020
open Pulse.Typing
2121
open Pulse.Checker.Base
22+
open Pulse.Checker.ImpureSpec
2223
open Pulse.Elaborate.Pure
2324
open Pulse.Typing.Env
2425

@@ -486,6 +487,7 @@ let check
486487

487488
check_unfoldable g v;
488489

490+
let v_opened = purify_term g { ctxt_now = pre; ctxt_old = None } v_opened in
489491
let v_opened, t_rem = PC.instantiate_term_implicits (push_env g uvs) v_opened None false in
490492

491493
let uvs, v_opened =

test/ImpureSpec.fst

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,4 +111,13 @@ fn test12 ()
111111
{
112112
let mut x = 2;
113113
rewrite x |-> !x as x |-> (0 + !x * 1);
114+
}
115+
116+
let p13 (x: ref int) = live x
117+
fn test13 ()
118+
{
119+
let mut x = 42;
120+
let mut y = x;
121+
fold p13 (!y);
122+
unfold p13 (!y);
114123
}

0 commit comments

Comments
 (0)