package sema
import "github.com/marzeq/qk/parser"
func (a *Analyser) collectTopLevel(root *parser.RootNode) {
for _, node := range root.Body {
switch n := node.(type) {
case *parser.FunctionDefNode:
a.collectFunctionSignature(n)
case *parser.TypeAliasNode:
a.collectTypeAlias(n)
case *parser.DeclarationNode:
a.collectGlobalVariable(n)
case *parser.ImportNode:
a.collectImport(n)
}
}
}
func (a *Analyser) resolveBodies(root *parser.RootNode) {
for _, info := range a.aliases {
if info.state == aliasUnseen {
a.resolveAlias(info, info.node)
}
}
for _, node := range root.Body {
a.visit(node)
}
}