summaryrefslogtreecommitdiff
path: root/parsing
diff options
context:
space:
mode:
Diffstat (limited to 'parsing')
-rw-r--r--parsing/parser.mly30
-rw-r--r--parsing/parsetree.mli2
-rw-r--r--parsing/printast.ml4
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;