aboutsummaryrefslogtreecommitdiff
path: root/printing/ppconstr.ml
diff options
context:
space:
mode:
Diffstat (limited to 'printing/ppconstr.ml')
-rw-r--r--printing/ppconstr.ml5
1 files changed, 3 insertions, 2 deletions
diff --git a/printing/ppconstr.ml b/printing/ppconstr.ml
index c2d760ae08..65b4e238de 100644
--- a/printing/ppconstr.ml
+++ b/printing/ppconstr.ml
@@ -85,6 +85,7 @@ let tag_var = tag Tag.variable
let env = ref terms and envlist = ref termlists and bl = ref binders and bll = ref binderlists in
let pop r = let a = List.hd !r in r := List.tl !r; a in
let return unp pp1 pp2 = (tag_unparsing unp pp1) ++ pp2 in
+ let parens = !Constrextern.print_coercions in
(* Warning:
The following function enforces a very precise order of
evaluation of sub-components.
@@ -95,7 +96,7 @@ let tag_var = tag Tag.variable
| UnpMetaVar prec as unp :: l ->
let c = pop env in
let pp2 = aux l in
- let pp1 = pr prec c in
+ let pp1 = pr (if parens then prec else LevelLe 0) c in
return unp pp1 pp2
| UnpBinderMetaVar prec as unp :: l ->
let c = pop bl in
@@ -104,7 +105,7 @@ let tag_var = tag Tag.variable
return unp pp1 pp2
| UnpListMetaVar (prec, sl) as unp :: l ->
let cl = pop envlist in
- let pp1 = prlist_with_sep (fun () -> aux sl) (pr prec) cl in
+ let pp1 = prlist_with_sep (fun () -> aux sl) (pr (if parens then prec else LevelLe 0)) cl in
let pp2 = aux l in
return unp pp1 pp2
| UnpBinderListMetaVar (isopen, sl) as unp :: l ->