2016-04-10 15:32:26 -06:00
|
|
|
// Copyright 2014 The Go Authors. All rights reserved.
|
2014-08-05 18:10:15 -06:00
|
|
|
// Use of this source code is governed by a BSD-style
|
|
|
|
// license that can be found in the LICENSE file.
|
|
|
|
|
|
|
|
package main
|
|
|
|
|
2020-09-01 18:01:00 -06:00
|
|
|
import (
|
|
|
|
"fmt"
|
|
|
|
"os"
|
|
|
|
"reflect"
|
|
|
|
)
|
|
|
|
|
2014-08-05 18:10:15 -06:00
|
|
|
// Test that the struct field in anonunion.go was promoted.
|
|
|
|
var v1 T
|
|
|
|
var v2 = v1.L
|
|
|
|
|
2014-08-06 11:28:19 -06:00
|
|
|
// Test that P, Q, and R all point to byte.
|
|
|
|
var v3 = Issue8478{P: (*byte)(nil), Q: (**byte)(nil), R: (***byte)(nil)}
|
|
|
|
|
2020-03-29 16:38:09 -06:00
|
|
|
// Test that N, A and B are fully defined
|
|
|
|
var v4 = N{}
|
|
|
|
var v5 = A{}
|
|
|
|
var v6 = B{}
|
|
|
|
|
|
|
|
// Test that S is fully defined
|
|
|
|
var v7 = S{}
|
|
|
|
|
2020-05-01 00:05:51 -06:00
|
|
|
// Test that #define'd type is fully defined
|
|
|
|
var _ = issue38649{X: 0}
|
|
|
|
|
2014-08-05 18:10:15 -06:00
|
|
|
func main() {
|
2020-09-01 18:01:00 -06:00
|
|
|
pass := true
|
|
|
|
|
|
|
|
// The Go translation of bitfields should not have any of the
|
|
|
|
// bitfield types. The order in which bitfields are laid out
|
|
|
|
// in memory is implementation defined, so we can't easily
|
|
|
|
// know how a bitfield should correspond to a Go type, even if
|
|
|
|
// it appears to be aligned correctly.
|
|
|
|
bitfieldType := reflect.TypeOf(bitfields{})
|
|
|
|
check := func(name string) {
|
|
|
|
_, ok := bitfieldType.FieldByName(name)
|
|
|
|
if ok {
|
|
|
|
fmt.Fprintf(os.Stderr, "found unexpected bitfields field %s\n", name)
|
|
|
|
pass = false
|
|
|
|
}
|
|
|
|
}
|
|
|
|
check("Short1")
|
|
|
|
check("Short2")
|
|
|
|
check("Short3")
|
|
|
|
|
|
|
|
if !pass {
|
|
|
|
os.Exit(1)
|
|
|
|
}
|
2014-08-05 18:10:15 -06:00
|
|
|
}
|