]> Cypherpunks repositories - gostls13.git/commitdiff
slices: improve Insert panic message for index out of range
authorgo101 <tapir.liu@gmail.com>
Thu, 16 Nov 2023 15:34:32 +0000 (15:34 +0000)
committerGopher Robot <gobot@golang.org>
Sun, 19 Nov 2023 17:06:47 +0000 (17:06 +0000)
The panic message of the current implementation for index out of range is not ideal.
This PR tries to improve it.

Fixes #63913 and #64152

Change-Id: Ibcf6c9c0f555c8b8bf46b7d6f20f0ccc5698acd4
GitHub-Last-Rev: 1bbec230f4b0ec547d21c8d38dd46007bd282855
GitHub-Pull-Request: golang/go#64163
Reviewed-on: https://go-review.googlesource.com/c/go/+/542455
Reviewed-by: David Chase <drchase@google.com>
Reviewed-by: Keith Randall <khr@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Keith Randall <khr@golang.org>
Auto-Submit: Keith Randall <khr@golang.org>

src/slices/slices.go

index 38b0fc14ad406a7a1c54345e5932cf97dcb4e001..b0f048a6566014875edd80606d12cb4b82fce2ce 100644 (file)
@@ -130,14 +130,13 @@ func ContainsFunc[S ~[]E, E any](s S, f func(E) bool) bool {
 // Insert panics if i is out of range.
 // This function is O(len(s) + len(v)).
 func Insert[S ~[]E, E any](s S, i int, v ...E) S {
-       n := len(s)
+       _ = s[i:] // bounds check
+
        m := len(v)
        if m == 0 {
-               // Panic if i is not in the range [0:n] inclusive.
-               // See issue 63913.
-               _ = s[:n:n][i:]
                return s
        }
+       n := len(s)
        if i == n {
                return append(s, v...)
        }