import "testing"
func test21809(t *testing.T) {
- longVar := C.long(3)
- typedefVar := C.MySigned_t(4)
- typedefTypedefVar := C.MySigned2_t(5)
+ longVar := C.long(3)
+ typedefVar := C.MySigned_t(4)
+ typedefTypedefVar := C.MySigned2_t(5)
- // all three should be considered identical to `long`
- if ret := C.takes_long(longVar); ret != 9 {
- t.Errorf("got %v but expected %v", ret, 9)
- }
- if ret := C.takes_long(typedefVar); ret != 16 {
- t.Errorf("got %v but expected %v", ret, 16)
- }
- if ret := C.takes_long(typedefTypedefVar); ret != 25 {
- t.Errorf("got %v but expected %v", ret, 25)
- }
+ // all three should be considered identical to `long`
+ if ret := C.takes_long(longVar); ret != 9 {
+ t.Errorf("got %v but expected %v", ret, 9)
+ }
+ if ret := C.takes_long(typedefVar); ret != 16 {
+ t.Errorf("got %v but expected %v", ret, 16)
+ }
+ if ret := C.takes_long(typedefTypedefVar); ret != 25 {
+ t.Errorf("got %v but expected %v", ret, 25)
+ }
- // They should also be identical to the typedef'd type
- if ret := C.takes_typedef(longVar); ret != 9 {
- t.Errorf("got %v but expected %v", ret, 9)
- }
- if ret := C.takes_typedef(typedefVar); ret != 16 {
- t.Errorf("got %v but expected %v", ret, 16)
- }
- if ret := C.takes_typedef(typedefTypedefVar); ret != 25 {
- t.Errorf("got %v but expected %v", ret, 25)
- }
+ // They should also be identical to the typedef'd type
+ if ret := C.takes_typedef(longVar); ret != 9 {
+ t.Errorf("got %v but expected %v", ret, 9)
+ }
+ if ret := C.takes_typedef(typedefVar); ret != 16 {
+ t.Errorf("got %v but expected %v", ret, 16)
+ }
+ if ret := C.takes_typedef(typedefTypedefVar); ret != 25 {
+ t.Errorf("got %v but expected %v", ret, 25)
+ }
}
if x.Max != nil {
indices = append(indices, x.Max)
}
- for i, y := range indices {
+ // determine if we need extra blanks around ':'
+ var needsBlanks bool
+ if depth <= 1 {
+ var indexCount int
+ var hasBinaries bool
+ for _, x := range indices {
+ if x != nil {
+ indexCount++
+ if isBinary(x) {
+ hasBinaries = true
+ }
+ }
+ }
+ if indexCount > 1 && hasBinaries {
+ needsBlanks = true
+ }
+ }
+ for i, x := range indices {
if i > 0 {
- // blanks around ":" if both sides exist and either side is a binary expression
- // TODO(gri) once we have committed a variant of a[i:j:k] we may want to fine-
- // tune the formatting here
- x := indices[i-1]
- if depth <= 1 && x != nil && y != nil && (isBinary(x) || isBinary(y)) {
- p.print(blank, token.COLON, blank)
- } else {
- p.print(token.COLON)
+ if indices[i-1] != nil && needsBlanks {
+ p.print(blank)
+ }
+ p.print(token.COLON)
+ if x != nil && needsBlanks {
+ p.print(blank)
}
}
- if y != nil {
- p.expr0(y, depth+1)
+ if x != nil {
+ p.expr0(x, depth+1)
}
}
p.print(x.Rbrack, token.RBRACK)