@@ -751,7 +751,7 @@ defmodule StringTest do
751751 end
752752
753753 test "slice/2" do
754- assert String . slice ( "elixir" , 0 .. - 2 ) == "elixi"
754+ assert String . slice ( "elixir" , 0 .. - 2 // 1 ) == "elixi"
755755 assert String . slice ( "elixir" , 1 .. 3 ) == "lix"
756756 assert String . slice ( "elixir" , - 5 .. - 3 ) == "lix"
757757 assert String . slice ( "elixir" , - 5 .. 3 ) == "lix"
@@ -770,15 +770,19 @@ defmodule StringTest do
770770 assert String . slice ( "ειξήριολ" , 9 .. 9 ) == ""
771771 assert String . slice ( "" , 0 .. 0 ) == ""
772772 assert String . slice ( "" , 1 .. 1 ) == ""
773- assert String . slice ( "あいうえお" , - 2 .. - 4 ) == ""
774- assert String . slice ( "あいうえお" , - 10 .. - 15 ) == ""
775- assert String . slice ( "hello あいうえお Unicode" , 8 .. - 1 ) == "うえお Unicode"
773+ assert String . slice ( "あいうえお" , - 2 .. - 4 // 1 ) == ""
774+ assert String . slice ( "あいうえお" , - 10 .. - 15 // 1 ) == ""
775+ assert String . slice ( "hello あいうえお Unicode" , 8 .. - 1 // 1 ) == "うえお Unicode"
776776 assert String . slice ( "abc" , - 1 .. 14 ) == "c"
777- assert String . slice ( "a·̀ͯ‿.⁀:" , 0 .. - 2 ) == "a·̀ͯ‿.⁀"
777+ assert String . slice ( "a·̀ͯ‿.⁀:" , 0 .. - 2 // 1 ) == "a·̀ͯ‿.⁀"
778778
779779 assert_raise FunctionClauseError , fn ->
780780 String . slice ( nil , 0 .. 1 )
781781 end
782+
783+ assert ExUnit.CaptureIO . capture_io ( :stderr , fn ->
784+ assert String . slice ( "elixir" , 0 .. - 2 ) == "elixi"
785+ end ) =~ "negative steps are not supported in String.slice/2, pass 0..-2//1 instead"
782786 end
783787
784788 test "slice/2 with steps" do
0 commit comments