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>
// 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...)
}