cgo: do not reset tag generator between files
Clean up an error message and error exit too.
Insert blank line after "DO NOT EDIT" comment
to keep it from being a doc comment.
Fixes #1213.
Fixes #1222.
R=r
CC=golang-dev
https://golang.org/cl/3608042
diff --git a/misc/cgo/stdio/Makefile b/misc/cgo/stdio/Makefile
index ba49d94..fc925e6 100644
--- a/misc/cgo/stdio/Makefile
+++ b/misc/cgo/stdio/Makefile
@@ -9,6 +9,7 @@
align.go\
file.go\
test.go\
+ test1.go\
CLEANFILES+=hello fib chain run.out
diff --git a/misc/cgo/stdio/test.go b/misc/cgo/stdio/test.go
index 639d77b..8f21603 100644
--- a/misc/cgo/stdio/test.go
+++ b/misc/cgo/stdio/test.go
@@ -15,7 +15,7 @@
#define SHIFT(x, y) ((x)<<(y))
#define KILO SHIFT(1, 10)
-enum {
+enum E {
Enum1 = 1,
Enum2 = 2,
};
@@ -26,6 +26,28 @@
x[0] = 0;
}
+struct S {
+ int x;
+};
+
+extern enum E myConstFunc(struct S* const ctx, int const id, struct S **const filter);
+
+enum E myConstFunc(struct S *const ctx, int const id, struct S **const filter) { return 0; }
+
+// issue 1222
+typedef union {
+ long align;
+} xxpthread_mutex_t;
+
+struct ibv_async_event {
+ union {
+ int x;
+ } element;
+};
+
+struct ibv_context {
+ xxpthread_mutex_t mutex;
+};
*/
import "C"
import (
@@ -67,6 +89,10 @@
return int(n)
}
+func TestConst() {
+ C.myConstFunc(nil, 0, nil)
+}
+
func TestEnum() {
if C.Enum1 != 1 || C.Enum2 != 2 {
println("bad enum", C.Enum1, C.Enum2)
@@ -105,9 +131,14 @@
char C.char
)
+type Context struct {
+ ctx *C.struct_ibv_context
+}
+
func Test() {
TestAlign()
TestAtol()
TestEnum()
TestErrno()
+ TestConst()
}
diff --git a/misc/cgo/stdio/test1.go b/misc/cgo/stdio/test1.go
new file mode 100644
index 0000000..dce2ef8
--- /dev/null
+++ b/misc/cgo/stdio/test1.go
@@ -0,0 +1,29 @@
+// Copyright 2010 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 file contains test cases for cgo.
+
+package stdio
+
+/*
+// issue 1222
+typedef union {
+ long align;
+} xxpthread_mutex_t;
+
+struct ibv_async_event {
+ union {
+ int x;
+ } element;
+};
+
+struct ibv_context {
+ xxpthread_mutex_t mutex;
+};
+*/
+import "C"
+
+type AsyncEvent struct {
+ event C.struct_ibv_async_event
+}