aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--lib/future.ml2
-rw-r--r--test-suite/ide/blocking-futures.fake16
2 files changed, 17 insertions, 1 deletions
diff --git a/lib/future.ml b/lib/future.ml
index 52a060c93..ff5d9ab52 100644
--- a/lib/future.ml
+++ b/lib/future.ml
@@ -94,7 +94,7 @@ let from_here ?(fix_exn=id) v = create fix_exn (Val (v, Some (!freeze ())))
let fix_exn_of ck = let _, fix_exn, _ = get ck in fix_exn
-let create_delegate ?(blocking=false) fix_exn =
+let create_delegate ?(blocking=true) fix_exn =
let assignement signal ck = fun v ->
let _, fix_exn, c = get ck in
assert (match !c with Delegated _ -> true | _ -> false);
diff --git a/test-suite/ide/blocking-futures.fake b/test-suite/ide/blocking-futures.fake
new file mode 100644
index 000000000..b63f09bcf
--- /dev/null
+++ b/test-suite/ide/blocking-futures.fake
@@ -0,0 +1,16 @@
+# Script simulating a dialog between coqide and coqtop -ideslave
+# Run it via fake_ide
+#
+# Extraction will force the future computation, assert it is blocking
+# Example courtesy of Jonathan (jonikelee)
+#
+ADD { Require Import List. }
+ADD { Import ListNotations. }
+ADD { Definition myrev{A}(l : list A) : {rl : list A | rl = rev l}. }
+ADD { Proof. }
+ADD { induction l. }
+ADD { eexists; reflexivity. }
+ADD { cbn; destruct IHl as [rl' H]; rewrite <-H; eexists; reflexivity. }
+ADD { Qed. }
+ADD { Extraction myrev. }
+GOALS