summaryrefslogtreecommitdiff
path: root/src/pretty_print_coq.ml
diff options
context:
space:
mode:
authorBrian Campbell2019-04-05 10:51:16 +0100
committerBrian Campbell2019-04-05 10:57:19 +0100
commite9ecc057647d1a13c2eefda0a66a411a6aa17e35 (patch)
treeff4c40df65b54868207b9624ec15c073349193de /src/pretty_print_coq.ml
parentd3db47ec529df0c552055024e727f9f34ffe95e9 (diff)
Coq: add missing effectful existential unpacking case
Diffstat (limited to 'src/pretty_print_coq.ml')
-rw-r--r--src/pretty_print_coq.ml6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/pretty_print_coq.ml b/src/pretty_print_coq.ml
index cce3c2d3..90484598 100644
--- a/src/pretty_print_coq.ml
+++ b/src/pretty_print_coq.ml
@@ -1729,7 +1729,11 @@ let doc_exp, doc_let =
if effectful eff
then "autocast_m", "projT1_m"
else "autocast", "projT1" in
- let epp = if unpack && not (effectful eff) then string proj_id ^/^ parens epp else epp in
+ (* We need to unpack an existential if it's generated by a pure
+ computation, or if the monadic binding isn't expecting one. *)
+ let epp = if unpack && not (effectful eff && packeff)
+ then string proj_id ^/^ parens epp
+ else epp in
let epp = if autocast then string autocast_id ^^ space ^^ parens epp else epp in
let epp =
if effectful eff && packeff && not unpack