| // 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{}, | 
 | } |