summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlain Frisch <alain@frisch.fr>2012-06-21 17:00:46 +0000
committerAlain Frisch <alain@frisch.fr>2012-06-21 17:00:46 +0000
commit98748d213d8616985cc07d389d3a2541b2c8c811 (patch)
tree5333ffa48fad70d0752553a189db9645715b3c40
parentf439a4441b57e3ae437af0fd825b9394a7ce1e43 (diff)
#5657: fix location of punned record fields.
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@12636 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
-rw-r--r--parsing/parser.mly17
1 files changed, 9 insertions, 8 deletions
diff --git a/parsing/parser.mly b/parsing/parser.mly
index b563094c1..0164e3219 100644
--- a/parsing/parser.mly
+++ b/parsing/parser.mly
@@ -1212,18 +1212,19 @@ expr_comma_list:
| expr COMMA expr { [$3; $1] }
;
record_expr:
- simple_expr WITH lbl_expr_list opt_semi { (Some $1, List.rev $3) }
- | lbl_expr_list opt_semi { (None, List.rev $1) }
+ simple_expr WITH lbl_expr_list { (Some $1, $3) }
+ | lbl_expr_list { (None, $1) }
;
lbl_expr_list:
+ lbl_expr { [$1] }
+ | lbl_expr SEMI lbl_expr_list { $1 :: $3 }
+ | lbl_expr SEMI { [$1] }
+;
+lbl_expr:
label_longident EQUAL expr
- { [mkrhs $1 1,$3] }
+ { (mkrhs $1 1,$3) }
| label_longident
- { [mkrhs $1 1, exp_of_label $1 1] }
- | lbl_expr_list SEMI label_longident EQUAL expr
- { (mkrhs $3 3, $5) :: $1 }
- | lbl_expr_list SEMI label_longident
- { (mkrhs $3 3, exp_of_label $3 3) :: $1 }
+ { (mkrhs $1 1, exp_of_label $1 1) }
;
field_expr_list:
label EQUAL expr