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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [testsuite/] [go.test/] [test/] [fixedbugs/] [bug184.go] - Rev 707

Go to most recent revision | 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.

package main

import "fmt"

type Buffer int

func (*Buffer) Read() {}

type Reader interface {
        Read()
}

func f() *Buffer { return nil }

func g() Reader {
        // implicit interface conversion in assignment during return
        return f()
}

func h() (b *Buffer, ok bool) { return }

func i() (r Reader, ok bool) {
        // implicit interface conversion in multi-assignment during return
        return h()
}

func fmter() (s string, i int, t string) { return "%#x %q", 100, "hello" }

func main() {
        b := g()
        bb, ok := b.(*Buffer)
        _, _, _ = b, bb, ok

        b, ok = i()
        bb, ok = b.(*Buffer)
        _, _, _ = b, bb, ok

        s := fmt.Sprintf(fmter())
        if s != "0x64 \"hello\"" {
                println(s)
                panic("fail")
        }
}

Go to most recent revision | Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

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