Skip to content
This repository was archived by the owner on Jun 15, 2023. It is now read-only.

Commit 021922b

Browse files
committed
Fix issue with patterns with parens eat attributes.
Related: #585
1 parent b5ab63b commit 021922b

File tree

5 files changed

+10
-6
lines changed

5 files changed

+10
-6
lines changed

src/res_core.ml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1032,7 +1032,11 @@ let rec parsePattern ?(alias = true) ?(or_ = true) p =
10321032
| _ ->
10331033
Parser.expect Rparen p;
10341034
let loc = mkLoc startPos p.prevEndPos in
1035-
{pat with ppat_loc = loc}))
1035+
{
1036+
pat with
1037+
ppat_loc = loc;
1038+
ppat_attributes = attrs @ pat.Parsetree.ppat_attributes;
1039+
}))
10361040
| Lbracket -> parseArrayPattern ~attrs p
10371041
| Lbrace -> parseRecordPattern ~attrs p
10381042
| Underscore ->

tests/parsing/grammar/expressions/expected/record.res.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ let z name = { name = ((name)[@optional ]); x = 3 }
2323
let z name = { name; x = ((x)[@optional ]) }
2424
let _ =
2525
match z with
26-
| { x = ((None)[@optional ]); y = ((None)[@optional ]); z = (None : tt) }
27-
-> 11
26+
| { x = ((None)[@optional ]); y = ((None)[@optional ]);
27+
z = (((None : tt))[@optional ]) } -> 11
2828
| { name = ((name)[@optional ]); x = 3 } -> 42
2929
| { name = ((name)[@optional ]); x = 3 } -> 4242

tests/parsing/grammar/expressions/record.res

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,4 +36,4 @@ let _ = switch z {
3636
| {x: @optional None, y: @optional None, z: @optional (None:tt)} => 11
3737
| {name: @optional name, x: 3} => 42
3838
| {@optional name, x: 3} => 4242
39-
}
39+
}

tests/printer/expr/expected/record.res.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ let z = name => {@optional name, x: 3}
8383
let z = name => {name, @optional x}
8484

8585
let _ = switch z {
86-
| {x: @optional None, y: @optional None, z: (None: tt)} => 11
86+
| {x: @optional None, y: @optional None, z: (@optional None: tt)} => 11
8787
| {@optional name, x: 3} => 42
8888
| {name: @optional dd, x: 3} => 42
8989
}

tests/printer/expr/record.res

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,4 +76,4 @@ let _ = switch z {
7676
| {x: @optional None, y: @optional None, z: @optional (None:tt)} => 11
7777
| {name: @optional name, x: 3} => 42
7878
| {name: @optional dd, x: 3} => 42
79-
}
79+
}

0 commit comments

Comments
 (0)