-
-
Notifications
You must be signed in to change notification settings - Fork 102
Open
Description
Description
When generating Go code from XSD schemas that use xsd:time (mapped to time.Time), the time package import is missing from the generated code if the field is optional (pointer type).
Root Cause
The code generator checks for time.Time using exact string equality (fieldType == "time.Time"), but when a field is optional, the type becomes *time.Time (pointer), causing the check to fail and the import to be omitted.
Affected Code
The issue occurs in genGo.go in multiple locations where time.Time detection happens.
Example
XSD:
<xsd:element name="StartTime" type="xsd:time" minOccurs="0" maxOccurs="1"/>
Generated Go (broken):
// Missing: import "time"
type SomeType struct {
StartTime *time.Time `xml:"StartTime"` // ❌ Compilation error: undefined: time
}
Expected:
import "time"
type SomeType struct {
StartTime *time.Time `xml:"StartTime"` // ✅ Works correctly
}
Solution
Change the exact equality check to a substring check to handle both time.Time and *time.Time:
Before:
if fieldType == "time.Time" {
gen.ImportTime = true
}
After:
if strings.Contains(fieldType, "time.Time") {
gen.ImportTime = true
}
Metadata
Metadata
Assignees
Labels
No labels