From cd3f299735d11241f064e9832c177830b78dcca4 Mon Sep 17 00:00:00 2001 From: Alasdair Armstrong Date: Wed, 5 Jul 2017 17:42:06 +0100 Subject: Added split_on_char as a utility function in Util.ml, and replaced usage in sail.ml Current REMS install script and Jenkins CI server is on an older ocaml which doesn't have this function in String. --- src/sail.ml | 2 +- src/util.ml | 9 ++++++++- src/util.mli | 2 ++ 3 files changed, 11 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/sail.ml b/src/sail.ml index 41c42fe4..d84144e1 100644 --- a/src/sail.ml +++ b/src/sail.ml @@ -89,7 +89,7 @@ let options = Arg.align ([ " (debug) skip constraint resolution in type-checking"); ( "-mono-split", Arg.String (fun s -> - let l = String.split_on_char ':' s in + let l = Util.split_on_char ':' s in match l with | [fname;line;var] -> opt_mono_split := ((fname,int_of_string line),var)::!opt_mono_split | _ -> raise (Arg.Bad (s ^ " not of form ::"))), diff --git a/src/util.ml b/src/util.ml index bb277016..9b76c118 100644 --- a/src/util.ml +++ b/src/util.ml @@ -144,7 +144,14 @@ let rec compare_list f l1 l2 = compare_list f l1 l2 else c - + +let rec split_on_char sep str = + try + let sep_pos = String.index str sep in + String.sub str 0 sep_pos :: split_on_char sep (String.sub str (sep_pos + 1) (String.length str - (sep_pos + 1))) + with + | Not_found -> [str] + let map_changed_default d f l = let rec g = function | [] -> ([],false) diff --git a/src/util.mli b/src/util.mli index 496c63cf..099839bb 100644 --- a/src/util.mli +++ b/src/util.mli @@ -198,3 +198,5 @@ module ExtraSet : functor (S : Set.S) -> (*Formatting functions*) val string_of_list : string -> ('a -> string) -> 'a list -> string + +val split_on_char : char -> string -> string list -- cgit v1.2.3