blob: 81ef850cb960ca45733ef2f2016f4f75fa24982c [file] [log] [blame]
[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() {}