modernc.org/gc@v1.0.1-0.20240304020402-f0dba7c97c2b/testdata/errchk/test/convert1.go (about)

     1  // errorcheck
     2  
     3  // Copyright 2011 The Go Authors. All rights reserved.
     4  // Use of this source code is governed by a BSD-style
     5  // license that can be found in the LICENSE file.
     6  
     7  // Verify that illegal conversions involving strings are detected.
     8  // Does not compile.
     9  
    10  package main
    11  
    12  type Tbyte []byte
    13  type Trune []rune
    14  type Tint64 []int64
    15  type Tstring string
    16  
    17  func main() {
    18  	s := "hello"
    19  	sb := []byte("hello")
    20  	sr := []rune("hello")
    21  	si := []int64{'h', 'e', 'l', 'l', 'o'}
    22  
    23  	ts := Tstring(s)
    24  	tsb := Tbyte(sb)
    25  	tsr := Trune(sr)
    26  	tsi := Tint64(si)
    27  
    28  	_ = string(s)
    29  	_ = []byte(s)
    30  	_ = []rune(s)
    31  	_ = []int64(s) // ERROR "cannot convert.*\[\]int64|invalid type conversion"
    32  	_ = Tstring(s)
    33  	_ = Tbyte(s)
    34  	_ = Trune(s)
    35  	_ = Tint64(s) // ERROR "cannot convert.*Tint64|invalid type conversion"
    36  
    37  	_ = string(sb)
    38  	_ = []byte(sb)
    39  	_ = []rune(sb)  // ERROR "cannot convert.*\[\]rune|invalid type conversion"
    40  	_ = []int64(sb) // ERROR "cannot convert.*\[\]int64|invalid type conversion"
    41  	_ = Tstring(sb)
    42  	_ = Tbyte(sb)
    43  	_ = Trune(sb)  // ERROR "cannot convert.*Trune|invalid type conversion"
    44  	_ = Tint64(sb) // ERROR "cannot convert.*Tint64|invalid type conversion"
    45  
    46  	_ = string(sr)
    47  	_ = []byte(sr) // ERROR "cannot convert.*\[\]byte|invalid type conversion"
    48  	_ = []rune(sr)
    49  	_ = []int64(sr) // ERROR "cannot convert.*\[\]int64|invalid type conversion"
    50  	_ = Tstring(sr)
    51  	_ = Tbyte(sr) // ERROR "cannot convert.*Tbyte|invalid type conversion"
    52  	_ = Trune(sr)
    53  	_ = Tint64(sr) // ERROR "cannot convert.*Tint64|invalid type conversion"
    54  
    55  	_ = string(si) // ERROR "cannot convert.* string|invalid type conversion"
    56  	_ = []byte(si) // ERROR "cannot convert.*\[\]byte|invalid type conversion"
    57  	_ = []rune(si) // ERROR "cannot convert.*\[\]rune|invalid type conversion"
    58  	_ = []int64(si)
    59  	_ = Tstring(si) // ERROR "cannot convert.*Tstring|invalid type conversion"
    60  	_ = Tbyte(si)   // ERROR "cannot convert.*Tbyte|invalid type conversion"
    61  	_ = Trune(si)   // ERROR "cannot convert.*Trune|invalid type conversion"
    62  	_ = Tint64(si)
    63  
    64  	_ = string(ts)
    65  	_ = []byte(ts)
    66  	_ = []rune(ts)
    67  	_ = []int64(ts) // ERROR "cannot convert.*\[\]int64|invalid type conversion"
    68  	_ = Tstring(ts)
    69  	_ = Tbyte(ts)
    70  	_ = Trune(ts)
    71  	_ = Tint64(ts) // ERROR "cannot convert.*Tint64|invalid type conversion"
    72  
    73  	_ = string(tsb)
    74  	_ = []byte(tsb)
    75  	_ = []rune(tsb)  // ERROR "cannot convert.*\[\]rune|invalid type conversion"
    76  	_ = []int64(tsb) // ERROR "cannot convert.*\[\]int64|invalid type conversion"
    77  	_ = Tstring(tsb)
    78  	_ = Tbyte(tsb)
    79  	_ = Trune(tsb)  // ERROR "cannot convert.*Trune|invalid type conversion"
    80  	_ = Tint64(tsb) // ERROR "cannot convert.*Tint64|invalid type conversion"
    81  
    82  	_ = string(tsr)
    83  	_ = []byte(tsr) // ERROR "cannot convert.*\[\]byte|invalid type conversion"
    84  	_ = []rune(tsr)
    85  	_ = []int64(tsr) // ERROR "cannot convert.*\[\]int64|invalid type conversion"
    86  	_ = Tstring(tsr)
    87  	_ = Tbyte(tsr) // ERROR "cannot convert.*Tbyte|invalid type conversion"
    88  	_ = Trune(tsr)
    89  	_ = Tint64(tsr) // ERROR "cannot convert.*Tint64|invalid type conversion"
    90  
    91  	_ = string(tsi) // ERROR "cannot convert.* string|invalid type conversion"
    92  	_ = []byte(tsi) // ERROR "cannot convert.*\[\]byte|invalid type conversion"
    93  	_ = []rune(tsi) // ERROR "cannot convert.*\[\]rune|invalid type conversion"
    94  	_ = []int64(tsi)
    95  	_ = Tstring(tsi) // ERROR "cannot convert.*Tstring|invalid type conversion"
    96  	_ = Tbyte(tsi)   // ERROR "cannot convert.*Tbyte|invalid type conversion"
    97  	_ = Trune(tsi)   // ERROR "cannot convert.*Trune|invalid type conversion"
    98  	_ = Tint64(tsi)
    99  }