Initial commit: Go 1.23 release state
This commit is contained in:
49
test/fixedbugs/bug184.go
Normal file
49
test/fixedbugs/bug184.go
Normal file
@@ -0,0 +1,49 @@
|
||||
// run
|
||||
|
||||
// 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")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user