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] - Rev 700

Compare with Previous | Blame | View Log

// $G $D/$F.go && $L $F.$A && ./$A.out

// Copyright 2009 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// check that big vs small, pointer vs not
// interface methods work.

package main

type I interface { M() int64 }

type BigPtr struct { a, b, c, d int64 }
func (z *BigPtr) M() int64 { return z.a+z.b+z.c+z.d }

type SmallPtr struct { a int32 }
func (z *SmallPtr) M() int64 { return int64(z.a) }

type IntPtr int32
func (z *IntPtr) M() int64 { return int64(*z) }

var bad bool

func test(name string, i I) {
        m := i.M()
        if m != 12345 {
                println(name, m)
                bad = true
        }
}

func ptrs() {
        var bigptr BigPtr = BigPtr{ 10000, 2000, 300, 45 }
        var smallptr SmallPtr = SmallPtr{ 12345 }
        var intptr IntPtr = 12345

//      test("bigptr", bigptr)
        test("&bigptr", &bigptr)
//      test("smallptr", smallptr)
        test("&smallptr", &smallptr)
//      test("intptr", intptr)
        test("&intptr", &intptr)
}

type Big struct { a, b, c, d int64 }
func (z Big) M() int64 { return z.a+z.b+z.c+z.d }

type Small struct { a int32 }
func (z Small) M() int64 { return int64(z.a) }

type Int int32
func (z Int) M() int64 { return int64(z) }

func nonptrs() {
        var big Big = Big{ 10000, 2000, 300, 45 }
        var small Small = Small{ 12345 }
        var int Int = 12345

        test("big", big)
        test("&big", &big)
        test("small", small)
        test("&small", &small)
        test("int", int)
        test("&int", &int)
}

func main() {
        ptrs()
        nonptrs()

        if bad {
                println("BUG: interface4")
        }
}

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

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