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

Commit c63422d

Browse files
committed
Handle ? in first punned field.
1 parent 2080dba commit c63422d

File tree

5 files changed

+8
-4
lines changed

5 files changed

+8
-4
lines changed

src/res_core.ml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2771,6 +2771,10 @@ and parseBracedOrRecordExpr p =
27712771
let loc = mkLoc startPos p.prevEndPos in
27722772
let braces = makeBracesAttr loc in
27732773
{expr with pexp_attributes = braces :: expr.pexp_attributes}))
2774+
| Question ->
2775+
let expr = parseRecordExpr ~startPos [] p in
2776+
Parser.expect Rbrace p;
2777+
expr
27742778
| Uident _ | Lident _ -> (
27752779
let startToken = p.token in
27762780
let valueOrConstructor = parseValueOrConstructor p in

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ let r =
1919
z = (((None : tt))[@optional ])
2020
}
2121
let z name = { name = ((name)[@optional ]); x = 3 }
22-
let z name = { name = ((name)[@optional ]); x = 3 }
22+
let z name = { name = ((name)[@ns.optional ]); x = 3 }
2323
let z name = { name; x = ((x)[@optional ]) }
2424
let zz name = { name; x = ((x)[@ns.optional ]) }
2525
let _ =

tests/parsing/grammar/expressions/record.res

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ let r = {x: ? None, y: ?None, z: @optional (None:tt)}
2828

2929
let z = name => { name : @optional name, x: 3}
3030

31-
let z = name => { @optional name, x: 3}
31+
let z = name => { ? name, x: 3}
3232

3333
let z = name => { name, @optional x }
3434

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ let r = {x: ?None, y: ?None, z: (@optional None: tt)}
7878

7979
let z = name => {@optional name, x: 3}
8080

81-
let z = name => {@optional name, x: 3}
81+
let z = name => {?name, x: 3}
8282

8383
let z = name => {name, @optional x}
8484

tests/printer/expr/record.res

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ let r = {x: ? None, y: ?None, z: @optional (None:tt)}
6868

6969
let z = name => { name : @optional name, x: 3}
7070

71-
let z = name => { @optional name, x: 3}
71+
let z = name => { ? name, x: 3}
7272

7373
let z = name => { name, @optional x }
7474

0 commit comments

Comments
 (0)