aboutsummaryrefslogtreecommitdiff
path: root/misc/cgo/errors/testdata/issue13830.go
diff options
context:
space:
mode:
Diffstat (limited to 'misc/cgo/errors/testdata/issue13830.go')
-rw-r--r--misc/cgo/errors/testdata/issue13830.go26
1 files changed, 26 insertions, 0 deletions
diff --git a/misc/cgo/errors/testdata/issue13830.go b/misc/cgo/errors/testdata/issue13830.go
new file mode 100644
index 0000000000..ac20c82b81
--- /dev/null
+++ b/misc/cgo/errors/testdata/issue13830.go
@@ -0,0 +1,26 @@
+// Copyright 2016 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.
+
+// cgo converts C void* to Go unsafe.Pointer, so despite appearances C
+// void** is Go *unsafe.Pointer. This test verifies that we detect the
+// problem at build time.
+
+package main
+
+// typedef void v;
+// void F(v** p) {}
+import "C"
+
+import "unsafe"
+
+type v [0]byte
+
+func f(p **v) {
+ C.F((**C.v)(unsafe.Pointer(p))) // ERROR HERE
+}
+
+func main() {
+ var p *v
+ f(&p)
+}