aboutsummaryrefslogtreecommitdiffhomepage
path: root/library/library.ml
diff options
context:
space:
mode:
authorGravatar Maxime Dénès <mail@maximedenes.fr>2016-08-30 17:29:44 +0200
committerGravatar Maxime Dénès <mail@maximedenes.fr>2016-08-30 17:29:44 +0200
commitdea5e8a7ecb2120cccd2d2631ddbf892e99bffda (patch)
treed55a9001d96f5c4274388be84cec02060514848e /library/library.ml
parentcc6957b0dbb19a4c0ca505650d252d9486088a5f (diff)
Emit a warning on Require inside a module.
Diffstat (limited to 'library/library.ml')
-rw-r--r--library/library.ml8
1 files changed, 8 insertions, 0 deletions
diff --git a/library/library.ml b/library/library.ml
index 4bd71888e..d44f796a7 100644
--- a/library/library.ml
+++ b/library/library.ml
@@ -553,12 +553,20 @@ let in_require : require_obj -> obj =
let (f_xml_require, xml_require) = Hook.make ~default:ignore ()
+let warn_require_in_module =
+ CWarnings.create ~name:"require-in-module" ~category:"deprecated"
+ (fun () -> strbrk "Require inside a module is" ++
+ strbrk " deprecated and strongly discouraged. " ++
+ strbrk "You can Require a module at toplevel " ++
+ strbrk "and optionally Import it inside another one.")
+
let require_library_from_dirpath modrefl export =
let needed, contents = List.fold_left rec_intern_library ([], DPMap.empty) modrefl in
let needed = List.rev_map (fun dir -> DPMap.find dir contents) needed in
let modrefl = List.map fst modrefl in
if Lib.is_module_or_modtype () then
begin
+ warn_require_in_module ();
add_anonymous_leaf (in_require (needed,modrefl,None));
Option.iter (fun exp ->
add_anonymous_leaf (in_import_library (modrefl,exp)))