aboutsummaryrefslogtreecommitdiff
path: root/parsing
diff options
context:
space:
mode:
authorPierre-Marie Pédrot2015-10-27 11:44:58 +0100
committerPierre-Marie Pédrot2015-10-27 14:02:49 +0100
commit72bed859fb8d037044abd8a1518661c52502f7be (patch)
treea338b6d023c32db4f7cf0226117ab2f33b5dbca6 /parsing
parentd51e5688f521c8a77a1dbdb0b88d8f99d5ff8060 (diff)
Type-safe Egramml.grammar_prod_item.
Diffstat (limited to 'parsing')
-rw-r--r--parsing/egramml.ml6
-rw-r--r--parsing/egramml.mli2
2 files changed, 3 insertions, 5 deletions
diff --git a/parsing/egramml.ml b/parsing/egramml.ml
index 7a66b24f31..984027b815 100644
--- a/parsing/egramml.ml
+++ b/parsing/egramml.ml
@@ -18,7 +18,7 @@ open Vernacexpr
type 's grammar_prod_item =
| GramTerminal of string
| GramNonTerminal :
- Loc.t * argument_type * ('s, 'a) entry_key * Id.t option -> 's grammar_prod_item
+ Loc.t * 'a raw_abstract_argument_type * ('s, 'a) entry_key * Id.t option -> 's grammar_prod_item
type 'a ty_arg = Id.t * ('a -> raw_generic_argument)
@@ -41,9 +41,7 @@ let rec ty_rule_of_gram = function
let AnyTyRule rem = ty_rule_of_gram rem in
let inj = match idopt with
| None -> None
- | Some id ->
- (** FIXME *)
- Some (id, fun obj -> Genarg.Unsafe.inj t (Obj.repr obj))
+ | Some id -> Some (id, fun obj -> Genarg.in_gen t obj)
in
let r = TyNext (rem, tok, inj) in
AnyTyRule r
diff --git a/parsing/egramml.mli b/parsing/egramml.mli
index 32646cfafa..e3ae4e0118 100644
--- a/parsing/egramml.mli
+++ b/parsing/egramml.mli
@@ -15,7 +15,7 @@ open Vernacexpr
type 's grammar_prod_item =
| GramTerminal of string
- | GramNonTerminal : Loc.t * Genarg.argument_type *
+ | GramNonTerminal : Loc.t * 'a Genarg.raw_abstract_argument_type *
('s, 'a) Pcoq.entry_key * Names.Id.t option -> 's grammar_prod_item
val extend_vernac_command_grammar :