package sema
import (
"github.com/marzeq/qk/parser"
"github.com/marzeq/qk/symbols"
)
func (a *Analyser) defineSymbol(sym *symbols.Symbol, node parser.Node) bool {
if _, exists := a.current.Symbols[sym.Name]; exists {
a.errorf(node, "symbol %q already defined in this scope", sym.Name)
return false
}
if a.current.Parent != nil {
if _, ok := a.current.Parent.Resolve(sym.Name); ok {
a.errorf(node, "symbol %q shadows outer declaration", sym.Name)
}
}
a.current.Symbols[sym.Name] = sym
return true
}