]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/cgo: using __typeof__(a->r) instead of putting invalid TYPE in "a->r = (const...
authorShenghou Ma <minux.ma@gmail.com>
Sun, 2 Jun 2013 14:46:53 +0000 (22:46 +0800)
committerShenghou Ma <minux.ma@gmail.com>
Sun, 2 Jun 2013 14:46:53 +0000 (22:46 +0800)
Thanks kballard for the hint.
Fixes #4857.

R=golang-dev, iant
CC=golang-dev
https://golang.org/cl/9649045

misc/cgo/test/issue4857.go [new file with mode: 0644]
src/cmd/cgo/out.go

diff --git a/misc/cgo/test/issue4857.go b/misc/cgo/test/issue4857.go
new file mode 100644 (file)
index 0000000..54dc39f
--- /dev/null
@@ -0,0 +1,15 @@
+// Copyright 2013 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
+
+/*
+#cgo CFLAGS: -Werror
+const struct { int a; } *issue4857() { return (void *)0; }
+*/
+import "C"
+
+func test4857() {
+       _ = C.issue4857()
+}
index d9f7604962c43c2d7cb4f0bc32927c86c64497f3..29f7020930c0a43c823cf9603b39025d69c28b5a 100644 (file)
@@ -490,7 +490,7 @@ func (p *Package) writeOutputFunc(fgcc *os.File, n *Name) {
        if t := n.FuncType.Result; t != nil {
                fmt.Fprintf(fgcc, "a->r = ")
                if c := t.C.String(); c[len(c)-1] == '*' {
-                       fmt.Fprintf(fgcc, "(const %s) ", t.C)
+                       fmt.Fprint(fgcc, "(__typeof__(a->r)) ")
                }
        }
        fmt.Fprintf(fgcc, "%s(", n.C)