possible typo in encoder.go
Created by: seehuhn
Hello,
I am trying to use wsdl2go with the WSDL files provided by UK NationalRail as part of OpenLDBWS. When I try this, wsdl2go fails with a stack overflow. Here is what I tried:
curl -o ldbws.wsdl https://lite.realtime.nationalrail.co.uk/OpenLDBWS/wsdl.aspx?ver=2017-10-01
wget https://lite.realtime.nationalrail.co.uk/OpenLDBWS/rtti_2017-10-01_ldb.wsdl
wget https://lite.realtime.nationalrail.co.uk/OpenLDBWS/rtti_2007-10-10_ldb_common_types.xsd
wget https://lite.realtime.nationalrail.co.uk/OpenLDBWS/rtti_2015-11-27_ldb_common_types.xsd
wget https://lite.realtime.nationalrail.co.uk/OpenLDBWS/rtti_2017-10-01_ldb_types.xsd
wget https://lite.realtime.nationalrail.co.uk/OpenLDBWS/rtti_2016-02-16_ldb_common_types.xsd
wget https://lite.realtime.nationalrail.co.uk/OpenLDBWS/rtti_2017-02-02_ldb_common_types.xsd
wget https://lite.realtime.nationalrail.co.uk/OpenLDBWS/rtti_2017-10-01_ldb_common_types.xsd
wget https://lite.realtime.nationalrail.co.uk/OpenLDBWS/rtti_2012-01-13_ldb_types.xsd
wget https://lite.realtime.nationalrail.co.uk/OpenLDBWS/rtti_2015-11-27_ldb_types.xsd
wget https://lite.realtime.nationalrail.co.uk/OpenLDBWS/rtti_2016-02-16_ldb_types.xsd
wsdl2go <ldbws.wsdl >ldbws.go
The result is a very long error message, indicating a stack overflow, which involves the following recursion:
...
github.com/fiorix/wsdl2go/wsdlgo.trimns(0xc42027c560, 0x18, 0x10afc32, 0xc42027c560)
/Users/voss/go/src/github.com/fiorix/wsdl2go/wsdlgo/encoder.go:1276 +0x57 fp=0xc440300538 sp=0xc4403004e8 pc=0x12e0f07
github.com/fiorix/wsdl2go/wsdlgo.(*goEncoder).genComplexContent(0xc42016c2c0, 0x13e32e0, 0xc420145c70, 0xc420162000, 0xc420205b80, 0x2, 0xc4201ee970)
/Users/voss/go/src/github.com/fiorix/wsdl2go/wsdlgo/encoder.go:1397 +0x668 fp=0xc440300610 sp=0xc440300538 pc=0x12e2688
github.com/fiorix/wsdl2go/wsdlgo.(*goEncoder).genStructFields(0xc42016c2c0, 0x13e32e0, 0xc420145c70, 0xc420162000, 0xc420205b80, 0x13a2501, 0x1)
/Users/voss/go/src/github.com/fiorix/wsdl2go/wsdlgo/encoder.go:1354 +0x57 fp=0xc440300658 sp=0xc440300610 pc=0x12e1ac7
github.com/fiorix/wsdl2go/wsdlgo.(*goEncoder).genComplexContent(0xc42016c2c0, 0x13e32e0, 0xc420145c70, 0xc420162000, 0xc420205b80, 0x2, 0xc4201ee970)
/Users/voss/go/src/github.com/fiorix/wsdl2go/wsdlgo/encoder.go:1399 +0x6e4 fp=0xc440300730 sp=0xc440300658 pc=0x12e2704
github.com/fiorix/wsdl2go/wsdlgo.(*goEncoder).genStructFields(0xc42016c2c0, 0x13e32e0, 0xc420145c70, 0xc420162000, 0xc420205b80, 0x13a2501, 0x1)
/Users/voss/go/src/github.com/fiorix/wsdl2go/wsdlgo/encoder.go:1354 +0x57 fp=0xc440300778 sp=0xc440300730 pc=0x12e1ac7
github.com/fiorix/wsdl2go/wsdlgo.(*goEncoder).genComplexContent(0xc42016c2c0, 0x13e32e0, 0xc420145c70, 0xc420162000, 0xc420205b80, 0x2, 0xc4201ee970)
/Users/voss/go/src/github.com/fiorix/wsdl2go/wsdlgo/encoder.go:1399 +0x6e4 fp=0xc440300850 sp=0xc440300778 pc=0x12e2704
...
I wonder whether the test if exists {...} really should be if !exists {...}?