| // Copyright 2014 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| // This test fails on older versions of OS X because they use older buggy |
| // versions of Clang that emit ambiguous DWARF info. See issue 8611. |
| // +build !darwin |
| |
| package cgotest |
| |
| // Issue 8428. Cgo inconsistently translated zero size arrays. |
| |
| /* |
| struct issue8428one { |
| char b; |
| char rest[]; |
| }; |
| |
| struct issue8428two { |
| void *p; |
| char b; |
| char rest[0]; |
| char pad; |
| }; |
| |
| struct issue8428three { |
| char w[1][2][3][0]; |
| char x[2][3][0][1]; |
| char y[3][0][1][2]; |
| char z[0][1][2][3]; |
| }; |
| */ |
| import "C" |
| |
| import "unsafe" |
| |
| var _ = C.struct_issue8428one{ |
| b: C.char(0), |
| // The trailing rest field is not available in cgo. |
| // See issue 11925. |
| // rest: [0]C.char{}, |
| } |
| |
| var _ = C.struct_issue8428two{ |
| p: unsafe.Pointer(nil), |
| b: C.char(0), |
| rest: [0]C.char{}, |
| } |
| |
| var _ = C.struct_issue8428three{ |
| w: [1][2][3][0]C.char{}, |
| x: [2][3][0][1]C.char{}, |
| y: [3][0][1][2]C.char{}, |
| z: [0][1][2][3]C.char{}, |
| } |