summaryrefslogtreecommitdiff
path: root/misc
diff options
context:
space:
mode:
authorMatthew Dempsky <mdempsky@google.com>2014-08-05 18:16:56 -0700
committerMatthew Dempsky <mdempsky@google.com>2014-08-05 18:16:56 -0700
commit9273a938fa61bceffa2a2d3005f418955ea3a393 (patch)
tree4cd36e0fea4c17396864801db24d725401b7b607 /misc
parent4066aff8b63ca59b8866c482872c14a2087ae8b4 (diff)
downloadgo-9273a938fa61bceffa2a2d3005f418955ea3a393.tar.gz
cmd/cgo: fix recursive type mapping
Instead of immediately completing pointer type mappings, add them to a queue to allow them to be completed later. This fixes issues caused by Type() returning arbitrary in-progress type mappings. Fixes issue 8368. Fixes issue 8441. LGTM=iant R=golang-codereviews, iant CC=golang-codereviews https://codereview.appspot.com/122850043 Committer: Ian Lance Taylor <iant@golang.org>
Diffstat (limited to 'misc')
-rw-r--r--misc/cgo/test/issue8441.go27
1 files changed, 27 insertions, 0 deletions
diff --git a/misc/cgo/test/issue8441.go b/misc/cgo/test/issue8441.go
new file mode 100644
index 000000000..2d871f083
--- /dev/null
+++ b/misc/cgo/test/issue8441.go
@@ -0,0 +1,27 @@
+// Copyright 2014 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.
+
+// Issue 8368 and 8441. Recursive struct definitions didn't work.
+// No runtime test; just make sure it compiles.
+
+package cgotest
+
+/*
+typedef struct one one;
+typedef struct two two;
+struct one {
+ two *x;
+};
+struct two {
+ one *x;
+};
+*/
+import "C"
+
+func issue8368(one *C.struct_one, two *C.struct_two) {
+}
+
+func issue8441(one *C.one, two *C.two) {
+ issue8441(two.x, one.x)
+}