From e7d54d7fe751e21001c6873fc6092b5adc8eb682 Mon Sep 17 00:00:00 2001 From: Pierre-Marie Pédrot Date: Tue, 3 May 2016 14:22:04 +0200 Subject: Fix bug #4292: Unexpected functor objects. --- library/declaremods.ml | 5 ++++- test-suite/bugs/closed/4292.v | 7 +++++++ 2 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 test-suite/bugs/closed/4292.v diff --git a/library/declaremods.ml b/library/declaremods.ml index 0434841513..651c76ae17 100644 --- a/library/declaremods.ml +++ b/library/declaremods.ml @@ -727,7 +727,10 @@ let declare_modtype interp_modast id args mtys (mty,ann) fs = let arg_entries_r = intern_args interp_modast args in let params = mk_params_entry arg_entries_r in let env = Global.env () in - let entry = params, fst (interp_modast env ModType mty) in + let mte, _ = interp_modast env ModType mty in + (* We check immediately that mte is well-formed *) + let _ = Mod_typing.translate_mse env None inl mte in + let entry = params, mte in let sub_mty_l = build_subtypes interp_modast env mp arg_entries_r mtys in let sobjs = get_functor_sobjs false env inl entry in let subst = map_mp (get_module_path (snd entry)) mp empty_delta_resolver in diff --git a/test-suite/bugs/closed/4292.v b/test-suite/bugs/closed/4292.v new file mode 100644 index 0000000000..403e155eaf --- /dev/null +++ b/test-suite/bugs/closed/4292.v @@ -0,0 +1,7 @@ +Module Type S. End S. + +Declare Module M : S. + +Module Type F (T: S). End F. + +Fail Module Type N := F with Module T := M. -- cgit v1.2.3