blob: 09b56a9a8108657f88e699f5fb2aff7e0a7e1683 [file] [log] [blame] [edit]
package stringscutprefix
import (
"strings"
)
var (
s, pre, suf string
)
// test supported cases of pattern 1 - CutPrefix
func _() {
if strings.HasPrefix(s, pre) { // want "HasPrefix \\+ TrimPrefix can be simplified to CutPrefix"
a := strings.TrimPrefix(s, pre)
_ = a
}
if strings.HasPrefix("", "") { // want "HasPrefix \\+ TrimPrefix can be simplified to CutPrefix"
a := strings.TrimPrefix("", "")
_ = a
}
if strings.HasPrefix(s, "") { // want "HasPrefix \\+ TrimPrefix can be simplified to CutPrefix"
println([]byte(strings.TrimPrefix(s, "")))
}
if strings.HasPrefix(s, "") { // want "HasPrefix \\+ TrimPrefix can be simplified to CutPrefix"
a, b := "", strings.TrimPrefix(s, "")
_, _ = a, b
}
if strings.HasPrefix(s, "") { // want "HasPrefix \\+ TrimPrefix can be simplified to CutPrefix"
a, b := strings.TrimPrefix(s, ""), strings.TrimPrefix(s, "") // only replace the first occurrence
s = "123"
b = strings.TrimPrefix(s, "") // only replace the first occurrence
_, _ = a, b
}
var a, b string
if strings.HasPrefix(s, "") { // want "HasPrefix \\+ TrimPrefix can be simplified to CutPrefix"
a, b = "", strings.TrimPrefix(s, "")
_, _ = a, b
}
}
// test basic cases for CutSuffix - only covering the key differences
func _() {
if strings.HasSuffix(s, suf) { // want "HasSuffix \\+ TrimSuffix can be simplified to CutSuffix"
a := strings.TrimSuffix(s, suf)
_ = a
}
if strings.HasSuffix(s, "") { // want "HasSuffix \\+ TrimSuffix can be simplified to CutSuffix"
println([]byte(strings.TrimSuffix(s, "")))
}
}
// test cases that are not supported by pattern1 - CutPrefix
func _() {
ok := strings.HasPrefix("", "")
if ok { // noop, currently it doesn't track the result usage of HasPrefix
a := strings.TrimPrefix("", "")
_ = a
}
if strings.HasPrefix(s, pre) {
a := strings.TrimPrefix("", "") // noop, as the argument isn't the same
_ = a
}
if strings.HasPrefix(s, pre) {
var result string
result = strings.TrimPrefix("", "") // noop, as we believe define is more popular.
_ = result
}
if strings.HasPrefix("", "") {
a := strings.TrimPrefix(s, pre) // noop, as the argument isn't the same
_ = a
}
if s1 := s; strings.HasPrefix(s1, pre) {
a := strings.TrimPrefix(s1, pre) // noop, as IfStmt.Init is present
_ = a
}
}
// test basic unsupported case for CutSuffix
func _() {
if strings.HasSuffix(s, suf) {
a := strings.TrimSuffix("", "") // noop, as the argument isn't the same
_ = a
}
}
var value0 string
// test supported cases of pattern2 - CutPrefix
func _() {
if after := strings.TrimPrefix(s, pre); after != s { // want "TrimPrefix can be simplified to CutPrefix"
println(after)
}
if after := strings.TrimPrefix(s, pre); s != after { // want "TrimPrefix can be simplified to CutPrefix"
println(after)
}
if after := strings.TrimPrefix(s, pre); s != after { // want "TrimPrefix can be simplified to CutPrefix"
println(strings.TrimPrefix(s, pre)) // noop here
}
if after := strings.TrimPrefix(s, ""); s != after { // want "TrimPrefix can be simplified to CutPrefix"
println(after)
}
var ok bool // define an ok variable to test the fix won't shadow it for its if stmt body
_ = ok
if after := strings.TrimPrefix(s, pre); after != s { // want "TrimPrefix can be simplified to CutPrefix"
println(after)
}
var predefined string
if predefined = strings.TrimPrefix(s, pre); s != predefined { // noop
println(predefined)
}
if predefined = strings.TrimPrefix(s, pre); s != predefined { // noop
println(&predefined)
}
var value string
if value = strings.TrimPrefix(s, pre); s != value { // noop
println(value)
}
lhsMap := make(map[string]string)
if lhsMap[""] = strings.TrimPrefix(s, pre); s != lhsMap[""] { // noop
println(lhsMap[""])
}
arr := make([]string, 0)
if arr[0] = strings.TrimPrefix(s, pre); s != arr[0] { // noop
println(arr[0])
}
type example struct {
field string
}
var e example
if e.field = strings.TrimPrefix(s, pre); s != e.field { // noop
println(e.field)
}
}
// test basic cases for pattern2 - CutSuffix
func _() {
if before := strings.TrimSuffix(s, suf); before != s { // want "TrimSuffix can be simplified to CutSuffix"
println(before)
}
if before := strings.TrimSuffix(s, suf); s != before { // want "TrimSuffix can be simplified to CutSuffix"
println(before)
}
}
// test cases that not supported by pattern2 - CutPrefix
func _() {
if after := strings.TrimPrefix(s, pre); s != pre { // noop
println(after)
}
if after := strings.TrimPrefix(s, pre); after != pre { // noop
println(after)
}
if strings.TrimPrefix(s, pre) != s {
println(strings.TrimPrefix(s, pre))
}
}
// test basic unsupported case for pattern2 - CutSuffix
func _() {
if before := strings.TrimSuffix(s, suf); s != suf { // noop
println(before)
}
}