diff options
| author | soubiran | 2008-06-18 14:17:57 +0000 |
|---|---|---|
| committer | soubiran | 2008-06-18 14:17:57 +0000 |
| commit | f8bbe2c1125593eb57ba01b903d5954e12bfb006 (patch) | |
| tree | 43c7af8bd726a769c866be831c0746fe3c4cf677 /kernel/modops.ml | |
| parent | 54c782ae1e2efd6d86f9869bb5ff732f047624bf (diff) | |
meilleur gestion de la fonction de "cache" des alias (declaremods), et correction d'un bug sur Import/Export module.
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@11138 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'kernel/modops.ml')
| -rw-r--r-- | kernel/modops.ml | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/kernel/modops.ml b/kernel/modops.ml index 49e49f5731..26030b9e94 100644 --- a/kernel/modops.ml +++ b/kernel/modops.ml @@ -168,8 +168,13 @@ and subst_module sub mb = (because the signature is "K with Module M := M'") and we are substituting M' with some M''. *) let me' = Option.smartmap (subst_struct_expr sub) mb.mod_expr in - let mb_alias = join_alias mb.mod_alias sub in - if mtb'==mb.mod_type && mb.mod_expr == me' + let mb_alias = update_subst sub mb.mod_alias in + let mb_alias = if mb_alias = empty_subst then + join_alias mb.mod_alias sub + else + join mb_alias (join_alias mb.mod_alias sub) + in + if mtb'==mb.mod_type && mb.mod_expr == me' && mb_alias == mb.mod_alias then mb else { mod_expr = me'; @@ -263,7 +268,7 @@ let rec eval_struct env = function (subst_key (map_msid msid mp) sub_alias) (map_msid msid mp) | _ -> sub_alias in - let sub_alias1 = update_subst_alias sub_alias + let sub_alias1 = update_subst sub_alias (map_mbid farg_id mp (None)) in let resolve = resolver_of_environment farg_id farg_b mp sub_alias env in eval_struct env (subst_struct_expr @@ -316,7 +321,7 @@ and merge_with env mtb with_decl alias= SFBconst c,None | With_module_body ([id], mp,cst) -> let mp' = scrape_alias mp env in - let new_alias = update_subst_alias alias (map_mp (mp_rec [id]) mp') in + let new_alias = update_subst alias (map_mp (mp_rec [id]) mp') in SFBalias (mp,Some cst), Some(join (map_mp (mp_rec [id]) mp') new_alias) | With_definition_body (_::_,_) @@ -335,7 +340,7 @@ and merge_with env mtb with_decl alias= in let subst = match subst1 with | None -> None - | Some s -> Some (join s (update_subst_alias alias s)) in + | Some s -> Some (join s (update_subst alias s)) in let modtype,subst_msb = merge_with env (type_of_mb env old) new_with_decl alias in let msb = |
