...
Run Format

Source file test/fixedbugs/issue18410.go

Documentation: test/fixedbugs

  // 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()
  }
  

View as plain text