Remove compatibility with pre-4.01.0.
This commit is contained in:
parent
1205520aff
commit
6f7ac4559f
10
opam
10
opam
|
@ -11,14 +11,14 @@ build: [
|
||||||
build-doc: [["ocaml" "setup.ml" "-doc"]]
|
build-doc: [["ocaml" "setup.ml" "-doc"]]
|
||||||
remove: [["ocamlfind" "remove" "utop"]]
|
remove: [["ocamlfind" "remove" "utop"]]
|
||||||
depends: [
|
depends: [
|
||||||
"ocamlfind"
|
"ocamlfind" {>= "1.4.0"}
|
||||||
"lambda-term" {>= "1.2"}
|
"lambda-term" {>= "1.2"}
|
||||||
"lwt"
|
"lwt"
|
||||||
"react" {>= "1.0.0"}
|
"react" {>= "1.0.0"}
|
||||||
"cppo" {>= "1.0.1"}
|
"cppo" {>= "1.0.1"}
|
||||||
"oasis" {>= "0.3.0"}
|
"oasis" {>= "0.3.0"}
|
||||||
]
|
]
|
||||||
depopts: [
|
depopts: [
|
||||||
"camlp4"
|
"camlp4"
|
||||||
]
|
]
|
||||||
ocaml-version: [>= "4.01"]
|
available: [ ocaml-version >= "4.01" ]
|
||||||
|
|
|
@ -191,11 +191,7 @@ type 'a result =
|
||||||
|
|
||||||
exception Need_more
|
exception Need_more
|
||||||
|
|
||||||
#if OCAML_VERSION <= 031201
|
|
||||||
let input_name = ""
|
|
||||||
#else
|
|
||||||
let input_name = "//toplevel//"
|
let input_name = "//toplevel//"
|
||||||
#endif
|
|
||||||
|
|
||||||
let lexbuf_of_string eof str =
|
let lexbuf_of_string eof str =
|
||||||
let pos = ref 0 in
|
let pos = ref 0 in
|
||||||
|
@ -246,14 +242,12 @@ let parse_default parse str eos_is_error =
|
||||||
| Syntaxerr.Other loc ->
|
| Syntaxerr.Other loc ->
|
||||||
Error ([mkloc loc],
|
Error ([mkloc loc],
|
||||||
"Syntax error")
|
"Syntax error")
|
||||||
#if OCAML_VERSION >= 040100
|
|
||||||
| Syntaxerr.Expecting (loc, nonterm) ->
|
| Syntaxerr.Expecting (loc, nonterm) ->
|
||||||
Error ([mkloc loc],
|
Error ([mkloc loc],
|
||||||
Printf.sprintf "Syntax error: %s expected." nonterm)
|
Printf.sprintf "Syntax error: %s expected." nonterm)
|
||||||
| Syntaxerr.Variable_in_scope (loc, var) ->
|
| Syntaxerr.Variable_in_scope (loc, var) ->
|
||||||
Error ([mkloc loc],
|
Error ([mkloc loc],
|
||||||
Printf.sprintf "In this scoped type, variable '%s is reserved for the local type %s." var var)
|
Printf.sprintf "In this scoped type, variable '%s is reserved for the local type %s." var var)
|
||||||
#endif
|
|
||||||
#if OCAML_VERSION >= 040200
|
#if OCAML_VERSION >= 040200
|
||||||
| Syntaxerr.Not_expecting (loc, nonterm) ->
|
| Syntaxerr.Not_expecting (loc, nonterm) ->
|
||||||
Error ([mkloc loc],
|
Error ([mkloc loc],
|
||||||
|
@ -288,14 +282,10 @@ let rec last head tail =
|
||||||
| head :: tail ->
|
| head :: tail ->
|
||||||
last head tail
|
last head tail
|
||||||
|
|
||||||
#if OCAML_VERSION >= 040000
|
|
||||||
let with_loc loc str = {
|
let with_loc loc str = {
|
||||||
Location.txt = str;
|
Location.txt = str;
|
||||||
Location.loc = loc;
|
Location.loc = loc;
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
let with_loc loc str = str
|
|
||||||
#endif
|
|
||||||
|
|
||||||
(* Check that the given phrase can be evaluated without typing/compile
|
(* Check that the given phrase can be evaluated without typing/compile
|
||||||
errors. *)
|
errors. *)
|
||||||
|
@ -361,9 +351,7 @@ let check_phrase phrase =
|
||||||
try
|
try
|
||||||
let _ =
|
let _ =
|
||||||
discard_formatters [Format.err_formatter] (fun () ->
|
discard_formatters [Format.err_formatter] (fun () ->
|
||||||
#if OCAML_VERSION > 040001
|
|
||||||
Env.reset_cache_toplevel ();
|
Env.reset_cache_toplevel ();
|
||||||
#endif
|
|
||||||
Toploop.execute_phrase false null check_phrase)
|
Toploop.execute_phrase false null check_phrase)
|
||||||
in
|
in
|
||||||
(* The phrase is safe. *)
|
(* The phrase is safe. *)
|
||||||
|
@ -660,13 +648,11 @@ let () =
|
||||||
|
|
||||||
let topfind_log, set_topfind_log = S.create ~eq:(fun _ _ -> false) []
|
let topfind_log, set_topfind_log = S.create ~eq:(fun _ _ -> false) []
|
||||||
|
|
||||||
#if FINDLIB_VERSION >= 010400
|
|
||||||
let () =
|
let () =
|
||||||
let real_log = !Topfind.log in
|
let real_log = !Topfind.log in
|
||||||
Topfind.log := fun str ->
|
Topfind.log := fun str ->
|
||||||
set_topfind_log (str :: S.value topfind_log);
|
set_topfind_log (str :: S.value topfind_log);
|
||||||
if S.value topfind_verbose then real_log str
|
if S.value topfind_verbose then real_log str
|
||||||
#endif
|
|
||||||
|
|
||||||
let () =
|
let () =
|
||||||
Hashtbl.add
|
Hashtbl.add
|
||||||
|
|
|
@ -397,9 +397,6 @@ let visible_modules () =
|
||||||
#if OCAML_VERSION >= 040200
|
#if OCAML_VERSION >= 040200
|
||||||
let field_name { ld_id = id } = Ident.name id
|
let field_name { ld_id = id } = Ident.name id
|
||||||
let constructor_name { cd_id = id } = Ident.name id
|
let constructor_name { cd_id = id } = Ident.name id
|
||||||
#elif OCAML_VERSION >= 040000
|
|
||||||
let field_name (id, _, _) = Ident.name id
|
|
||||||
let constructor_name (id, _, _) = Ident.name id
|
|
||||||
#else
|
#else
|
||||||
let field_name (name, _, _) = name
|
let field_name (name, _, _) = name
|
||||||
let constructor_name (name, _) = name
|
let constructor_name (name, _) = name
|
||||||
|
@ -431,8 +428,6 @@ let add_names_of_type decl acc =
|
||||||
acc
|
acc
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if OCAML_VERSION >= 040000
|
|
||||||
|
|
||||||
let rec names_of_module_type = function
|
let rec names_of_module_type = function
|
||||||
| Mty_signature decls ->
|
| Mty_signature decls ->
|
||||||
List.fold_left
|
List.fold_left
|
||||||
|
@ -511,56 +506,6 @@ let rec fields_of_module_type = function
|
||||||
| _ ->
|
| _ ->
|
||||||
String_set.empty
|
String_set.empty
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
let rec names_of_module_type = function
|
|
||||||
| Tmty_signature decls ->
|
|
||||||
List.fold_left
|
|
||||||
(fun acc decl -> match decl with
|
|
||||||
| Tsig_value(id, _)
|
|
||||||
| Tsig_exception(id, _)
|
|
||||||
| Tsig_module(id, _, _)
|
|
||||||
| Tsig_modtype(id, _)
|
|
||||||
| Tsig_class(id, _, _)
|
|
||||||
| Tsig_cltype(id, _, _) ->
|
|
||||||
add (Ident.name id) acc
|
|
||||||
| Tsig_type(id, decl, _) ->
|
|
||||||
add_names_of_type decl (add (Ident.name id) acc))
|
|
||||||
String_set.empty decls
|
|
||||||
| Tmty_ident path -> begin
|
|
||||||
match lookup_env Env.find_modtype path !Toploop.toplevel_env with
|
|
||||||
| Some Tmodtype_abstract -> String_set.empty
|
|
||||||
| Some Tmodtype_manifest module_type -> names_of_module_type module_type
|
|
||||||
| None -> String_set.empty
|
|
||||||
end
|
|
||||||
| _ ->
|
|
||||||
String_set.empty
|
|
||||||
|
|
||||||
let rec fields_of_module_type = function
|
|
||||||
| Tmty_signature decls ->
|
|
||||||
List.fold_left
|
|
||||||
(fun acc decl -> match decl with
|
|
||||||
| Tsig_value(id, _)
|
|
||||||
| Tsig_exception(id, _)
|
|
||||||
| Tsig_module(id, _, _)
|
|
||||||
| Tsig_modtype(id, _)
|
|
||||||
| Tsig_class(id, _, _)
|
|
||||||
| Tsig_cltype(id, _, _) ->
|
|
||||||
acc
|
|
||||||
| Tsig_type(id, decl, _) ->
|
|
||||||
add_fields_of_type decl acc)
|
|
||||||
String_set.empty decls
|
|
||||||
| Tmty_ident path -> begin
|
|
||||||
match lookup_env Env.find_modtype path !Toploop.toplevel_env with
|
|
||||||
| Some Tmodtype_abstract -> String_set.empty
|
|
||||||
| Some Tmodtype_manifest module_type -> fields_of_module_type module_type
|
|
||||||
| None -> String_set.empty
|
|
||||||
end
|
|
||||||
| _ ->
|
|
||||||
String_set.empty
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if OCAML_VERSION < 040200
|
#if OCAML_VERSION < 040200
|
||||||
let lookup_module = Env.lookup_module
|
let lookup_module = Env.lookup_module
|
||||||
let find_module = Env.find_module
|
let find_module = Env.find_module
|
||||||
|
|
|
@ -355,14 +355,10 @@ let () =
|
||||||
| Toplevel expression rewriting |
|
| Toplevel expression rewriting |
|
||||||
+-----------------------------------------------------------------+ *)
|
+-----------------------------------------------------------------+ *)
|
||||||
|
|
||||||
#if OCAML_VERSION >= 040000
|
|
||||||
let with_loc loc str = {
|
let with_loc loc str = {
|
||||||
Location.txt = str;
|
Location.txt = str;
|
||||||
Location.loc = loc;
|
Location.loc = loc;
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
let with_loc loc str = str
|
|
||||||
#endif
|
|
||||||
|
|
||||||
(* A rule for rewriting a toplevel expression. *)
|
(* A rule for rewriting a toplevel expression. *)
|
||||||
type rewrite_rule = {
|
type rewrite_rule = {
|
||||||
|
@ -498,17 +494,9 @@ let is_persistent_in_env longident =
|
||||||
with Not_found ->
|
with Not_found ->
|
||||||
false
|
false
|
||||||
|
|
||||||
#if OCAML_VERSION >= 040000
|
|
||||||
let str_items_of_typed_structure tstr = tstr.Typedtree.str_items
|
|
||||||
let str_desc_of_typed_str_item tstr = tstr.Typedtree.str_desc
|
|
||||||
#else
|
|
||||||
let str_items_of_typed_structure tstr = tstr
|
|
||||||
let str_desc_of_typed_str_item tstr = tstr
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if OCAML_VERSION < 040200
|
#if OCAML_VERSION < 040200
|
||||||
let rewrite_str_item pstr_item tstr_item =
|
let rewrite_str_item pstr_item tstr_item =
|
||||||
match pstr_item, str_desc_of_typed_str_item tstr_item with
|
match pstr_item, tstr_item.Typedtree.str_desc with
|
||||||
| ({ Parsetree.pstr_desc = Parsetree.Pstr_eval e;
|
| ({ Parsetree.pstr_desc = Parsetree.Pstr_eval e;
|
||||||
Parsetree.pstr_loc = loc },
|
Parsetree.pstr_loc = loc },
|
||||||
Typedtree.Tstr_eval { Typedtree.exp_type = typ }) -> begin
|
Typedtree.Tstr_eval { Typedtree.exp_type = typ }) -> begin
|
||||||
|
@ -526,7 +514,7 @@ let rewrite_str_item pstr_item tstr_item =
|
||||||
pstr_item
|
pstr_item
|
||||||
#else
|
#else
|
||||||
let rewrite_str_item pstr_item tstr_item =
|
let rewrite_str_item pstr_item tstr_item =
|
||||||
match pstr_item, str_desc_of_typed_str_item tstr_item with
|
match pstr_item, tstr_item.Typedtree.str_desc with
|
||||||
| ({ Parsetree.pstr_desc = Parsetree.Pstr_eval (e, _);
|
| ({ Parsetree.pstr_desc = Parsetree.Pstr_eval (e, _);
|
||||||
Parsetree.pstr_loc = loc },
|
Parsetree.pstr_loc = loc },
|
||||||
Typedtree.Tstr_eval ({ Typedtree.exp_type = typ }, _)) -> begin
|
Typedtree.Tstr_eval ({ Typedtree.exp_type = typ }, _)) -> begin
|
||||||
|
@ -549,8 +537,7 @@ let rewrite phrase =
|
||||||
| Parsetree.Ptop_def pstr ->
|
| Parsetree.Ptop_def pstr ->
|
||||||
if (UTop.get_auto_run_lwt () || UTop.get_auto_run_async ()) && List.exists is_eval pstr then
|
if (UTop.get_auto_run_lwt () || UTop.get_auto_run_async ()) && List.exists is_eval pstr then
|
||||||
let tstr, _, _ = Typemod.type_structure !Toploop.toplevel_env pstr Location.none in
|
let tstr, _, _ = Typemod.type_structure !Toploop.toplevel_env pstr Location.none in
|
||||||
let tstr = str_items_of_typed_structure tstr in
|
Parsetree.Ptop_def (List.map2 rewrite_str_item pstr tstr.Typedtree.str_items)
|
||||||
Parsetree.Ptop_def (List.map2 rewrite_str_item pstr tstr)
|
|
||||||
else
|
else
|
||||||
Parsetree.Ptop_def pstr
|
Parsetree.Ptop_def pstr
|
||||||
| Parsetree.Ptop_dir _ ->
|
| Parsetree.Ptop_dir _ ->
|
||||||
|
@ -620,13 +607,9 @@ let rec loop term =
|
||||||
let pp = Format.formatter_of_buffer buffer in
|
let pp = Format.formatter_of_buffer buffer in
|
||||||
Format.pp_set_margin pp (LTerm.size term).cols;
|
Format.pp_set_margin pp (LTerm.size term).cols;
|
||||||
(try
|
(try
|
||||||
#if OCAML_VERSION > 040001
|
|
||||||
Env.reset_cache_toplevel ();
|
Env.reset_cache_toplevel ();
|
||||||
#endif
|
|
||||||
if !Clflags.dump_parsetree then Printast.top_phrase pp phrase;
|
if !Clflags.dump_parsetree then Printast.top_phrase pp phrase;
|
||||||
#if OCAML_VERSION > 040001
|
|
||||||
if !Clflags.dump_source then Pprintast.top_phrase pp phrase;
|
if !Clflags.dump_source then Pprintast.top_phrase pp phrase;
|
||||||
#endif
|
|
||||||
ignore (Toploop.execute_phrase true pp phrase);
|
ignore (Toploop.execute_phrase true pp phrase);
|
||||||
(* Flush everything. *)
|
(* Flush everything. *)
|
||||||
Format.pp_print_flush Format.std_formatter ();
|
Format.pp_print_flush Format.std_formatter ();
|
||||||
|
@ -1022,8 +1005,6 @@ end
|
||||||
| Extra macros |
|
| Extra macros |
|
||||||
+-----------------------------------------------------------------+ *)
|
+-----------------------------------------------------------------+ *)
|
||||||
|
|
||||||
#if OCAML_VERSION > 040001
|
|
||||||
|
|
||||||
let typeof sid =
|
let typeof sid =
|
||||||
let id = Longident.parse sid in
|
let id = Longident.parse sid in
|
||||||
let env = !Toploop.toplevel_env in
|
let env = !Toploop.toplevel_env in
|
||||||
|
@ -1093,13 +1074,10 @@ let typeof sid =
|
||||||
let str = Buffer.contents buf in
|
let str = Buffer.contents buf in
|
||||||
Lwt_main.run (Lazy.force LTerm.stdout >>= fun term -> render_out_phrase term str)
|
Lwt_main.run (Lazy.force LTerm.stdout >>= fun term -> render_out_phrase term str)
|
||||||
|
|
||||||
|
|
||||||
let () =
|
let () =
|
||||||
Hashtbl.add Toploop.directive_table "typeof"
|
Hashtbl.add Toploop.directive_table "typeof"
|
||||||
(Toploop.Directive_string typeof)
|
(Toploop.Directive_string typeof)
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
(* +-----------------------------------------------------------------+
|
(* +-----------------------------------------------------------------+
|
||||||
| Entry point |
|
| Entry point |
|
||||||
+-----------------------------------------------------------------+ *)
|
+-----------------------------------------------------------------+ *)
|
||||||
|
@ -1159,9 +1137,7 @@ let print_version_num () =
|
||||||
let autoload = ref true
|
let autoload = ref true
|
||||||
|
|
||||||
let args = Arg.align [
|
let args = Arg.align [
|
||||||
#if OCAML_VERSION >= 031300
|
|
||||||
"-absname", Arg.Set Location.absname, " Show absolute filenames in error message";
|
"-absname", Arg.Set Location.absname, " Show absolute filenames in error message";
|
||||||
#endif
|
|
||||||
"-I", Arg.String (fun dir -> Clflags.include_dirs := Misc.expand_directory Config.standard_library dir :: !Clflags.include_dirs), "<dir> Add <dir> to the list of include directories";
|
"-I", Arg.String (fun dir -> Clflags.include_dirs := Misc.expand_directory Config.standard_library dir :: !Clflags.include_dirs), "<dir> Add <dir> to the list of include directories";
|
||||||
"-init", Arg.String (fun s -> Clflags.init_file := Some s), "<file> Load <file> instead of default init file";
|
"-init", Arg.String (fun s -> Clflags.init_file := Some s), "<file> Load <file> instead of default init file";
|
||||||
"-labels", Arg.Clear Clflags.classic, " Use commuting label mode";
|
"-labels", Arg.Clear Clflags.classic, " Use commuting label mode";
|
||||||
|
@ -1176,10 +1152,8 @@ let args = Arg.align [
|
||||||
#if OCAML_VERSION >= 040200
|
#if OCAML_VERSION >= 040200
|
||||||
"-safe-string", Arg.Clear Clflags.unsafe_string, " Make strings immutable";
|
"-safe-string", Arg.Clear Clflags.unsafe_string, " Make strings immutable";
|
||||||
#endif
|
#endif
|
||||||
#if OCAML_VERSION >= 040100
|
|
||||||
"-short-paths", Arg.Clear Clflags.real_paths, " Shorten paths in types (the default)";
|
"-short-paths", Arg.Clear Clflags.real_paths, " Shorten paths in types (the default)";
|
||||||
"-no-short-paths", Arg.Set Clflags.real_paths, " Do not shorten paths in types";
|
"-no-short-paths", Arg.Set Clflags.real_paths, " Do not shorten paths in types";
|
||||||
#endif
|
|
||||||
"-rectypes", Arg.Set Clflags.recursive_types, " Allow arbitrary recursive types";
|
"-rectypes", Arg.Set Clflags.recursive_types, " Allow arbitrary recursive types";
|
||||||
"-stdin", Arg.Unit (fun () -> run_script ""), " Read script from standard input";
|
"-stdin", Arg.Unit (fun () -> run_script ""), " Read script from standard input";
|
||||||
"-strict-sequence", Arg.Set Clflags.strict_sequence, " Left-hand part of a sequence must have type unit";
|
"-strict-sequence", Arg.Set Clflags.strict_sequence, " Left-hand part of a sequence must have type unit";
|
||||||
|
@ -1213,14 +1187,10 @@ let args = Arg.align [
|
||||||
"-require", Arg.String (fun s -> preload := `Packages (UTop.split_words s) :: !preload),
|
"-require", Arg.String (fun s -> preload := `Packages (UTop.split_words s) :: !preload),
|
||||||
"<package> Load this package";
|
"<package> Load this package";
|
||||||
"-dparsetree", Arg.Set Clflags.dump_parsetree, " Dump OCaml AST after rewriting";
|
"-dparsetree", Arg.Set Clflags.dump_parsetree, " Dump OCaml AST after rewriting";
|
||||||
#if OCAML_VERSION >= 040100
|
|
||||||
"-dsource", Arg.Set Clflags.dump_source, " Dump OCaml source after rewriting";
|
"-dsource", Arg.Set Clflags.dump_source, " Dump OCaml source after rewriting";
|
||||||
#endif
|
|
||||||
]
|
]
|
||||||
|
|
||||||
#if OCAML_VERSION >= 040100
|
|
||||||
let () = Clflags.real_paths := false
|
let () = Clflags.real_paths := false
|
||||||
#endif
|
|
||||||
|
|
||||||
let app_name = Filename.basename Sys.executable_name
|
let app_name = Filename.basename Sys.executable_name
|
||||||
let usage = Printf.sprintf "Usage: %s <options> <object-files> [script-file [arguments]]\noptions are:" app_name
|
let usage = Printf.sprintf "Usage: %s <options> <object-files> [script-file [arguments]]\noptions are:" app_name
|
||||||
|
|
Loading…
Reference in New Issue