Skip to content

Commit 5e84f8a

Browse files
committed
Fix contrived marking technique in model sorting algorithm
1 parent be9b31c commit 5e84f8a

File tree

1 file changed

+2
-4
lines changed

1 file changed

+2
-4
lines changed

v3/internal/generator/render/renderer.go

+2-4
Original file line numberDiff line numberDiff line change
@@ -89,8 +89,6 @@ func (renderer *Renderer) Typedefs(w io.Writer, imports *collect.ImportMap, mode
8989

9090
// Track postponed class aliases and their dependencies.
9191
aliases := make(map[types.Object][]*collect.ModelInfo, len(models))
92-
// Placeholder for marking visited objects.
93-
visited := make([]*collect.ModelInfo, 0)
9492

9593
models = slices.Clone(models)
9694
for i, j := 0, 0; i < len(models); i++ {
@@ -101,7 +99,7 @@ func (renderer *Renderer) Typedefs(w io.Writer, imports *collect.ImportMap, mode
10199
obj := models[i].Type.(interface{ Obj() *types.TypeName }).Obj()
102100
if obj.Pkg().Path() == imports.Self {
103101
// models[i] aliases a type from the current module.
104-
if a := aliases[obj]; a == nil || len(a) > 0 {
102+
if a, ok := aliases[obj]; !ok || len(a) > 0 {
105103
// The aliased type has not been visited already, postpone.
106104
aliases[obj] = append(a, models[i])
107105
continue
@@ -116,7 +114,7 @@ func (renderer *Renderer) Typedefs(w io.Writer, imports *collect.ImportMap, mode
116114
// Keep appending aliases whose aliased type has been just appended.
117115
for k := j - 1; k < j; k++ {
118116
a := aliases[models[k].Object()]
119-
aliases[models[k].Object()] = visited
117+
aliases[models[k].Object()] = nil // Mark aliased model as visited
120118
j += copy(models[j:], a)
121119
}
122120
}

0 commit comments

Comments
 (0)