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 5package main 6 7import ( 8 "fmt" 9 "os" 10 "reflect" 11) 12 13// Test that the struct field in anonunion.go was promoted. 14var v1 T 15var v2 = v1.L 16 17// Test that P, Q, and R all point to byte. 18var v3 = Issue8478{P: (*byte)(nil), Q: (**byte)(nil), R: (***byte)(nil)} 19 20// Test that N, A and B are fully defined 21var v4 = N{} 22var v5 = A{} 23var v6 = B{} 24 25// Test that S is fully defined 26var v7 = S{} 27 28// Test that #define'd type is fully defined 29var _ = issue38649{X: 0} 30 31// Test that prefixes do not cause duplicate field names. 32var _ = Issue48396{Fd: 1, Bpf_fd: 2} 33 34func 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