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 }