aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--kernel/mod_typing.ml8
-rw-r--r--library/declaremods.ml19
2 files changed, 22 insertions, 5 deletions
diff --git a/kernel/mod_typing.ml b/kernel/mod_typing.ml
index b1daea2287..09edc63f63 100644
--- a/kernel/mod_typing.ml
+++ b/kernel/mod_typing.ml
@@ -266,7 +266,13 @@ and translate_struct_entry env mse = match mse with
let sub2 = match eval_struct env (SEBident mp) with
| SEBstruct (msid,sign) -> subst_key (map_msid msid mp) sub2
| _ -> sub2 in
- let sub3 = update_subst_alias sub2 (join_alias sub1 (map_mbid farg_id mp None)) in
+ let sub3=
+ if sub1 = empty_subst then
+ update_subst_alias sub2 (map_mbid farg_id mp None)
+ else
+ update_subst_alias sub2
+ (join_alias sub1 (map_mbid farg_id mp None))
+ in
let sub = if sub2 = sub3 then
join sub1 sub2 else join (join sub1 sub2) sub3 in
let sub = join_alias sub (map_mbid farg_id mp None) in
diff --git a/library/declaremods.ml b/library/declaremods.ml
index 93e322e2c4..5f7daa9b51 100644
--- a/library/declaremods.ml
+++ b/library/declaremods.ml
@@ -564,8 +564,13 @@ let rec get_modtype_substobjs env = function
(subst_key (map_msid msid mp) sub_alias)
(map_msid msid mp)
| _ -> sub_alias in
- let sub3 = update_subst_alias sub_alias
- (join_alias sub1 (map_mbid farg_id mp None)) in
+ let sub3=
+ if sub1 = empty_subst then
+ update_subst_alias sub_alias (map_mbid farg_id mp None)
+ else
+ update_subst_alias sub_alias
+ (join_alias sub1 (map_mbid farg_id mp None))
+ in
let sub = if sub_alias = sub3 then
join sub1 sub_alias else join (join sub1 sub_alias) sub3 in
let sub = join_alias sub (map_mbid farg_id mp None) in
@@ -876,8 +881,14 @@ let rec get_module_substobjs env = function
(subst_key (map_msid msid mp) sub_alias)
(map_msid msid mp)
| _ -> sub_alias in
- let sub3 = update_subst_alias sub_alias
- (join_alias sub1 (map_mbid farg_id mp None)) in
+
+ let sub3=
+ if sub1 = empty_subst then
+ update_subst_alias sub_alias (map_mbid farg_id mp None)
+ else
+ update_subst_alias sub_alias
+ (join_alias sub1 (map_mbid farg_id mp None))
+ in
let sub = if sub_alias = sub3 then
join sub1 sub_alias else join (join sub1 sub_alias) sub3 in
let sub = join_alias sub (map_mbid farg_id mp None) in