1
0
mirror of https://github.com/golang/go synced 2024-11-08 05:26:15 -07:00
go/misc/cgo/test/issue24161_darwin_test.go
Keith Randall b888a6227f cmd/cgo: fix cgo bad typedefs
Two fixes:

1) Typedefs of the bad typedefs should also not be rewritten to the
   underlying type.  They shouldn't just be uintptr, though, they should
   retain the C naming structure.  For example, in C:

   typedef const __CFString * CFStringRef;
   typedef CFStringRef SecKeyAlgorithm;

   we want the Go:

   type _Ctype_CFStringRef uintptr
   type _Ctype_SecKeyAlgorithm = _Ctype_CFStringRef

2) We need more types than just function arguments/return values.
   At least we need types of global variables, so when we see a reference to:

   extern const SecKeyAlgorithm kSecKeyAlgorithmECDSASignatureDigestX962SHA1;

   we know that we need to investigate the type SecKeyAlgorithm.
   Might as well just find every typedef and check the badness of all of them.
   This requires looping until a fixed point of known types is reached.
   Usually it takes just 2 iterations, sometimes 3.

Fixes #24161

Change-Id: I32ca7e48eb4d4133c6242e91d1879636f5224ea9
Reviewed-on: https://go-review.googlesource.com/123177
Run-TryBot: Keith Randall <khr@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
2018-07-12 19:15:12 +00:00

32 lines
600 B
Go

// Copyright 2018 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.
package cgotest
import (
"testing"
"./issue24161arg"
"./issue24161e0"
"./issue24161e1"
"./issue24161e2"
"./issue24161res"
)
func Test24161Arg(t *testing.T) {
issue24161arg.Test(t)
}
func Test24161Res(t *testing.T) {
issue24161res.Test(t)
}
func Test24161Example0(t *testing.T) {
issue24161e0.Test(t)
}
func Test24161Example1(t *testing.T) {
issue24161e1.Test(t)
}
func Test24161Example2(t *testing.T) {
issue24161e2.Test(t)
}