summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlasdair Armstrong2017-07-05 17:42:06 +0100
committerAlasdair Armstrong2017-07-05 17:42:06 +0100
commitcd3f299735d11241f064e9832c177830b78dcca4 (patch)
tree68371a087d7700c3d63834c3cc39e1c3ff970fc3
parent5f46cb01ed07fbca390535440f77f1816cb61684 (diff)
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.
-rw-r--r--src/sail.ml2
-rw-r--r--src/util.ml9
-rw-r--r--src/util.mli2
3 files changed, 11 insertions, 2 deletions
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 <filename>:<line>:<variable>"))),
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