aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPierre-Marie Pédrot2020-11-05 13:09:55 +0100
committerPierre-Marie Pédrot2020-11-05 13:09:55 +0100
commit812e2fd7a62386f8128d4039f8d949486927e554 (patch)
treeb77f0307bc3ce91753e9fedc8a32fbd70115e6ef
parent5af74f736d5d621e3934be17d25c69b4ed3c0edf (diff)
parentffebade4b474be2b14117fe92d3ca72813d2d938 (diff)
Merge PR #13191: Fix anomaly when importing a functor
Reviewed-by: ppedrot
-rw-r--r--test-suite/bugs/closed/bug_13162.v7
-rw-r--r--vernac/vernacentries.ml10
2 files changed, 15 insertions, 2 deletions
diff --git a/test-suite/bugs/closed/bug_13162.v b/test-suite/bugs/closed/bug_13162.v
new file mode 100644
index 0000000000..eacc8980a9
--- /dev/null
+++ b/test-suite/bugs/closed/bug_13162.v
@@ -0,0 +1,7 @@
+
+Module Type T. End T.
+Module F (X:T). End F.
+Fail Import F.
+(* Error: Anomaly "Uncaught exception Not_found." *)
+
+Fail Import T.
diff --git a/vernac/vernacentries.ml b/vernac/vernacentries.ml
index bc03994ca6..ef8631fbb6 100644
--- a/vernac/vernacentries.ml
+++ b/vernac/vernacentries.ml
@@ -985,9 +985,15 @@ let interp_filter_in m = function
let vernac_import export refl =
let import_mod (qid,f) =
- let m = try Nametab.locate_module qid
+ let loc = qid.loc in
+ let m = try
+ let m = Nametab.locate_module qid in
+ let () = if Modops.is_functor (Global.lookup_module m).Declarations.mod_type
+ then CErrors.user_err ?loc Pp.(str "Cannot import functor " ++ pr_qualid qid ++ str".")
+ in
+ m
with Not_found ->
- CErrors.user_err Pp.(str "Cannot find module " ++ pr_qualid qid)
+ CErrors.user_err ?loc Pp.(str "Cannot find module " ++ pr_qualid qid)
in
let f = interp_filter_in m f in
Declaremods.import_module f ~export m