mirror of
https://github.com/golang/go
synced 2024-11-11 21:20:21 -07:00
cmd/cgo: reject references to builtin functions other than calls
Here we restrict using cgo builtin references because internally they're go functions as opposed to C usafe.Pointer values. Fixes #18889 Change-Id: I1e4332e4884063ccbaf9772c172d4462ec8f3d13 Reviewed-on: https://go-review.googlesource.com/40934 Reviewed-by: Ian Lance Taylor <iant@golang.org> Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
This commit is contained in:
parent
743fe0697d
commit
2463a49ebb
7
misc/cgo/errors/issue18889.go
Normal file
7
misc/cgo/errors/issue18889.go
Normal file
@ -0,0 +1,7 @@
|
||||
package main
|
||||
|
||||
import "C"
|
||||
|
||||
func main() {
|
||||
_ = C.malloc // ERROR HERE
|
||||
}
|
@ -47,6 +47,7 @@ expect issue13635.go C.uchar C.schar C.ushort C.uint C.ulong C.longlong C.ulongl
|
||||
check issue13830.go
|
||||
check issue16116.go
|
||||
check issue16591.go
|
||||
check issue18889.go
|
||||
|
||||
if ! go build issue14669.go; then
|
||||
exit 1
|
||||
|
@ -1086,6 +1086,10 @@ func (p *Package) rewriteRef(f *File) {
|
||||
}
|
||||
case "expr":
|
||||
if r.Name.Kind == "func" {
|
||||
if builtinDefs[r.Name.C] != "" {
|
||||
error_(r.Pos(), "use of builtin '%s' not in function call", fixGo(r.Name.C))
|
||||
}
|
||||
|
||||
// Function is being used in an expression, to e.g. pass around a C function pointer.
|
||||
// Create a new Name for this Ref which causes the variable to be declared in Go land.
|
||||
fpName := "fp_" + r.Name.Go
|
||||
|
Loading…
Reference in New Issue
Block a user