blob: 0390eab3009caec863b6d9d0e1677be960faafd9 [file] [log] [blame] [edit]
package stringscut
import (
"bytes"
"strings"
)
func basic(s string) bool {
s = "reassigned"
i := strings.Index(s, "=") // want "strings.Index can be simplified using strings.Cut"
print(s[:i])
return i >= 0
}
func basic_contains(s string) bool {
s = "reassigned"
i := strings.Index(s, "=") // want "strings.Index can be simplified using strings.Contains"
return i >= 0
}
func contains_variety(s, sub string) {
i := strings.Index(s, sub) // want "strings.Index can be simplified using strings.Contains"
if i >= 0 {
print("found")
}
if i < 0 {
print("not found")
}
if i <= -1 {
print("not found")
}
}
func basic_contains_bytes(s string) bool {
i := strings.IndexByte(s, '=') // want "strings.IndexByte can be simplified using strings.Contains"
return i < 0
}
func basic_contains_bytes_byte(s []byte) bool {
i := bytes.IndexByte(s, 22) // want "bytes.IndexByte can be simplified using bytes.Contains"
return i < 0
}
func skip_var_decl(s string) bool {
var i int
i = strings.Index(s, "=") // don't modernize - i might be reassigned
print(s[:i])
return i >= 0
}
func basic_substr_arg(s string, substr string) bool {
i := strings.Index(s, substr) // want "strings.Index can be simplified using strings.Cut"
print(s[i+len(substr):])
return i >= 0
}
func wrong_len_arg(s string, substr string) bool {
i := strings.Index(s, substr) // don't modernize since i+len(s) is not valid
print(s[i+len(s):])
return i >= 0
}
func basic_strings_byte(s string) bool {
i := strings.IndexByte(s, '+') // want "strings.IndexByte can be simplified using strings.Cut"
print(s[:i])
return i >= 0
}
func basic_strings_byte_int(s string) bool {
i := strings.IndexByte(s, 55) // want "strings.IndexByte can be simplified using strings.Cut"
print(s[:i])
return i >= 0
}
func basic_strings_byte_var(s string) bool {
b := byte('b')
i := strings.IndexByte(s, b) // want "strings.IndexByte can be simplified using strings.Cut"
print(s[:i])
return i >= 0
}
func basic_bytes(b []byte) []byte {
i := bytes.Index(b, []byte("str")) // want "bytes.Index can be simplified using bytes.Cut"
if i >= 0 {
return b[:i]
} else {
return b[i+3:]
}
}
func basic_index_bytes(b []byte) string {
i := bytes.IndexByte(b, 's') // want "bytes.IndexByte can be simplified using bytes.Cut"
if i >= 0 {
return string(b[:i])
} else {
return string(b[i+1:])
}
}
func const_substr_len(s string) bool {
i := strings.Index(s, "=") // want "strings.Index can be simplified using strings.Cut"
r := s[i+len("="):]
return len(r) > 0
}
func const_for_len(s string) bool {
i := strings.Index(s, "=") // want "strings.Index can be simplified using strings.Cut"
r := s[i+1:]
return len(r) > 0
}
func index(s string) bool {
i := strings.Index(s, "=") // want "strings.Index can be simplified using strings.Cut"
if i < 0 {
return false
}
if i >= 0 {
return true
}
print(s[:i])
return true
}
func index_flipped(s string) bool {
i := strings.Index(s, "=") // want "strings.Index can be simplified using strings.Cut"
if 0 > i {
return false
}
if 0 <= i {
return true
}
print(s[:i])
return true
}
func invalid_index(s string) bool {
i := strings.Index(s, "=") // don't modernize since i is used in an "invalid" binaryexpr
if 0 > i {
return false
}
if i < 10 {
return true
}
return true
}
func invalid_slice(s string) string {
i := strings.Index(s, "=") // don't modernize since i is used in an "invalid" slice index
if i >= 0 {
return s[i+4:]
}
return ""
}
func index_and_before_after(s string) string {
substr := "="
i := strings.Index(s, substr) // want "strings.Index can be simplified using strings.Cut"
if i == -1 {
print("test")
}
if i < 0 {
return ""
} else {
if i >= 0 {
return s[:i]
} else {
return s[i+len(substr):]
}
}
if -1 == i {
return s[len(substr)+i:]
}
return "final"
}
func idx_var_init(s string) (string, string) {
var idx = strings.Index(s, "=") // want "strings.Index can be simplified using strings.Cut"
return s[0:idx], s
}
func idx_reassigned(s string) string {
idx := strings.Index(s, "=") // don't modernize since idx gets reassigned
idx = 10
return s[:idx]
}
func idx_printed(s string) string {
idx := strings.Index(s, "=") // don't modernize since idx is used
print(idx)
return s[:idx]
}
func idx_aliased(s string) string {
idx := strings.Index(s, "=") // don't modernize since idx gets aliased
i := idx
return s[:i]
}
func idx_aliased_var(s string) string {
idx := strings.Index(s, "=") // don't modernize since idx gets aliased
var i = idx
print(i)
return s[:idx]
}
func s_modified(s string) string {
idx := strings.Index(s, "=") // don't modernize since s gets modified
s = "newstring"
return s[:idx]
}
func s_modified_no_params() string {
s := "string"
idx := strings.Index(s, "=") // don't modernize since s gets modified
s = "newstring"
return s[:idx]
}
func s_in_func_call() string {
s := "string"
substr := "substr"
idx := strings.Index(s, substr) // want "strings.Index can be simplified using strings.Cut"
function(s)
return s[:idx]
}
func s_pointer() string {
s := "string"
idx := strings.Index(s, "s")
ptr := &s // don't modernize since s may get modified
reference_str(ptr)
return s[:idx]
}
func s_pointer_before_call() string {
s := "string"
ptr := &s // don't modernize since s may get modified
reference_str(ptr)
idx := strings.Index(s, "s")
return s[:idx]
}
func idx_used_before(s string, sub string) string {
var index int
reference_int(&index)
index = strings.Index(s, sub) // don't modernize since index may get modified
blank()
if index >= 0 {
return s[:index]
}
return ""
}
func idx_used_other_substr(s string, sub string) string {
otherstr := "other"
i := strings.Index(s, sub)
print(otherstr[:i]) // don't modernize since i used in another slice expr
if i >= 0 {
return s[:i]
} else {
return ""
}
}
func idx_gtr_zero_invalid(s string, sub string) string {
i := strings.Index(s, sub)
if i > 0 { // don't modernize since this is a stronger claim than i >= 0
return s[:i]
}
return ""
}
func idx_gtreq_one_invalid(s string, sub string) string {
i := strings.Index(s, sub)
if i >= 1 { // don't modernize since this is a stronger claim than i >= 0
return s[:i]
}
return ""
}
func idx_gtr_negone(s string, sub string) string {
i := strings.Index(s, sub) // want "strings.Index can be simplified using strings.Cut"
if i > -1 {
return s[:i]
}
if i != -1 {
return s
}
return ""
}
func function(s string) {}
func reference_str(s *string) {}
func reference_int(i *int) {}
func blank() {}