diff options
author | Pierre-Marie Pédrot <pierre-marie.pedrot@inria.fr> | 2014-08-29 15:52:49 +0200 |
---|---|---|
committer | Pierre-Marie Pédrot <pierre-marie.pedrot@inria.fr> | 2014-08-29 18:43:06 +0200 |
commit | e3f2781feb49325615affaaef2853c56874e6c22 (patch) | |
tree | b555e77cb1833390eb37a67731a4f34a1a030885 /interp/genintern.ml | |
parent | 029f850bceb1f68640fe7b703b0875ad02486691 (diff) |
Simplification of Genarg unpackers.
Instead of having a version of unpackers for each level, we use a dummy argument
to force unification of types.
Diffstat (limited to 'interp/genintern.ml')
-rw-r--r-- | interp/genintern.ml | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/interp/genintern.ml b/interp/genintern.ml index a8f82d998..b066ca529 100644 --- a/interp/genintern.ml +++ b/interp/genintern.ml @@ -39,11 +39,11 @@ let intern = Intern.obj let register_intern0 = Intern.register0 let generic_intern ist v = - let unpack wit v = - let (ist, v) = intern wit ist v in + let unpacker wit v = + let (ist, v) = intern wit ist (raw v) in (ist, in_gen (glbwit wit) v) in - raw_unpack { raw_unpack = unpack; } v + unpack { unpacker; } v (** Substitution functions *) @@ -51,7 +51,7 @@ let substitute = Subst.obj let register_subst0 = Subst.register0 let generic_substitute subs v = - let unpack wit v = in_gen (glbwit wit) (substitute wit subs v) in - glb_unpack { glb_unpack = unpack; } v + let unpacker wit v = in_gen (glbwit wit) (substitute wit subs (glb v)) in + unpack { unpacker; } v let () = Hook.set Detyping.subst_genarg_hook generic_substitute |