diff options
author | Alain Frisch <alain@frisch.fr> | 2012-06-21 17:00:46 +0000 |
---|---|---|
committer | Alain Frisch <alain@frisch.fr> | 2012-06-21 17:00:46 +0000 |
commit | 98748d213d8616985cc07d389d3a2541b2c8c811 (patch) | |
tree | 5333ffa48fad70d0752553a189db9645715b3c40 | |
parent | f439a4441b57e3ae437af0fd825b9394a7ce1e43 (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.mly | 17 |
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 |