honnef.co/go/tools@v0.5.0-0.dev.0.20240520180541-dcae280a5e87/simple/s1025/testdata/src/example.com/CheckRedundantSprintf/LintRedundantSprintf.go (about)

     1  package pkg
     2  
     3  import "fmt"
     4  
     5  type T1 string
     6  type T2 T1
     7  type T3 int
     8  type T4 int
     9  type T5 int
    10  type T6 string
    11  type T7 []byte
    12  
    13  type T9 string
    14  type T10 []byte
    15  type T11 int
    16  
    17  type MyByte byte
    18  
    19  type Alias = byte
    20  type T13 = []byte
    21  type T14 = []Alias
    22  
    23  type T15 = string
    24  type T16 = T9
    25  type T17 = T6
    26  
    27  func (T3) String() string        { return "" }
    28  func (T6) String() string        { return "" }
    29  func (T4) String(arg int) string { return "" }
    30  func (T5) String()               {}
    31  
    32  func (T9) Format(f fmt.State, c rune)  {}
    33  func (T10) Format(f fmt.State, c rune) {}
    34  func (T11) Format(f fmt.State, c rune) {}
    35  func (T11) String() string             { return "" }
    36  
    37  func fn() {
    38  	var t1 T1
    39  	var t2 T2
    40  	var t3 T3
    41  	var t4 T4
    42  	var t5 T5
    43  	var t6 T6
    44  	var t7 T7
    45  	var t9 T9
    46  	var t10 T10
    47  	var t11 T11
    48  	var t12 []Alias
    49  	var t13 T13
    50  	var t14 T14
    51  	var t15 T15
    52  	var t16 T16
    53  	var t17 T17
    54  
    55  	_ = fmt.Sprintf("%s", "test")      //@ diag(`is already a string`)
    56  	_ = fmt.Sprintf("%s", t1)          //@ diag(`is a string`)
    57  	_ = fmt.Sprintf("%s", t2)          //@ diag(`is a string`)
    58  	_ = fmt.Sprintf("%s", t3)          //@ diag(`should use String() instead of fmt.Sprintf`)
    59  	_ = fmt.Sprintf("%s", t3.String()) //@ diag(`is already a string`)
    60  	_ = fmt.Sprintf("%s", t4)
    61  	_ = fmt.Sprintf("%s", t5)
    62  	_ = fmt.Sprintf("%s %s", t1, t2)
    63  	_ = fmt.Sprintf("%v", t1)
    64  	_ = fmt.Sprintf("%s", t6)  //@ diag(`should use String() instead of fmt.Sprintf`)
    65  	_ = fmt.Sprintf("%s", t7)  //@ diag(`underlying type is a slice of bytes`)
    66  	_ = fmt.Sprintf("%s", t12) //@ diag(`underlying type is a slice of bytes`)
    67  	_ = fmt.Sprintf("%s", t13) //@ diag(`underlying type is a slice of bytes`)
    68  	_ = fmt.Sprintf("%s", t14) //@ diag(`underlying type is a slice of bytes`)
    69  	_ = fmt.Sprintf("%s", t15) //@ diag(`is already a string`)
    70  	_ = fmt.Sprintf("%s", t17) //@ diag(`should use String() instead of fmt.Sprintf`)
    71  
    72  	// don't simplify types that implement fmt.Formatter
    73  	_ = fmt.Sprintf("%s", t9)
    74  	_ = fmt.Sprintf("%s", t10)
    75  	_ = fmt.Sprintf("%s", t11)
    76  	_ = fmt.Sprintf("%s", t16)
    77  }