// qualifiedTypeName returns the qualified type name for the given data type. // This is useful in reporting types in error messages. // (e.g) array<string>, hash<string, string>, hash<string, array<int>> func qualifiedTypeName(t design.DataType) string { switch t.Kind() { case design.DateTimeKind: return "datetime" case design.ArrayKind: return fmt.Sprintf("%s<%s>", t.Name(), qualifiedTypeName(t.ToArray().ElemType.Type)) case design.HashKind: h := t.ToHash() return fmt.Sprintf("%s<%s, %s>", t.Name(), qualifiedTypeName(h.KeyType.Type), qualifiedTypeName(h.ElemType.Type), ) } return t.Name() }