Your IP : 172.28.240.42


Current Path : /usr/local/go/src/cmd/go/testdata/script/
Upload File :
Current File : //usr/local/go/src/cmd/go/testdata/script/cgo_badmethod_issue57926.txt

[short] skip
[!cgo] skip

# Test that cgo rejects attempts to declare methods
# on the types C.T or *C.T; see issue #57926.

! go build
stderr 'cannot define new methods on non-local type C.T'
stderr 'cannot define new methods on non-local type \*C.T'
! stderr 'Alias'

-- go.mod --
module example.com
go 1.12

-- a.go --
package a

/*
typedef int T;
*/
import "C"

func (C.T) f() {}
func (recv *C.T) g() {}

// The check is more education than enforcement,
// and is easily defeated using a type alias.
type Alias = C.T
func (Alias) h() {}
func (*Alias) i() {}