diff --git a/src/core/CCArray.ml b/src/core/CCArray.ml index 93f3e955..f9d7c2a8 100644 --- a/src/core/CCArray.ml +++ b/src/core/CCArray.ml @@ -139,11 +139,15 @@ let rec find_aux f a i = | None -> find_aux f a (i + 1) ) +[@@@ocaml.warning "-32"] + let find_map f a = find_aux (fun _ -> f) a 0 let find = find_map let find_map_i f a = find_aux f a 0 let findi = find_map_i +[@@@ocaml.warning "+32"] + let find_idx p a = find_aux (fun i x -> @@ -154,58 +158,76 @@ let find_idx p a = a 0 let max cmp a = - if Array.length a = 0 then None - else Some ( - fold - (fun acc elt -> if cmp acc elt < 0 then elt else acc) - a.(0) - a) + if Array.length a = 0 then + None + else + Some + (fold + (fun acc elt -> + if cmp acc elt < 0 then + elt + else + acc) + a.(0) a) let max_exn cmp a = match max cmp a with - | None -> invalid_arg "CCArray.max_exn" - | Some elt -> elt - + | None -> invalid_arg "CCArray.max_exn" + | Some elt -> elt let argmax cmp a = - if Array.length a = 0 then None - else Some ( - foldi - (fun acc i elt -> if cmp a.(acc) elt < 0 then i else acc) - 0 - a) + if Array.length a = 0 then + None + else + Some + (foldi + (fun acc i elt -> + if cmp a.(acc) elt < 0 then + i + else + acc) + 0 a) let argmax_exn cmp a = match argmax cmp a with - | None -> invalid_arg "CCArray.argmax_exn" - | Some elt -> elt + | None -> invalid_arg "CCArray.argmax_exn" + | Some elt -> elt let min cmp a = - if Array.length a = 0 then None - else Some ( - fold - (fun acc elt -> if cmp acc elt > 0 then elt else acc) - a.(0) - a) + if Array.length a = 0 then + None + else + Some + (fold + (fun acc elt -> + if cmp acc elt > 0 then + elt + else + acc) + a.(0) a) let min_exn cmp a = match min cmp a with - | None -> invalid_arg "CCArray.min_exn" - | Some elt -> elt - + | None -> invalid_arg "CCArray.min_exn" + | Some elt -> elt let argmin cmp a = - if Array.length a = 0 then None - else Some ( - foldi - (fun acc i elt -> if cmp a.(acc) elt > 0 then i else acc) - 0 - a) + if Array.length a = 0 then + None + else + Some + (foldi + (fun acc i elt -> + if cmp a.(acc) elt > 0 then + i + else + acc) + 0 a) let argmin_exn cmp a = match argmin cmp a with - | None -> invalid_arg "CCArray.argmin_exn" - | Some elt -> elt + | None -> invalid_arg "CCArray.argmin_exn" + | Some elt -> elt let filter_map f a = let rec aux acc i = diff --git a/src/core/CCFloat.ml b/src/core/CCFloat.ml index 69f749ff..13be50ad 100644 --- a/src/core/CCFloat.ml +++ b/src/core/CCFloat.ml @@ -27,6 +27,8 @@ end include Infix +[@@@ocaml.warning "-32"] + let nan = Stdlib.nan let infinity = Stdlib.infinity let neg_infinity = Stdlib.neg_infinity @@ -68,6 +70,8 @@ let equal (a : float) b = a = b let hash : t -> int = Hashtbl.hash let compare (a : float) b = Stdlib.compare a b +[@@@ocaml.warning "+32"] + type 'a printer = Format.formatter -> 'a -> unit type 'a random_gen = Random.State.t -> 'a diff --git a/src/core/CCFun.ml b/src/core/CCFun.ml index faa408ce..4f2bf27d 100644 --- a/src/core/CCFun.ml +++ b/src/core/CCFun.ml @@ -2,8 +2,12 @@ (** {1 Basic Functions} *) +[@@@ocaml.warning "-32"] + let opaque_identity x = x +[@@@ocaml.warning "+32"] + (* import standard implementations, if any *) include Sys @@ -14,13 +18,10 @@ include CCShims_.Stdlib include Fun [@@@else_] +[@@@ocaml.warning "-32"] external id : 'a -> 'a = "%identity" -let[@inline] flip f x y = f y x -let[@inline] const x _ = x -let[@inline] negate f x = not (f x) - let[@inline] protect ~finally f = try let x = f () in @@ -30,6 +31,12 @@ let[@inline] protect ~finally f = finally (); raise e +[@@@ocaml.warning "+32"] + +let[@inline] flip f x y = f y x +let[@inline] const x _ = x +let[@inline] negate f x = not (f x) + [@@@endif] let compose f g x = g (f x) diff --git a/src/core/CCInt.mli b/src/core/CCInt.mli index 3c0e0f49..e09b1c4c 100644 --- a/src/core/CCInt.mli +++ b/src/core/CCInt.mli @@ -111,10 +111,14 @@ val to_float : t -> float (** [to_float] is the same as [float_of_int] @since 3.0*) +[@@@ocaml.warning "-32"] + val of_float : float -> t (** [to_float] is the same as [int_of_float] @since 3.0*) +[@@@ocaml.warning "+32"] + val to_string : t -> string (** [to_string x] returns the string representation of the integer [x], in signed decimal. @since 0.13 *) diff --git a/src/core/CCList.ml b/src/core/CCList.ml index e54cb3fb..da0d3b67 100644 --- a/src/core/CCList.ml +++ b/src/core/CCList.ml @@ -6,6 +6,8 @@ open CCShims_ (* backport new functions from stdlib here *) +[@@@ocaml.warning "-32"] + let nth_opt l n = if n < 0 then invalid_arg "nth_opt"; let rec aux l n = @@ -46,6 +48,8 @@ let rec assq_opt x = function | (y, v) :: _ when Stdlib.( == ) x y -> Some v | _ :: tail -> assq_opt x tail +[@@@ocaml.warning "+32"] + (* end of backport *) [@@@ifge 4.8] diff --git a/src/core/CCList.mli b/src/core/CCList.mli index f620df87..b626b362 100644 --- a/src/core/CCList.mli +++ b/src/core/CCList.mli @@ -33,18 +33,6 @@ val is_empty : _ t -> bool (** [is_empty l] returns [true] iff [l = []]. @since 0.11 *) -val map : ('a -> 'b) -> 'a t -> 'b t -(** [map f [a0; a1; …; an]] applies function [f] in turn to [a0; a1; …; an]. - Safe version of {!List.map}. *) - -val ( >|= ) : 'a t -> ('a -> 'b) -> 'b t -(** [l >|= f] is the infix version of [map] with reversed arguments. - @since 0.5 *) - -val append : 'a t -> 'a t -> 'a t -(** [append l1 l2] returns the list that is the concatenation of [l1] and [l2]. - Safe version of {!List.append}. *) - val cons_maybe : 'a option -> 'a t -> 'a t (** [cons_maybe (Some x) l] is [x :: l]. [cons_maybe None l] is [l]. @@ -55,21 +43,6 @@ val cons' : 'a t -> 'a -> 'a t functions such as {!List.fold_left} or {!Array.fold_left}. @since 3.3 *) -val ( @ ) : 'a t -> 'a t -> 'a t -(** [l1 @ l2] is like [append l1 l2]. - Concatenate the two lists [l1] and [l2]. *) - -val filter : ('a -> bool) -> 'a t -> 'a t -(** [filter p l] returns all the elements of the list [l] - that satisfy the predicate [p]. The order of the elements - in the input list [l] is preserved. - Safe version of {!List.filter}. *) - -val fold_right : ('a -> 'b -> 'b) -> 'a t -> 'b -> 'b -(** [fold_right f [a1; …; an] b] is - [f a1 (f a2 ( … (f an b) … ))]. - Safe version of {!List.fold_right}. *) - val fold_while : ('a -> 'b -> 'a * [ `Stop | `Continue ]) -> 'a -> 'b t -> 'a (** [fold_while f init l] folds until a stop condition via [('a, `Stop)] is indicated by the accumulator. @@ -408,18 +381,9 @@ val mguard : bool -> unit t ]} @since 3.1 *) -val ( <*> ) : ('a -> 'b) t -> 'a t -> 'b t -(** [funs <*> l] is [product (fun f x -> f x) funs l]. *) - -val ( <$> ) : ('a -> 'b) -> 'a t -> 'b t -(** [(<$>)] is [map]. *) - val return : 'a -> 'a t (** [return x] is [x]. *) -val ( >>= ) : 'a t -> ('a -> 'b t) -> 'b t -(** [l >>= f] is [flat_map f l]. *) - val take : int -> 'a t -> 'a t (** [take n l] takes the [n] first elements of the list [l], drop the rest. *) @@ -722,15 +686,6 @@ val range' : int -> int -> int t (** [range' i j] is like {!range} but the second bound [j] is excluded. For instance [range' 0 5 = [0;1;2;3;4]]. *) -val ( -- ) : int -> int -> int t -(** [i -- j] is the list of integers from [i] to [j] included. - Infix alias for [range]. *) - -val ( --^ ) : int -> int -> int t -(** [i --^ j] is the list of integers from [i] to [j] excluded. - Infix alias for [range']. - @since 0.17 *) - val replicate : int -> 'a -> 'a t (** [replicate n x] replicates the given element [x] [n] times. *) diff --git a/src/core/CCMap.ml b/src/core/CCMap.ml index 2f63a8d9..c4a999b4 100644 --- a/src/core/CCMap.ml +++ b/src/core/CCMap.ml @@ -178,6 +178,8 @@ module Make (O : Map.OrderedType) = struct (* backport functions from recent stdlib. they will be shadowed by inclusion of [S] if present. *) + [@@@ocaml.warning "-32"] + let union f a b = M.merge (fun k v1 v2 -> @@ -230,6 +232,8 @@ module Make (O : Map.OrderedType) = struct | None -> raise Not_found | Some (k, v) -> k, v + [@@@ocaml.warning "+32"] + (* === include M. This will shadow some values depending on OCaml's current version === *) diff --git a/src/core/CCParse.ml b/src/core/CCParse.ml index 747827b2..8ed04556 100644 --- a/src/core/CCParse.ml +++ b/src/core/CCParse.ml @@ -338,7 +338,6 @@ let parsing what p = } let empty = { run = (fun st ~ok ~err:_ -> ok st ()) } -let nop = empty let any_char = { run = (fun st ~ok ~err -> consume_ st ~ok ~err) } let char c : _ t = @@ -811,8 +810,6 @@ let split_list_at_most ~on_char n : slice list t = in loop [] n -let split_list ~on_char : _ t = split_list_at_most ~on_char max_int - let split_2 ~on_char : _ t = split_list_at_most ~on_char 3 >>= function | [ a; b ] -> return (a, b) @@ -948,8 +945,6 @@ let parse_file_exn p file = | Error e -> raise (ParseError e) module U = struct - let sep_ = sep - let list ?(start = "[") ?(stop = "]") ?(sep = ";") p = string start *> skip_white *> sep_until diff --git a/src/core/CCResult.ml b/src/core/CCResult.ml index 33e23b5a..1e36de21 100644 --- a/src/core/CCResult.ml +++ b/src/core/CCResult.ml @@ -108,11 +108,6 @@ let get_or_failwith = function | Ok x -> x | Error msg -> failwith msg -let get_lazy default_fn x = - match x with - | Ok x -> x - | Error e -> default_fn e - let map_or f e ~default = match e with | Ok x -> f x diff --git a/src/core/CCResult.mli b/src/core/CCResult.mli index e71eb625..47f1be1b 100644 --- a/src/core/CCResult.mli +++ b/src/core/CCResult.mli @@ -94,11 +94,6 @@ val get_exn : ('a, _) t -> 'a val get_or : ('a, _) t -> default:'a -> 'a (** [get_or e ~default] returns [x] if [e = Ok x], [default] otherwise. *) -val get_lazy : ('e -> 'a) -> ('a, 'e) t -> 'a -(** [get_lazy f e] returns [x] if [e = Ok x], [f msg] if [e = Error msg]. - This is similar to {!CCOption.get_lazy}. - @since 3.0 *) - val get_or_failwith : ('a, string) t -> 'a (** [get_or_failwith e] returns [x] if [e = Ok x], fails otherwise. @raise Failure with [msg] if [e = Error msg]. diff --git a/src/core/CCSet.ml b/src/core/CCSet.ml index 9d6e9d46..67be378f 100644 --- a/src/core/CCSet.ml +++ b/src/core/CCSet.ml @@ -101,6 +101,8 @@ module Make (O : Map.OrderedType) = struct (* backport functions from recent stdlib. they will be shadowed by inclusion of [S] if present. *) + [@@@ocaml.warning "-32"] + let find_opt x s = try Some (S.find x s) with Not_found -> None let choose_opt s = try Some (S.choose s) with Not_found -> None let min_elt_opt s = try Some (S.min_elt s) with Not_found -> None @@ -151,17 +153,23 @@ module Make (O : Map.OrderedType) = struct | None -> raise Not_found | Some x -> x + [@@@ocaml.warning "+32"] + include S (* Use find_last which is linear time on OCaml < 4.05 *) let find_last_map f m = let res = ref None in - let _ = find_last_opt - (fun x -> - match f x with - | None -> false - | Some y -> res := Some y; true) - m in + let _ = + find_last_opt + (fun x -> + match f x with + | None -> false + | Some y -> + res := Some y; + true) + m + in !res let add_seq seq set = diff --git a/src/core/CCUtf8_string.ml b/src/core/CCUtf8_string.ml index 88c8a69f..2d52a38b 100644 --- a/src/core/CCUtf8_string.ml +++ b/src/core/CCUtf8_string.ml @@ -10,8 +10,17 @@ type uchar = Uchar.t type 'a gen = unit -> 'a option type 'a iter = ('a -> unit) -> unit +(* compat shim *) + +[@@@ocaml.warning "-32"] + let equal (a : string) b = Stdlib.( = ) a b let hash : string -> int = Hashtbl.hash + +[@@@ocaml.warning "+32"] + +(* end compat shim *) + let pp = Format.pp_print_string include String diff --git a/src/core/CCVector.ml b/src/core/CCVector.ml index 1faa6c56..20d4053d 100644 --- a/src/core/CCVector.ml +++ b/src/core/CCVector.ml @@ -500,15 +500,6 @@ let flat_map f v = iter (fun x -> iter (push v') (f x)) v; v' -let flat_map_iter f v = - let v' = create () in - iter - (fun x -> - let seq = f x in - append_iter v' seq) - v; - v' - let flat_map_seq f v = let v' = create () in iter diff --git a/src/core/dune b/src/core/dune index 89b49743..8e7c04d8 100644 --- a/src/core/dune +++ b/src/core/dune @@ -6,8 +6,7 @@ (preprocess (action (run %{project_root}/src/core/cpp/cpp.exe %{input-file}))) - (flags :standard -warn-error -a+8 -w -32-70 -safe-string -strict-sequence - -nolabels -open CCMonomorphic) + (flags :standard -nolabels -open CCMonomorphic) (libraries seq either containers.monomorphic)) (ocamllex