diff options
Diffstat (limited to 'parsing')
-rw-r--r-- | parsing/parser.mly | 30 | ||||
-rw-r--r-- | parsing/parsetree.mli | 2 | ||||
-rw-r--r-- | parsing/printast.ml | 4 |
3 files changed, 19 insertions, 17 deletions
diff --git a/parsing/parser.mly b/parsing/parser.mly index 5a04a62591..72e324badf 100644 --- a/parsing/parser.mly +++ b/parsing/parser.mly @@ -983,23 +983,27 @@ let_bindings: | let_bindings AND let_binding { $3 :: $1 } ; let_binding: - typevar_list DOT let_val_binding + type_intro_list DOT let_val_binding { (List.rev $1, fst $3, snd $3) } | let_val_binding { ([], fst $1, snd $1) } ; +type_intro: + QUOTE LIDENT + { mktyp (Ptyp_var $2) } + | QUOTE LIDENT AS core_type2 + { mktyp (Ptyp_alias ($4, $2)) } +; +type_intro_list: + type_intro { [$1] } + | type_intro_list type_intro { $2 :: $1 } +; let_val_binding: - val_ident let_fun_binding + val_ident fun_binding { ({ppat_desc = Ppat_var $1; ppat_loc = rhs_loc 1}, $2) } | pattern EQUAL seq_expr { ($1, $3) } ; -let_fun_binding: - fun_binding - { $1} - | COLON explicit_poly_type EQUAL seq_expr - { ghexp(Pexp_constraint($4, Some $2, None)) } -; fun_binding: strict_binding { $1 } @@ -1247,13 +1251,11 @@ typevar_list: QUOTE ident { [$2] } | typevar_list QUOTE ident { $3 :: $1 } ; -explicit_poly_type: - typevar_list DOT core_type - { mktyp(Ptyp_poly(List.rev $1, $3)) } -; poly_type: - core_type { mktyp(Ptyp_poly([], $1)) } - | explicit_poly_type { $1 } + core_type + { mktyp(Ptyp_poly([], $1)) } + | typevar_list DOT core_type + { mktyp(Ptyp_poly(List.rev $1, $3)) } ; /* Core types */ diff --git a/parsing/parsetree.mli b/parsing/parsetree.mli index 4fd3013322..d7d59bdfae 100644 --- a/parsing/parsetree.mli +++ b/parsing/parsetree.mli @@ -112,7 +112,7 @@ and expression_desc = | Pexp_poly of expression * core_type option | Pexp_object of class_structure -and binding = string list * pattern * expression +and binding = core_type list * pattern * expression (* Value descriptions *) diff --git a/parsing/printast.ml b/parsing/printast.ml index 190d9ea779..9277d12da1 100644 --- a/parsing/printast.ml +++ b/parsing/printast.ml @@ -634,9 +634,9 @@ and pattern_x_expression_case i ppf (p, e) = pattern (i+1) ppf p; expression (i+1) ppf e; -and pattern_x_expression_def i ppf (vl, p, e) = +and pattern_x_expression_def i ppf (evo, p, e) = line i ppf "<def>\n"; - string (i+1) ppf (String.concat " " vl); + (* string (i+1) ppf (String.concat " " vl); *) pattern (i+1) ppf p; expression (i+1) ppf e; |