• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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