...
Run Format

Source file test/fixedbugs/issue4909a.go

Documentation: test/fixedbugs

  // errorcheck
  
  // Copyright 2013 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 4909: compiler incorrectly accepts unsafe.Offsetof(t.x)
  // where x is a field of an embedded pointer field.
  
  package p
  
  import (
  	"unsafe"
  )
  
  type T struct {
  	A int
  	*B
  }
  
  func (t T) Method() {}
  
  type B struct {
  	X, Y int
  }
  
  var t T
  var p *T
  
  const N1 = unsafe.Offsetof(t.X)      // ERROR "indirection"
  const N2 = unsafe.Offsetof(p.X)      // ERROR "indirection"
  const N3 = unsafe.Offsetof(t.B.X)    // valid
  const N4 = unsafe.Offsetof(p.B.X)    // valid
  const N5 = unsafe.Offsetof(t.Method) // ERROR "method value"
  const N6 = unsafe.Offsetof(p.Method) // ERROR "method value"
  

View as plain text