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 }