// run // Copyright 2014 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. // Issue 8139. The x.(T) assertions used to write 1 (unexpected) // return byte for the 0-byte return value T. package main import "fmt" type T struct{} func (T) M() {} type M interface { M() } var e interface{} = T{} var i M = T{} var b bool func f1() int { if b { return f1() // convince inliner not to inline } z := 0x11223344 _ = e.(T) return z } func f2() int { if b { return f1() // convince inliner not to inline } z := 0x11223344 _ = i.(T) return z } func main() { x := f1() y := f2() if x != 0x11223344 || y != 0x11223344 { fmt.Printf("BUG: x=%#x y=%#x, want 0x11223344 for both\n", x, y) } }