]> Cypherpunks repositories - gostls13.git/commit
cmd/cgo: prevent redeclaration of _Ctype_void when C.void is used
authorMatthew Dempsky <mdempsky@google.com>
Fri, 26 Jun 2020 18:26:33 +0000 (11:26 -0700)
committerMatthew Dempsky <mdempsky@google.com>
Fri, 26 Jun 2020 19:00:25 +0000 (19:00 +0000)
commita295d59d10d87ea882ddc8db6919a278b3a67d01
treeadf7d0eee53dd770ec7f45a4629269cabbc2a951
parent3c474d4164990c10c48c2b881211b6af95058be9
cmd/cgo: prevent redeclaration of _Ctype_void when C.void is used

CL 230037 changed cmd/cgo to emit "type _Ctype_foo = bar" aliases for
all C.foo types mentioned in the original Go source files. However,
cmd/cgo already emits an appropriate type definition for _Ctype_void.
So if a source file explicitly mentions C.void, this resulted in
_Ctype_void being declared multiple times.

This CL fixes the issue by suppressing the "type _Ctype_void =
_Ctype_void" alias before printing it. This should be safe because
_Ctype_void is the only type that's specially emitted in out.go at the
moment.

A somewhat better fix might be to fix how _Ctype_void is declared in
the cmd/cgo "frontend", but this is a less invasive fix.

Fixes #39877.

Change-Id: Ief264b3847c8ef8df1478a6333647ff2cf09b63d
Reviewed-on: https://go-review.googlesource.com/c/go/+/240180
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
misc/cgo/test/test.go
src/cmd/cgo/out.go