in codegen/module.go [251:305]
func (system *ModuleSystem) populateRecursiveDependencies(
instances map[string]*ModuleInstance,
) error {
for _, classInstance := range instances {
recursiveDeps := map[string]map[string]*ModuleInstance{}
err := resolveRecursiveDependencies(
classInstance,
recursiveDeps,
)
if err != nil {
return err
}
for _, className := range system.classOrder {
moduleMap, ok := recursiveDeps[className]
if !ok {
continue
}
// If a glob pattern matches the same module class multiple times, make sure that DependencyOrder
// remains the unique list of classes.
found := false
for _, dependencyOrderClassName := range classInstance.DependencyOrder {
if dependencyOrderClassName == className {
found = true
break
}
}
if !found {
classInstance.DependencyOrder = append(
classInstance.DependencyOrder,
className,
)
}
moduleList := make([]*ModuleInstance, len(moduleMap))
index := 0
for _, moduleInstance := range moduleMap {
moduleList[index] = moduleInstance
index++
}
sortedModuleList, err := sortDependencyList(className, moduleList)
if err != nil {
return err
}
classInstance.RecursiveDependencies[className] = sortedModuleList
}
}
return nil
}