OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [testsuite/] [go.test/] [test/] [named.go] - Blame information for rev 700

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 700 jeremybenn
// $G $D/$F.go && $L $F.$A && ./$A.out
2
 
3
// Copyright 2009 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
// Test that basic operations on named types are valid
8
// and preserve the type.
9
 
10
package main
11
 
12
type Array [10]byte
13
type Bool bool
14
type Chan chan int
15
type Float float32
16
type Int int
17
type Map map[int]byte
18
type Slice []byte
19
type String string
20
 
21
// Calling these functions checks at compile time that the argument
22
// can be converted implicitly to (used as) the given type.
23
func asArray(Array)   {}
24
func asBool(Bool)     {}
25
func asChan(Chan)     {}
26
func asFloat(Float)   {}
27
func asInt(Int)       {}
28
func asMap(Map)       {}
29
func asSlice(Slice)   {}
30
func asString(String) {}
31
 
32
func (Map) M() {}
33
 
34
 
35
// These functions check at run time that the default type
36
// (in the absence of any implicit conversion hints)
37
// is the given type.
38
func isArray(x interface{})  { _ = x.(Array) }
39
func isBool(x interface{})   { _ = x.(Bool) }
40
func isChan(x interface{})   { _ = x.(Chan) }
41
func isFloat(x interface{})  { _ = x.(Float) }
42
func isInt(x interface{})    { _ = x.(Int) }
43
func isMap(x interface{})    { _ = x.(Map) }
44
func isSlice(x interface{})  { _ = x.(Slice) }
45
func isString(x interface{}) { _ = x.(String) }
46
 
47
func main() {
48
        var (
49
                a     Array
50
                b     Bool   = true
51
                c     Chan   = make(Chan)
52
                f     Float  = 1
53
                i     Int    = 1
54
                m     Map    = make(Map)
55
                slice Slice  = make(Slice, 10)
56
                str   String = "hello"
57
        )
58
 
59
        asArray(a)
60
        isArray(a)
61
        asArray(*&a)
62
        isArray(*&a)
63
        asArray(Array{})
64
        isArray(Array{})
65
 
66
        asBool(b)
67
        isBool(b)
68
        asBool(!b)
69
        isBool(!b)
70
        asBool(true)
71
        asBool(*&b)
72
        isBool(*&b)
73
        asBool(Bool(true))
74
        isBool(Bool(true))
75
 
76
        asChan(c)
77
        isChan(c)
78
        asChan(make(Chan))
79
        isChan(make(Chan))
80
        asChan(*&c)
81
        isChan(*&c)
82
        asChan(Chan(nil))
83
        isChan(Chan(nil))
84
 
85
        asFloat(f)
86
        isFloat(f)
87
        asFloat(-f)
88
        isFloat(-f)
89
        asFloat(+f)
90
        isFloat(+f)
91
        asFloat(f + 1)
92
        isFloat(f + 1)
93
        asFloat(1 + f)
94
        isFloat(1 + f)
95
        asFloat(f + f)
96
        isFloat(f + f)
97
        f++
98
        f += 2
99
        asFloat(f - 1)
100
        isFloat(f - 1)
101
        asFloat(1 - f)
102
        isFloat(1 - f)
103
        asFloat(f - f)
104
        isFloat(f - f)
105
        f--
106
        f -= 2
107
        asFloat(f * 2.5)
108
        isFloat(f * 2.5)
109
        asFloat(2.5 * f)
110
        isFloat(2.5 * f)
111
        asFloat(f * f)
112
        isFloat(f * f)
113
        f *= 4
114
        asFloat(f / 2.5)
115
        isFloat(f / 2.5)
116
        asFloat(2.5 / f)
117
        isFloat(2.5 / f)
118
        asFloat(f / f)
119
        isFloat(f / f)
120
        f /= 4
121
        asFloat(f)
122
        isFloat(f)
123
        f = 5
124
        asFloat(*&f)
125
        isFloat(*&f)
126
        asFloat(234)
127
        asFloat(Float(234))
128
        isFloat(Float(234))
129
        asFloat(1.2)
130
        asFloat(Float(i))
131
        isFloat(Float(i))
132
 
133
        asInt(i)
134
        isInt(i)
135
        asInt(-i)
136
        isInt(-i)
137
        asInt(^i)
138
        isInt(^i)
139
        asInt(+i)
140
        isInt(+i)
141
        asInt(i + 1)
142
        isInt(i + 1)
143
        asInt(1 + i)
144
        isInt(1 + i)
145
        asInt(i + i)
146
        isInt(i + i)
147
        i++
148
        i += 1
149
        asInt(i - 1)
150
        isInt(i - 1)
151
        asInt(1 - i)
152
        isInt(1 - i)
153
        asInt(i - i)
154
        isInt(i - i)
155
        i--
156
        i -= 1
157
        asInt(i * 2)
158
        isInt(i * 2)
159
        asInt(2 * i)
160
        isInt(2 * i)
161
        asInt(i * i)
162
        isInt(i * i)
163
        i *= 2
164
        asInt(i / 5)
165
        isInt(i / 5)
166
        asInt(5 / i)
167
        isInt(5 / i)
168
        asInt(i / i)
169
        isInt(i / i)
170
        i /= 2
171
        asInt(i % 5)
172
        isInt(i % 5)
173
        asInt(5 % i)
174
        isInt(5 % i)
175
        asInt(i % i)
176
        isInt(i % i)
177
        i %= 2
178
        asInt(i & 5)
179
        isInt(i & 5)
180
        asInt(5 & i)
181
        isInt(5 & i)
182
        asInt(i & i)
183
        isInt(i & i)
184
        i &= 2
185
        asInt(i &^ 5)
186
        isInt(i &^ 5)
187
        asInt(5 &^ i)
188
        isInt(5 &^ i)
189
        asInt(i &^ i)
190
        isInt(i &^ i)
191
        i &^= 2
192
        asInt(i | 5)
193
        isInt(i | 5)
194
        asInt(5 | i)
195
        isInt(5 | i)
196
        asInt(i | i)
197
        isInt(i | i)
198
        i |= 2
199
        asInt(i ^ 5)
200
        isInt(i ^ 5)
201
        asInt(5 ^ i)
202
        isInt(5 ^ i)
203
        asInt(i ^ i)
204
        isInt(i ^ i)
205
        i ^= 2
206
        asInt(i << 4)
207
        isInt(i << 4)
208
        i <<= 2
209
        asInt(i >> 4)
210
        isInt(i >> 4)
211
        i >>= 2
212
        asInt(i)
213
        isInt(i)
214
        asInt(0)
215
        asInt(Int(0))
216
        isInt(Int(0))
217
        i = 10
218
        asInt(*&i)
219
        isInt(*&i)
220
        asInt(23)
221
        asInt(Int(f))
222
        isInt(Int(f))
223
 
224
        asMap(m)
225
        isMap(m)
226
        asMap(nil)
227
        m = nil
228
        asMap(make(Map))
229
        isMap(make(Map))
230
        asMap(*&m)
231
        isMap(*&m)
232
        asMap(Map(nil))
233
        isMap(Map(nil))
234
        asMap(Map{})
235
        isMap(Map{})
236
 
237
        asSlice(slice)
238
        isSlice(slice)
239
        asSlice(make(Slice, 5))
240
        isSlice(make(Slice, 5))
241
        asSlice([]byte{1, 2, 3})
242
        asSlice([]byte{1, 2, 3}[0:2])
243
        asSlice(slice[0:4])
244
        isSlice(slice[0:4])
245
        asSlice(slice[3:8])
246
        isSlice(slice[3:8])
247
        asSlice(nil)
248
        asSlice(Slice(nil))
249
        isSlice(Slice(nil))
250
        slice = nil
251
        asSlice(Slice{1, 2, 3})
252
        isSlice(Slice{1, 2, 3})
253
        asSlice(Slice{})
254
        isSlice(Slice{})
255
        asSlice(*&slice)
256
        isSlice(*&slice)
257
 
258
        asString(str)
259
        isString(str)
260
        asString(str + "a")
261
        isString(str + "a")
262
        asString("a" + str)
263
        isString("a" + str)
264
        asString(str + str)
265
        isString(str + str)
266
        str += "a"
267
        str += str
268
        asString(String('a'))
269
        isString(String('a'))
270
        asString(String([]byte(slice)))
271
        isString(String([]byte(slice)))
272
        asString(String([]byte(nil)))
273
        isString(String([]byte(nil)))
274
        asString("hello")
275
        asString(String("hello"))
276
        isString(String("hello"))
277
        str = "hello"
278
        isString(str)
279
        asString(*&str)
280
        isString(*&str)
281
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.