mirror of
https://github.com/golang/go
synced 2024-11-08 05:36:13 -07:00
b888a6227f
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>
32 lines
600 B
Go
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)
|
|
}
|