mirror of
https://github.com/golang/go
synced 2024-11-26 02:57:57 -07:00
cmd/cgo: fail on v, err := C.fn when fn is a builtin function
We were already checking for _CMalloc, but in fact none of the builtin functions support returning an error. Fixes #67707 Change-Id: I0ee432a9f13ace472c3f36f641efc7d18eda0631 Reviewed-on: https://go-review.googlesource.com/c/go/+/589575 Auto-Submit: Ian Lance Taylor <iant@golang.org> Reviewed-by: Damien Neil <dneil@google.com> Reviewed-by: Cherry Mui <cherryyz@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
This commit is contained in:
parent
1b4f1dc95d
commit
d73a8a206a
@ -1601,8 +1601,8 @@ func (p *Package) rewriteName(f *File, r *Ref, addPosition bool) ast.Expr {
|
||||
break
|
||||
}
|
||||
if r.Context == ctxCall2 {
|
||||
if r.Name.Go == "_CMalloc" {
|
||||
error_(r.Pos(), "no two-result form for C.malloc")
|
||||
if builtinDefs[r.Name.Go] != "" {
|
||||
error_(r.Pos(), "no two-result form for C.%s", r.Name.Go)
|
||||
break
|
||||
}
|
||||
// Invent new Name for the two-result function.
|
||||
|
@ -127,6 +127,7 @@ func TestReportsTypeErrors(t *testing.T) {
|
||||
"issue33061.go",
|
||||
"issue50710.go",
|
||||
"issue67517.go",
|
||||
"issue67707.go",
|
||||
} {
|
||||
check(t, file)
|
||||
}
|
||||
|
15
src/cmd/cgo/internal/testerrors/testdata/issue67707.go
vendored
Normal file
15
src/cmd/cgo/internal/testerrors/testdata/issue67707.go
vendored
Normal file
@ -0,0 +1,15 @@
|
||||
// Copyright 2024 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 p
|
||||
|
||||
import "C"
|
||||
|
||||
func F() *C.char {
|
||||
s, err := C.CString("hi") // ERROR HERE: no two-result form
|
||||
if err != nil {
|
||||
println(err)
|
||||
}
|
||||
return s
|
||||
}
|
Loading…
Reference in New Issue
Block a user