]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/cgo: silence const warnings
authorRuss Cox <rsc@golang.org>
Thu, 8 Mar 2012 03:40:32 +0000 (22:40 -0500)
committerRuss Cox <rsc@golang.org>
Thu, 8 Mar 2012 03:40:32 +0000 (22:40 -0500)
Fixes #3152.

R=golang-dev, dsymonds, r
CC=golang-dev
https://golang.org/cl/5786047

src/cmd/cgo/out.go

index 4dc0f845496a4173a8efad35b817ab786d4695e1..d6447caff694ad3112d26fdac639525a1d65f086 100644 (file)
@@ -411,10 +411,20 @@ func (p *Package) writeOutputFunc(fgcc *os.File, n *Name) {
                }
        }
        fmt.Fprintf(fgcc, "%s(", n.C)
-       for i := range n.FuncType.Params {
+       for i, t := range n.FuncType.Params {
                if i > 0 {
                        fmt.Fprintf(fgcc, ", ")
                }
+               // We know the type params are correct, because
+               // the Go equivalents had good type params.
+               // However, our version of the type omits the magic
+               // words const and volatile, which can provoke
+               // C compiler warnings.  Silence them by casting
+               // all pointers to void*.  (Eventually that will produce
+               // other warnings.)
+               if c := t.C.String(); c[len(c)-1] == '*' {
+                       fmt.Fprintf(fgcc, "(void*)")
+               }
                fmt.Fprintf(fgcc, "a->p%d", i)
        }
        fmt.Fprintf(fgcc, ");\n")