diff options
author | Russ Cox <rsc@golang.org> | 2009-08-07 14:00:18 -0700 |
---|---|---|
committer | Russ Cox <rsc@golang.org> | 2009-08-07 14:00:18 -0700 |
commit | cea1e0dd17fa7588a0432aa638f4589dfc8f4de4 (patch) | |
tree | 5f0860c4a4639e7e57d5bdb7e9af947c137094e4 /test/fixedbugs/bug184.go | |
parent | 96a040d63ec4148c392b4186e189a374e2521d05 (diff) | |
download | go-cea1e0dd17fa7588a0432aa638f4589dfc8f4de4.tar.gz |
bug184 - assignment compatibility in unpacked multireturn
R=ken
OCL=32890
CL=32894
Diffstat (limited to 'test/fixedbugs/bug184.go')
-rw-r--r-- | test/fixedbugs/bug184.go | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/test/fixedbugs/bug184.go b/test/fixedbugs/bug184.go new file mode 100644 index 000000000..95a76d081 --- /dev/null +++ b/test/fixedbugs/bug184.go @@ -0,0 +1,51 @@ +// $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, ok = i(); + bb, ok = b.(*Buffer); + + s := fmt.Sprintf(fmter()); + if s != "0x64 \"hello\"" { + panicln(s); + } +} + |