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