feat(tvix/eval): Support builtins.substring

Nix's `builtins.substring`:
- doesn't accept negative indexes for `beg` or `end`. Compare the error messages
  for:
  - `builtins.substring -3  5 "testing"`
  - `builtins.substring  3 -5 "testing"`
  - `builtins.substring -3 -5 "testing"`
- returns an empty string when `beg >= end`
- allows `end` to exceed the length of the input string

Change-Id: I83af7a099d81b6d537ebe5029d946c7031cb7113
Reviewed-on: https://cl.tvl.fyi/c/depot/+/6555
Reviewed-by: wpcarro <wpcarro@gmail.com>
Autosubmit: wpcarro <wpcarro@gmail.com>
Reviewed-by: tazjin <tazjin@tvl.su>
Tested-by: BuildkiteCI
This commit is contained in:
William Carroll 2022-09-06 14:33:10 -07:00 committed by clbot
parent 0c75ce2d3d
commit 2fe18e4486
4 changed files with 61 additions and 0 deletions

View file

@ -0,0 +1 @@
[ "tes" "testing" "" "estin" "ting" "" "" "" "" "est" "est" "est" "est" "est" "est" "" ]

View file

@ -0,0 +1,18 @@
[
(builtins.substring 0 3 "testing")
(builtins.substring 0 300 "testing")
(builtins.substring 3 0 "testing")
(builtins.substring 1 5 "testing")
(builtins.substring 3 5 "testing")
(builtins.substring 300 300 "testing")
(builtins.substring 301 300 "testing")
(builtins.substring 0 0 "")
(builtins.substring 0 1 "")
(builtins.substring (builtins.add 0 1) 3 "testing")
(builtins.substring 1 (builtins.add 3 0) "testing")
(builtins.substring (builtins.add 0 1) (builtins.add 3 0) "testing")
(builtins.substring (builtins.add 0 1) (builtins.add 3 0) "testing")
(builtins.substring (builtins.add 0 1) (builtins.add 3 0) ("test" + "ing"))
(builtins.substring (builtins.add 0 1) (builtins.add 3 0) ("test" + "ing"))
(builtins.substring 300 (-10) "testing")
]