// run // Copyright 2016 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. // This checks partially initialized structure literals // used to create value.method functions have their // non-initialized fields properly zeroed/nil'd package main type X struct { A, B, C *int } //go:noinline func (t X) Print() { if t.B != nil { panic("t.B must be nil") } } //go:noinline func caller(f func()) { f() } //go:noinline func test() { var i, j int x := X{A: &i, C: &j} caller(func() { X{A: &i, C: &j}.Print() }) caller(X{A: &i, C: &j}.Print) caller(x.Print) } func main() { test() }