in codegen/thrift.go [189:242]
func walkFieldGroupsInternal(
goPrefix string,
thriftPrefix string,
fields compile.FieldGroup,
visitField walkFieldVisitor,
seen map[*compile.FieldSpec]bool,
) bool {
for i := 0; i < len(fields); i++ {
field := fields[i]
if seen[field] {
// Skip this field if we have already considered it
continue
}
seen[field] = true
bail := visitField(goPrefix, thriftPrefix, field)
if bail {
return true
}
realType := compile.RootTypeSpec(field.Type)
switch t := realType.(type) {
case *compile.BinarySpec:
case *compile.StringSpec:
case *compile.BoolSpec:
case *compile.DoubleSpec:
case *compile.I8Spec:
case *compile.I16Spec:
case *compile.I32Spec:
case *compile.I64Spec:
case *compile.EnumSpec:
case *compile.ListSpec:
case *compile.SetSpec:
case *compile.StructSpec:
bail := walkFieldGroupsInternal(
goPrefix+"."+PascalCase(field.Name),
thriftPrefix+"."+field.Name,
t.Fields,
visitField,
seen,
)
if bail {
return true
}
case *compile.MapSpec:
// TODO: implement
default:
panic("unknown Spec")
}
}
return false
}