From 234534e301172d6e1fb083bffc15fce6f9a7d808 Mon Sep 17 00:00:00 2001 From: Rudi Grinberg Date: Sun, 26 Aug 2018 14:43:22 +0300 Subject: [PATCH] Make String.spit_n work with n > len To make things consistent with drop/take Signed-off-by: Rudi Grinberg --- src/stdune/string.ml | 6 +----- test/unit-tests/string.mlt | 12 ++---------- 2 files changed, 3 insertions(+), 15 deletions(-) diff --git a/src/stdune/string.ml b/src/stdune/string.ml index e4b6b6cf..352b5095 100644 --- a/src/stdune/string.ml +++ b/src/stdune/string.ml @@ -249,11 +249,7 @@ let drop s n = let split_n s n = let len = length s in - if n > len then - Exn.code_error "String.split_n" - [ "s", Sexp.Atom s - ; "n", Sexp.Atom (string_of_int n) - ]; + let n = min n len in ( sub s ~pos:0 ~len:n , sub s ~pos:n ~len:(len - n) ) diff --git a/test/unit-tests/string.mlt b/test/unit-tests/string.mlt index de13a06a..1960dea9 100644 --- a/test/unit-tests/string.mlt +++ b/test/unit-tests/string.mlt @@ -57,11 +57,7 @@ String.split_n "foobar" 3;; String.split_n "foobar" 10;; [%%expect{| -Exception: -Code_error - (List - [Atom "String.split_n"; List [Atom "s"; Atom "foobar"]; - List [Atom "n"; Atom "10"]]). +- : string * string = ("foobar", "") |}] String.split_n "foobar" 0;; @@ -81,9 +77,5 @@ String.split_n "" 0;; String.split_n "" 10;; [%%expect{| -Exception: -Code_error - (List - [Atom "String.split_n"; List [Atom "s"; Atom ""]; - List [Atom "n"; Atom "10"]]). +- : string * string = ("", "") |}]