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 }