Text file src/cmd/go/testdata/script/cgo_badmethod_issue57926.txt

     1  [short] skip
     2  [!cgo] skip
     3  
     4  # Test that cgo rejects attempts to declare methods
     5  # on the types C.T or *C.T; see issue #57926.
     6  
     7  ! go build
     8  stderr 'cannot define new methods on non-local type C.T'
     9  stderr 'cannot define new methods on non-local type \*C.T'
    10  ! stderr 'Alias'
    11  
    12  -- go.mod --
    13  module example.com
    14  go 1.12
    15  
    16  -- a.go --
    17  package a
    18  
    19  /*
    20  typedef int T;
    21  */
    22  import "C"
    23  
    24  func (C.T) f() {}
    25  func (recv *C.T) g() {}
    26  
    27  // The check is more education than enforcement,
    28  // and is easily defeated using a type alias.
    29  type Alias = C.T
    30  func (Alias) h() {}
    31  func (*Alias) i() {}
    32  

View as plain text