func()

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
}