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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [testsuite/] [go.test/] [test/] [interface/] [bigdata.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
// check that big vs small, pointer vs not
8
// interface methods work.
9
 
10
package main
11
 
12
type I interface { M() int64 }
13
 
14
type BigPtr struct { a, b, c, d int64 }
15
func (z *BigPtr) M() int64 { return z.a+z.b+z.c+z.d }
16
 
17
type SmallPtr struct { a int32 }
18
func (z *SmallPtr) M() int64 { return int64(z.a) }
19
 
20
type IntPtr int32
21
func (z *IntPtr) M() int64 { return int64(*z) }
22
 
23
var bad bool
24
 
25
func test(name string, i I) {
26
        m := i.M()
27
        if m != 12345 {
28
                println(name, m)
29
                bad = true
30
        }
31
}
32
 
33
func ptrs() {
34
        var bigptr BigPtr = BigPtr{ 10000, 2000, 300, 45 }
35
        var smallptr SmallPtr = SmallPtr{ 12345 }
36
        var intptr IntPtr = 12345
37
 
38
//      test("bigptr", bigptr)
39
        test("&bigptr", &bigptr)
40
//      test("smallptr", smallptr)
41
        test("&smallptr", &smallptr)
42
//      test("intptr", intptr)
43
        test("&intptr", &intptr)
44
}
45
 
46
type Big struct { a, b, c, d int64 }
47
func (z Big) M() int64 { return z.a+z.b+z.c+z.d }
48
 
49
type Small struct { a int32 }
50
func (z Small) M() int64 { return int64(z.a) }
51
 
52
type Int int32
53
func (z Int) M() int64 { return int64(z) }
54
 
55
func nonptrs() {
56
        var big Big = Big{ 10000, 2000, 300, 45 }
57
        var small Small = Small{ 12345 }
58
        var int Int = 12345
59
 
60
        test("big", big)
61
        test("&big", &big)
62
        test("small", small)
63
        test("&small", &small)
64
        test("int", int)
65
        test("&int", &int)
66
}
67
 
68
func main() {
69
        ptrs()
70
        nonptrs()
71
 
72
        if bad {
73
                println("BUG: interface4")
74
        }
75
}

powered by: WebSVN 2.1.0

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