This is an automated email from the git hooks/post-receive script. bengen pushed a commit to branch master in repository utop.
commit 53572f6abb8d17754f12625a85b83ab98e8e19c5 Author: Hilko Bengen <ben...@debian.org> Date: Thu Sep 15 09:28:47 2016 +0200 New upstream version 1.19.3 --- .travis.yml | 11 +++ CHANGES.md | 5 ++ Makefile | 2 + README.md | 2 + _oasis | 2 +- _tags | 2 +- myocamlbuild.ml | 174 ++++++++++++++++++++++++++++++++++++++++-- opam | 5 +- setup.ml | 73 ++++++++++++------ src/lib/META | 6 +- src/lib/uTop.cppo.ml | 5 ++ src/lib/uTop_complete.cppo.ml | 24 +++++- src/lib/uTop_main.cppo.ml | 22 +++++- 13 files changed, 289 insertions(+), 44 deletions(-) diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..7e8a190 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,11 @@ +language: c +sudo: required +install: wget https://raw.githubusercontent.com/ocaml/ocaml-ci-scripts/master/.travis-opam.sh +script: bash -ex .travis-opam.sh +env: + - OCAML_VERSION=4.01 + - OCAML_VERSION=4.02 + - OCAML_VERSION=4.03 +os: + - linux + - osx diff --git a/CHANGES.md b/CHANGES.md index 29c133a..df0c01a 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,3 +1,8 @@ +1.19.3 (2016-08-15) +------------------- + +* fix compatibility with 4.04.0+beta1 + 1.19.2 (2016-04-25) ------------------- diff --git a/Makefile b/Makefile index df0146f..247b87b 100644 --- a/Makefile +++ b/Makefile @@ -37,12 +37,14 @@ all: $(SETUP) ./$(SETUP) -all $(ALLFLAGS) install: $(SETUP) setup.data + ocamlfind remove utop 2>/dev/null || true ./$(SETUP) -install $(INSTALLFLAGS) uninstall: $(SETUP) setup.data ./$(SETUP) -uninstall $(UNINSTALLFLAGS) reinstall: $(SETUP) setup.data + ocamlfind remove utop 2>/dev/null || true ./$(SETUP) -reinstall $(REINSTALLFLAGS) clean: $(SETUP) diff --git a/README.md b/README.md index 1e35928..73fb7a0 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,8 @@ sensitive completion, colors, and more. It integrates with the tuareg and typerex modes in Emacs. +[![Travis build Status](https://travis-ci.org/diml/utop.svg?branch=master)](https://travis-ci.org/diml/utop) + Installation via opam --------------------- diff --git a/_oasis b/_oasis index 6447f17..bf2f918 100644 --- a/_oasis +++ b/_oasis @@ -5,7 +5,7 @@ OASISFormat: 0.4 OCamlVersion: >= 4.01 Name: utop -Version: 1.19.2 +Version: 1.19.3 LicenseFile: LICENSE License: BSD-3-clause Authors: Jeremie Dimino diff --git a/_tags b/_tags index c62b7d7..f04e322 100644 --- a/_tags +++ b/_tags @@ -3,7 +3,7 @@ <src/**/*.ml{,i}>: cppo_V_OCAML, cppo_interact, package(compiler-libs) <src/camlp5/**/*.ml{,i}>: use_camlp5 -<**/*.ml>: warn(-3-40) +<**/*.ml>: warn(-3-40@8) # OASIS_START # DO NOT EDIT (digest: 0e8c977c59cd4b29b0e0ba0f7c9f1d20) diff --git a/myocamlbuild.ml b/myocamlbuild.ml index 05d8998..e7c7b7a 100644 --- a/myocamlbuild.ml +++ b/myocamlbuild.ml @@ -8,7 +8,7 @@ *) (* OASIS_START *) -(* DO NOT EDIT (digest: 368184321b7bf53d664ff01896f75167) *) +(* DO NOT EDIT (digest: f68667f1e12528c7f5c9b0cee2c6ae4b) *) module OASISGettext = struct (* # 22 "src/oasis/OASISGettext.ml" *) @@ -38,6 +38,166 @@ module OASISGettext = struct end +module OASISString = struct +(* # 22 "src/oasis/OASISString.ml" *) + + + (** Various string utilities. + + Mostly inspired by extlib and batteries ExtString and BatString libraries. + + @author Sylvain Le Gall + *) + + + let nsplitf str f = + if str = "" then + [] + else + let buf = Buffer.create 13 in + let lst = ref [] in + let push () = + lst := Buffer.contents buf :: !lst; + Buffer.clear buf + in + let str_len = String.length str in + for i = 0 to str_len - 1 do + if f str.[i] then + push () + else + Buffer.add_char buf str.[i] + done; + push (); + List.rev !lst + + + (** [nsplit c s] Split the string [s] at char [c]. It doesn't include the + separator. + *) + let nsplit str c = + nsplitf str ((=) c) + + + let find ~what ?(offset=0) str = + let what_idx = ref 0 in + let str_idx = ref offset in + while !str_idx < String.length str && + !what_idx < String.length what do + if str.[!str_idx] = what.[!what_idx] then + incr what_idx + else + what_idx := 0; + incr str_idx + done; + if !what_idx <> String.length what then + raise Not_found + else + !str_idx - !what_idx + + + let sub_start str len = + let str_len = String.length str in + if len >= str_len then + "" + else + String.sub str len (str_len - len) + + + let sub_end ?(offset=0) str len = + let str_len = String.length str in + if len >= str_len then + "" + else + String.sub str 0 (str_len - len) + + + let starts_with ~what ?(offset=0) str = + let what_idx = ref 0 in + let str_idx = ref offset in + let ok = ref true in + while !ok && + !str_idx < String.length str && + !what_idx < String.length what do + if str.[!str_idx] = what.[!what_idx] then + incr what_idx + else + ok := false; + incr str_idx + done; + if !what_idx = String.length what then + true + else + false + + + let strip_starts_with ~what str = + if starts_with ~what str then + sub_start str (String.length what) + else + raise Not_found + + + let ends_with ~what ?(offset=0) str = + let what_idx = ref ((String.length what) - 1) in + let str_idx = ref ((String.length str) - 1) in + let ok = ref true in + while !ok && + offset <= !str_idx && + 0 <= !what_idx do + if str.[!str_idx] = what.[!what_idx] then + decr what_idx + else + ok := false; + decr str_idx + done; + if !what_idx = -1 then + true + else + false + + + let strip_ends_with ~what str = + if ends_with ~what str then + sub_end str (String.length what) + else + raise Not_found + + + let replace_chars f s = + let buf = Buffer.create (String.length s) in + String.iter (fun c -> Buffer.add_char buf (f c)) s; + Buffer.contents buf + + let lowercase_ascii = + replace_chars + (fun c -> + if (c >= 'A' && c <= 'Z') then + Char.chr (Char.code c + 32) + else + c) + + let uncapitalize_ascii s = + if s <> "" then + (lowercase_ascii (String.sub s 0 1)) ^ (String.sub s 1 ((String.length s) - 1)) + else + s + + let uppercase_ascii = + replace_chars + (fun c -> + if (c >= 'a' && c <= 'z') then + Char.chr (Char.code c - 32) + else + c) + + let capitalize_ascii s = + if s <> "" then + (uppercase_ascii (String.sub s 0 1)) ^ (String.sub s 1 ((String.length s) - 1)) + else + s + +end + module OASISExpr = struct (* # 22 "src/oasis/OASISExpr.ml" *) @@ -138,7 +298,7 @@ module OASISExpr = struct end -# 132 "myocamlbuild.ml" +# 292 "myocamlbuild.ml" module BaseEnvLight = struct (* # 22 "src/base/BaseEnvLight.ml" *) @@ -243,7 +403,7 @@ module BaseEnvLight = struct end -# 237 "myocamlbuild.ml" +# 397 "myocamlbuild.ml" module MyOCamlbuildFindlib = struct (* # 22 "src/plugins/ocamlbuild/MyOCamlbuildFindlib.ml" *) @@ -525,7 +685,7 @@ module MyOCamlbuildBase = struct | nm, [], intf_modules -> ocaml_lib nm; let cmis = - List.map (fun m -> (String.uncapitalize m) ^ ".cmi") + List.map (fun m -> (OASISString.uncapitalize_ascii m) ^ ".cmi") intf_modules in dep ["ocaml"; "link"; "library"; "file:"^nm^".cma"] cmis | nm, dir :: tl, intf_modules -> @@ -538,7 +698,7 @@ module MyOCamlbuildBase = struct ["compile"; "infer_interface"; "doc"]) tl; let cmis = - List.map (fun m -> dir^"/"^(String.uncapitalize m)^".cmi") + List.map (fun m -> dir^"/"^(OASISString.uncapitalize_ascii m)^".cmi") intf_modules in dep ["ocaml"; "link"; "library"; "file:"^dir^"/"^nm^".cma"] cmis) @@ -612,7 +772,7 @@ module MyOCamlbuildBase = struct end -# 606 "myocamlbuild.ml" +# 766 "myocamlbuild.ml" open Ocamlbuild_plugin;; let package_default = { @@ -628,7 +788,7 @@ let conf = {MyOCamlbuildFindlib.no_automatic_syntax = false} let dispatch_default = MyOCamlbuildBase.dispatch_default conf package_default;; -# 623 "myocamlbuild.ml" +# 783 "myocamlbuild.ml" (* OASIS_STOP *) let () = diff --git a/opam b/opam index c4e8423..78b4a8c 100644 --- a/opam +++ b/opam @@ -6,7 +6,10 @@ homepage: "https://github.com/diml/utop" bug-reports: "https://github.com/diml/utop/issues" dev-repo: "git://github.com/diml/utop.git" build: [ - ["./configure" "--prefix" prefix "--%{camlp4:enable}%-camlp4"] + ["./configure" + "--prefix" prefix + "--%{camlp4:enable}%-camlp4" + "--%{ppx_tools:enable}%-interact"] [make] ] install: [ diff --git a/setup.ml b/setup.ml index 31154c6..09172c0 100644 --- a/setup.ml +++ b/setup.ml @@ -8,9 +8,9 @@ *) (* OASIS_START *) -(* DO NOT EDIT (digest: 90e07e2bd390d9f6d9b6a480cadbaa2c) *) +(* DO NOT EDIT (digest: 8e5cfe23708be275159e82f4ad56c6c9) *) (* - Regenerated by OASIS v0.4.5 + Regenerated by OASIS v0.4.6 Visit http://oasis.forge.ocamlcore.org for more information and documentation about functions used in this file. *) @@ -253,6 +253,33 @@ module OASISString = struct String.iter (fun c -> Buffer.add_char buf (f c)) s; Buffer.contents buf + let lowercase_ascii = + replace_chars + (fun c -> + if (c >= 'A' && c <= 'Z') then + Char.chr (Char.code c + 32) + else + c) + + let uncapitalize_ascii s = + if s <> "" then + (lowercase_ascii (String.sub s 0 1)) ^ (String.sub s 1 ((String.length s) - 1)) + else + s + + let uppercase_ascii = + replace_chars + (fun c -> + if (c >= 'a' && c <= 'z') then + Char.chr (Char.code c - 32) + else + c) + + let capitalize_ascii s = + if s <> "" then + (uppercase_ascii (String.sub s 0 1)) ^ (String.sub s 1 ((String.length s) - 1)) + else + s end @@ -322,19 +349,15 @@ module OASISUtils = struct let compare_csl s1 s2 = - String.compare (String.lowercase s1) (String.lowercase s2) + String.compare (OASISString.lowercase_ascii s1) (OASISString.lowercase_ascii s2) module HashStringCsl = Hashtbl.Make (struct type t = string - - let equal s1 s2 = - (String.lowercase s1) = (String.lowercase s2) - - let hash s = - Hashtbl.hash (String.lowercase s) + let equal s1 s2 = (compare_csl s1 s2) = 0 + let hash s = Hashtbl.hash (OASISString.lowercase_ascii s) end) module SetStringCsl = @@ -372,7 +395,7 @@ module OASISUtils = struct else buf in - String.lowercase buf + OASISString.lowercase_ascii buf end @@ -478,7 +501,7 @@ module PropList = struct order = Queue.create (); name_norm = (if case_insensitive then - String.lowercase + OASISString.lowercase_ascii else fun s -> s); } @@ -1829,13 +1852,13 @@ module OASISUnixPath = struct let capitalize_file f = let dir = dirname f in let base = basename f in - concat dir (String.capitalize base) + concat dir (OASISString.capitalize_ascii base) let uncapitalize_file f = let dir = dirname f in let base = basename f in - concat dir (String.uncapitalize base) + concat dir (OASISString.uncapitalize_ascii base) end @@ -2897,7 +2920,7 @@ module OASISFileUtil = struct end -# 2893 "setup.ml" +# 2916 "setup.ml" module BaseEnvLight = struct (* # 22 "src/base/BaseEnvLight.ml" *) @@ -3002,7 +3025,7 @@ module BaseEnvLight = struct end -# 2998 "setup.ml" +# 3021 "setup.ml" module BaseContext = struct (* # 22 "src/base/BaseContext.ml" *) @@ -5413,7 +5436,7 @@ module BaseSetup = struct end -# 5409 "setup.ml" +# 5432 "setup.ml" module InternalConfigurePlugin = struct (* # 22 "src/plugins/internal/InternalConfigurePlugin.ml" *) @@ -5852,8 +5875,8 @@ module InternalInstallPlugin = struct let make_fnames modul sufx = List.fold_right begin fun sufx accu -> - (String.capitalize modul ^ sufx) :: - (String.uncapitalize modul ^ sufx) :: + (OASISString.capitalize_ascii modul ^ sufx) :: + (OASISString.uncapitalize_ascii modul ^ sufx) :: accu end sufx @@ -6277,7 +6300,7 @@ module InternalInstallPlugin = struct end -# 6273 "setup.ml" +# 6296 "setup.ml" module OCamlbuildCommon = struct (* # 22 "src/plugins/ocamlbuild/OCamlbuildCommon.ml" *) @@ -6655,7 +6678,7 @@ module OCamlbuildDocPlugin = struct end -# 6651 "setup.ml" +# 6674 "setup.ml" module CustomPlugin = struct (* # 22 "src/plugins/custom/CustomPlugin.ml" *) @@ -6803,7 +6826,7 @@ module CustomPlugin = struct end -# 6799 "setup.ml" +# 6822 "setup.ml" open OASISTypes;; let setup_t = @@ -7018,7 +7041,7 @@ let setup_t = alpha_features = ["ocamlbuild_more_args"]; beta_features = []; name = "utop"; - version = "1.19.2"; + version = "1.19.3"; license = OASISLicense.DEP5License (OASISLicense.DEP5Unit @@ -7410,8 +7433,8 @@ let setup_t = plugin_data = [] }; oasis_fn = Some "_oasis"; - oasis_version = "0.4.5"; - oasis_digest = Some "\139\014N\240a\b\031\249\252?\189mW\239U\219"; + oasis_version = "0.4.6"; + oasis_digest = Some "\127i\169Qp,p\139\"u\1626-A\155\222"; oasis_exec = None; oasis_setup_args = []; setup_update = false @@ -7419,7 +7442,7 @@ let setup_t = let setup () = BaseSetup.setup setup_t;; -# 7416 "setup.ml" +# 7439 "setup.ml" (* OASIS_STOP *) let search_compiler_libs () = diff --git a/src/lib/META b/src/lib/META index 4cf731f..a2afd18 100644 --- a/src/lib/META +++ b/src/lib/META @@ -1,6 +1,6 @@ # OASIS_START -# DO NOT EDIT (digest: 5ee7ad8b3e06661169d4cc65822e5b1f) -version = "1.19.2" +# DO NOT EDIT (digest: caf72eeee0d14b56758efd7d92090083) +version = "1.19.3" description = "utop configuration" requires = "findlib lambda-term" archive(byte) = "utop.cma" @@ -9,7 +9,7 @@ archive(native) = "utop.cmxa" archive(native, plugin) = "utop.cmxs" exists_if = "utop.cma" package "camlp4" ( - version = "1.19.2" + version = "1.19.3" description = "Camlp4 integration" requires = "utop camlp4" archive(syntax, preprocessor) = "utop-camlp4.cma" diff --git a/src/lib/uTop.cppo.ml b/src/lib/uTop.cppo.ml index c7d69c9..230eb6d 100644 --- a/src/lib/uTop.cppo.ml +++ b/src/lib/uTop.cppo.ml @@ -268,6 +268,11 @@ let parse_default parse str eos_is_error = Error ([mkloc loc], Printf.sprintf "Error: broken invariant in parsetree: %s" s) #endif +#if OCAML_VERSION >= (4, 03, 0) + | Syntaxerr.Invalid_package_type (loc, s) -> + Error ([mkloc loc], + Printf.sprintf "Invalid package type: %s" s) +#endif end | Syntaxerr.Escape_error | Parsing.Parse_error -> Error ([mkloc (Location.curr lexbuf)], diff --git a/src/lib/uTop_complete.cppo.ml b/src/lib/uTop_complete.cppo.ml index bdeaeaa..939d558 100644 --- a/src/lib/uTop_complete.cppo.ml +++ b/src/lib/uTop_complete.cppo.ml @@ -428,6 +428,16 @@ let add_names_of_type decl acc = acc #endif +#if OCAML_VERSION >= (4, 04, 0) +let path_of_mty_alias = function + | Mty_alias (_, path) -> path + | _ -> assert false +#elif OCAML_VERSION >= (4, 02, 0) +let path_of_mty_alias = function + | Mty_alias path -> path + | _ -> assert false +#endif + let rec names_of_module_type = function | Mty_signature decls -> List.fold_left @@ -458,7 +468,8 @@ let rec names_of_module_type = function | None -> String_set.empty end #if OCAML_VERSION >= (4, 02, 0) - | Mty_alias path -> begin + | Mty_alias _ as mty_alias -> begin + let path = path_of_mty_alias mty_alias in match lookup_env Env.find_module path !Toploop.toplevel_env with | None -> String_set.empty | Some { md_type = module_type } -> names_of_module_type module_type @@ -497,7 +508,8 @@ let rec fields_of_module_type = function | None -> String_set.empty end #if OCAML_VERSION >= (4, 02, 0) - | Mty_alias path -> begin + | Mty_alias _ as mty_alias -> begin + let path = path_of_mty_alias mty_alias in match lookup_env Env.find_module path !Toploop.toplevel_env with | None -> String_set.empty | Some { md_type = module_type } -> fields_of_module_type module_type @@ -569,6 +581,10 @@ let list_global_names () = | Env.Env_functor_arg(summary, id) -> loop (add (Ident.name id) acc) summary #endif +#if OCAML_VERSION >= (4, 04, 0) + | Env.Env_constraints (summary, _) -> + loop acc summary +#endif | Env.Env_open(summary, path) -> match try Some (Path_map.find path !local_names_by_path) with Not_found -> None with | Some names -> @@ -634,6 +650,10 @@ let list_global_fields () = loop (add (Ident.name id) acc) summary | Env.Env_cltype(summary, id, _) -> loop (add (Ident.name id) acc) summary +#if OCAML_VERSION >= (4, 04, 0) + | Env.Env_constraints (summary, _) -> + loop acc summary +#endif | Env.Env_open(summary, path) -> match try Some (Path_map.find path !local_fields_by_path) with Not_found -> None with | Some fields -> diff --git a/src/lib/uTop_main.cppo.ml b/src/lib/uTop_main.cppo.ml index bf134e4..5b4b923 100644 --- a/src/lib/uTop_main.cppo.ml +++ b/src/lib/uTop_main.cppo.ml @@ -93,6 +93,12 @@ let parse_input_multi input = in (result, Buffer.contents buf) +#if OCAML_VERSION >= (4, 04, 0) +let ast_impl_kind = Pparse.Structure +#elif OCAML_VERSION >= (4, 02, 0) +let ast_impl_kind = Config.ast_impl_magic_number +#endif + let parse_and_check input eos_is_error = let buf = Buffer.create 32 in let preprocess input = @@ -101,7 +107,7 @@ let parse_and_check input eos_is_error = | UTop.Value (Parsetree.Ptop_def pstr) -> begin try let pstr = Pparse.apply_rewriters ~tool_name:"ocaml" - Config.ast_impl_magic_number pstr in + ast_impl_kind pstr in UTop.Value (Parsetree.Ptop_def pstr) with Pparse.Error error -> Pparse.report_error Format.str_formatter error; @@ -136,7 +142,7 @@ let is_accept : LTerm_read_line.action -> bool = function | Accept -> true | action -> action == UTop.end_and_accept_current_phrase -(* Read a phrase. If the result is a value, it is guaranteed to by a +(* Read a phrase. If the result is a value, it is guaranteed to be a valid phrase (i.e. typable and compilable). It also returns warnings printed parsing. *) class read_phrase ~term = object(self) @@ -490,6 +496,14 @@ let rewrite_rules = [ } ] +#if OCAML_VERSION >= (4, 04, 0) +let lookup_type longident env = + let path = Env.lookup_type longident env in + (path, Env.find_type path env) +#else +let lookup_type = Env.lookup_type +#endif + let rule_path rule = match rule.path_to_rewrite with | Some _ as x -> x @@ -497,7 +511,7 @@ let rule_path rule = try let env = !Toploop.toplevel_env in let path = - match Env.lookup_type rule.type_to_rewrite env with + match lookup_type rule.type_to_rewrite env with | path, { Types.type_kind = Types.Type_abstract ; Types.type_private = Asttypes.Public ; Types.type_manifest = Some ty @@ -1063,7 +1077,7 @@ let typeof sid = in let out_sig_item = try - let (path, ty_decl) = Env.lookup_type id env in + let (path, ty_decl) = lookup_type id env in let id = Ident.create (Path.name path) in Some (Printtyp.tree_of_type_declaration id ty_decl Types.Trec_not) with Not_found -> -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-ocaml-maint/packages/utop.git _______________________________________________ Pkg-ocaml-maint-commits mailing list Pkg-ocaml-maint-commits@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-ocaml-maint-commits