Skip to content

Commit fa1fdec

Browse files
authored
flambda-backend: Fix missing parens around local exp in pprintast (#2342)
1 parent ca8415c commit fa1fdec

File tree

3 files changed

+11
-1
lines changed

3 files changed

+11
-1
lines changed

parsing/pprintast.ml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2019,7 +2019,9 @@ and jane_syntax_expr ctxt attrs f (jexp : Jane_syntax.Expression.t) ~parens =
20192019
if parens then pp f "(%a)" (n_ary_function_expr reset_ctxt) x
20202020
else n_ary_function_expr ctxt f x
20212021
| Jexp_tuple ltexp -> labeled_tuple_expr ctxt f ltexp
2022-
| Jexp_modes mexp -> mode_expr ctxt f mexp
2022+
| Jexp_modes mexp ->
2023+
if parens then pp f "(%a)" (mode_expr ctxt) mexp
2024+
else mode_expr ctxt f mexp
20232025

20242026
and mode_expr ctxt f (mexp : Jane_syntax.Modes.expression) =
20252027
match mexp with

testsuite/tests/language-extensions/pprintast_unconditional.ml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ module Example = struct
2727
type u = Foo : global_ string * global_ string -> u \
2828
end"
2929

30+
let local_exp = parse expression "let x = foo (local_ x) in local_ y"
31+
3032
let longident = parse longident "No.Longidents.Require.extensions"
3133
let expression = parse expression "[x for x = 1 to 10]"
3234
let pattern = parse pattern "[:_:]"
@@ -136,6 +138,8 @@ end = struct
136138
let modality_record = test "modality_record" module_expr Example.modality_record
137139
let modality_cstrarg = test "modality_cstrarg" module_expr Example.modality_cstrarg
138140

141+
let local_exp = test "local_exp" expression Example.local_exp
142+
139143
let longident = test "longident" longident Example.longident
140144
let expression = test "expression" expression Example.expression
141145
let pattern = test "pattern" pattern Example.pattern

testsuite/tests/language-extensions/pprintast_unconditional.reference

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ modality_cstrarg:
1313
| Foo: global_ string * global_ string -> u
1414
end
1515

16+
local_exp: let x = foo (local_ x) in local_ y
17+
1618
longident: No.Longidents.Require.extensions
1719

1820
expression: [x for x = 1 to 10]
@@ -82,6 +84,8 @@ modality_cstrarg:
8284
| Foo: global_ string * global_ string -> u
8385
end
8486

87+
local_exp: let x = foo (local_ x) in local_ y
88+
8589
longident: No.Longidents.Require.extensions
8690

8791
expression: [x for x = 1 to 10]

0 commit comments

Comments
 (0)