package loader
import (
"github.com/marzeq/qk/sema"
)
func RunSemanticPipeline(mods map[string]*ModuleInfo, analyser *sema.Analyser) []error {
graph, err := BuildDependencyGraph(mods)
if err != nil {
return []error{err}
}
order, err := TopoSort(graph)
if err != nil {
return []error{err}
}
for _, name := range order {
info := mods[name]
for _, root := range info.Roots {
analyser.AnalyseModule(root, name)
}
}
if len(analyser.Errors()) > 0 {
return analyser.Errors()
}
return nil
}