about summary refs log tree commit diff
path: root/lib
diff options
context:
space:
mode:
authorNaïm Favier <n@monade.li>2022-12-02 11:57:20 +0100
committerNaïm Favier <n@monade.li>2022-12-02 12:04:36 +0100
commit3c2124c471814ba196e82e077ac3235c79430b07 (patch)
treeb3c66fa6952d545eca4224794cdca3079cc21519 /lib
parent3dc19ce82d5a435ff63a2d8771aaf4a8243f0c0f (diff)
lib/strings: simplify `splitString`
There's no need to use `unsafeDiscardStringContext` since
https://github.com/NixOS/nix/commit/ee7fe64c0ac00f2be11604a2a6509eb86dc19f0a
(Nix 1.8).

Also the separator can't have a context since `builtins.split` would fail, so
we can assume it doesn't.
Diffstat (limited to 'lib')
-rw-r--r--lib/strings.nix10
1 files changed, 4 insertions, 6 deletions
diff --git a/lib/strings.nix b/lib/strings.nix
index b5f5a4d9060ba..dd4796a15f36e 100644
--- a/lib/strings.nix
+++ b/lib/strings.nix
@@ -510,7 +510,7 @@ rec {
   toUpper = replaceChars lowerChars upperChars;
 
   /* Appends string context from another string.  This is an implementation
-     detail of Nix.
+     detail of Nix and should be used carefully.
 
      Strings in Nix carry an invisible `context` which is a list of strings
      representing store paths.  If the string is later used in a derivation
@@ -533,13 +533,11 @@ rec {
        splitString "/" "/usr/local/bin"
        => [ "" "usr" "local" "bin" ]
   */
-  splitString = _sep: _s:
+  splitString = sep: s:
     let
-      sep = builtins.unsafeDiscardStringContext _sep;
-      s = builtins.unsafeDiscardStringContext _s;
-      splits = builtins.filter builtins.isString (builtins.split (escapeRegex sep) s);
+      splits = builtins.filter builtins.isString (builtins.split (escapeRegex (toString sep)) (toString s));
     in
-      map (v: addContextFrom _sep (addContextFrom _s v)) splits;
+      map (addContextFrom s) splits;
 
   /* Return a string without the specified prefix, if the prefix matches.