@@ -53,17 +53,17 @@ in which case a new Go object is constructed first
5353 g .pywrap .Printf ("if len(kwargs) == 1 and 'handle' in kwargs:\n " )
5454 g .pywrap .Indent ()
5555 g .pywrap .Printf ("self.handle = kwargs['handle']\n " )
56- g .pywrap .Printf ("_%s.IncRef(self.handle)\n " , g .outname )
56+ g .pywrap .Printf ("_%s.IncRef(self.handle)\n " , g .pypkgname )
5757 g .pywrap .Outdent ()
5858 g .pywrap .Printf ("elif len(args) == 1 and isinstance(args[0], go.GoClass):\n " )
5959 g .pywrap .Indent ()
6060 g .pywrap .Printf ("self.handle = args[0].handle\n " )
61- g .pywrap .Printf ("_%s.IncRef(self.handle)\n " , g .outname )
61+ g .pywrap .Printf ("_%s.IncRef(self.handle)\n " , g .pypkgname )
6262 g .pywrap .Outdent ()
6363 g .pywrap .Printf ("else:\n " )
6464 g .pywrap .Indent ()
6565 g .pywrap .Printf ("self.handle = _%s.%s_CTor()\n " , pkgname , s .ID ())
66- g .pywrap .Printf ("_%s.IncRef(self.handle)\n " , g .outname )
66+ g .pywrap .Printf ("_%s.IncRef(self.handle)\n " , g .pypkgname )
6767
6868 for i := 0 ; i < numFields ; i ++ {
6969 f := s .Struct ().Field (i )
@@ -91,7 +91,7 @@ in which case a new Go object is constructed first
9191
9292 g .pywrap .Printf ("def __del__(self):\n " )
9393 g .pywrap .Indent ()
94- g .pywrap .Printf ("_%s.DecRef(self.handle)\n " , s . Package (). Name () )
94+ g .pywrap .Printf ("_%s.DecRef(self.handle)\n " , g . pypkgname )
9595 g .pywrap .Outdent ()
9696
9797 if s .prots & ProtoStringer != 0 {
@@ -237,7 +237,11 @@ func (g *pyGen) genStructMemberSetter(s *Struct, i int, f types.Object) {
237237 g .pywrap .Indent ()
238238 // See comment in genStructInit about ensuring that gopy managed
239239 // objects are only assigned to from gopy managed objects.
240- switch f .Type ().(type ) {
240+ utyp := f .Type ()
241+ if _ , isNamed := utyp .(* types.Named ); isNamed {
242+ utyp = utyp .Underlying ()
243+ }
244+ switch utyp .(type ) {
241245 case * types.Basic :
242246 g .pywrap .Printf ("_%s.%s(self.handle, value)\n " , pkgname , cgoFn )
243247 default :
@@ -298,12 +302,12 @@ handle=A Go-side object is always initialized with an explicit handle=arg
298302 g .pywrap .Printf ("if len(kwargs) == 1 and 'handle' in kwargs:\n " )
299303 g .pywrap .Indent ()
300304 g .pywrap .Printf ("self.handle = kwargs['handle']\n " )
301- g .pywrap .Printf ("_%s.IncRef(self.handle)\n " , g .outname )
305+ g .pywrap .Printf ("_%s.IncRef(self.handle)\n " , g .pypkgname )
302306 g .pywrap .Outdent ()
303307 g .pywrap .Printf ("elif len(args) == 1 and isinstance(args[0], go.GoClass):\n " )
304308 g .pywrap .Indent ()
305309 g .pywrap .Printf ("self.handle = args[0].handle\n " )
306- g .pywrap .Printf ("_%s.IncRef(self.handle)\n " , g .outname )
310+ g .pywrap .Printf ("_%s.IncRef(self.handle)\n " , g .pypkgname )
307311 g .pywrap .Outdent ()
308312 g .pywrap .Printf ("else:\n " )
309313 g .pywrap .Indent ()
0 commit comments