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
	}

	a.current.Symbols[sym.Name] = sym
	if sym.Kind == symbols.SymbolKindVariable && len(a.lambdaOwnedSymbols) != 0 {
		a.lambdaOwnedSymbols[len(a.lambdaOwnedSymbols)-1][sym] = true
	}
	return true
}