diff options
author | Matthieu Sozeau <mattam@mattam.org> | 2014-07-25 17:52:46 +0200 |
---|---|---|
committer | Matthieu Sozeau <mattam@mattam.org> | 2014-07-25 17:56:06 +0200 |
commit | 3f7f3a9bc9fde8e1d44d1179fa8dd16221ebf526 (patch) | |
tree | e40711bfad4132309b527c2c6c63b2bb5a61d1f2 /kernel/declareops.ml | |
parent | afe396e1e2d2fee621d96e7cbc950b0a28bd9606 (diff) |
- Do module substitution inside mind_record.
- Distinguish between primitive and non-primitive records in the kernel
declaration, so as to try eta-conversion on primitive records only.
Diffstat (limited to 'kernel/declareops.ml')
-rw-r--r-- | kernel/declareops.ml | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/kernel/declareops.ml b/kernel/declareops.ml index 51b7b6f97..9d2382f6e 100644 --- a/kernel/declareops.ml +++ b/kernel/declareops.ml @@ -223,8 +223,14 @@ let subst_mind_packet sub mbp = mind_nb_args = mbp.mind_nb_args; mind_reloc_tbl = mbp.mind_reloc_tbl } +let subst_mind_record sub (c, ps as r) = + let c' = subst_mps sub c in + let ps' = Array.smartmap (subst_constant sub) ps in + if c' == c && ps' == ps then r + else (c', ps') + let subst_mind_body sub mib = - { mind_record = mib.mind_record ; + { mind_record = Option.smartmap (subst_mind_record sub) mib.mind_record ; mind_finite = mib.mind_finite ; mind_ntypes = mib.mind_ntypes ; mind_hyps = (match mib.mind_hyps with [] -> [] | _ -> assert false); |