// 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|field X is embedded via a pointer in T" const N2 = unsafe.Offsetof(p.X) // ERROR "indirection|field X is embedded via a pointer in T" 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"