Source file misc/cgo/testgodefs/testdata/main.go
1 // Copyright 2014 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package main 6 7 import ( 8 "fmt" 9 "os" 10 "reflect" 11 ) 12 13 // Test that the struct field in anonunion.go was promoted. 14 var v1 T 15 var v2 = v1.L 16 17 // Test that P, Q, and R all point to byte. 18 var v3 = Issue8478{P: (*byte)(nil), Q: (**byte)(nil), R: (***byte)(nil)} 19 20 // Test that N, A and B are fully defined 21 var v4 = N{} 22 var v5 = A{} 23 var v6 = B{} 24 25 // Test that S is fully defined 26 var v7 = S{} 27 28 // Test that #define'd type is fully defined 29 var _ = issue38649{X: 0} 30 31 // Test that prefixes do not cause duplicate field names. 32 var _ = Issue48396{Fd: 1, Bpf_fd: 2} 33 34 func main() { 35 pass := true 36 37 // The Go translation of bitfields should not have any of the 38 // bitfield types. The order in which bitfields are laid out 39 // in memory is implementation defined, so we can't easily 40 // know how a bitfield should correspond to a Go type, even if 41 // it appears to be aligned correctly. 42 bitfieldType := reflect.TypeOf(bitfields{}) 43 check := func(name string) { 44 _, ok := bitfieldType.FieldByName(name) 45 if ok { 46 fmt.Fprintf(os.Stderr, "found unexpected bitfields field %s\n", name) 47 pass = false 48 } 49 } 50 check("Short1") 51 check("Short2") 52 check("Short3") 53 54 if !pass { 55 os.Exit(1) 56 } 57 } 58