]> Cypherpunks.ru repositories - gostls13.git/blob - test/fixedbugs/issue4909a.go
aefe2d645571620f7f1aae72cd2125d5ec61997a
[gostls13.git] / test / fixedbugs / issue4909a.go
1 // errorcheck
2
3 // Copyright 2013 The Go Authors.  All rights reserved.
4 // Use of this source code is governed by a BSD-style
5 // license that can be found in the LICENSE file.
6
7 // Issue 4909: compiler incorrectly accepts unsafe.Offsetof(t.x)
8 // where x is a field of an embedded pointer field.
9
10 package p
11
12 import (
13         "unsafe"
14 )
15
16 type T struct {
17         A int
18         *B
19 }
20
21 func (t T) Method() {}
22
23 type B struct {
24         X, Y int
25 }
26
27 var t T
28 var p *T
29
30 const N1 = unsafe.Offsetof(t.X)      // ERROR "indirection"
31 const N2 = unsafe.Offsetof(p.X)      // ERROR "indirection"
32 const N3 = unsafe.Offsetof(t.B.X)    // valid
33 const N4 = unsafe.Offsetof(p.B.X)    // valid
34 const N5 = unsafe.Offsetof(t.Method) // ERROR "method value"
35 const N6 = unsafe.Offsetof(p.Method) // ERROR "method value"