]> Cypherpunks.ru repositories - gostls13.git/blob - test/convert1.go
cmd/compile/internal/inline: score call sites exposed by inlines
[gostls13.git] / test / convert1.go
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 }