package compiler import "jinx/pkg/lang/vm/code" type SymbolKind int const ( SymbolKindVariable SymbolKind = iota SymbolKindFunction ) func (s SymbolKind) String() string { switch s { case SymbolKindVariable: return "variable" case SymbolKindFunction: return "function" default: panic("unknown symbol kind") } } type Symbol[D SymbolData] struct { name string data D } type SymbolData interface { SymbolVariable | SymbolFunction } type SymbolVariable struct { localIndex int } type SymbolFunction struct { marker code.Marker }