From 41490ae52e3b1ff20980c5e0837d257043b3ca92 Mon Sep 17 00:00:00 2001 From: Mel Date: Tue, 26 Jul 2022 02:37:38 +0200 Subject: Store functions in locals and remove hoisting --- pkg/lang/compiler/scope/symbol.go | 21 ++------------------- 1 file changed, 2 insertions(+), 19 deletions(-) (limited to 'pkg/lang/compiler/scope/symbol.go') diff --git a/pkg/lang/compiler/scope/symbol.go b/pkg/lang/compiler/scope/symbol.go index df91899..3b50108 100644 --- a/pkg/lang/compiler/scope/symbol.go +++ b/pkg/lang/compiler/scope/symbol.go @@ -1,7 +1,5 @@ package scope -import "jinx/pkg/lang/vm/code" - type SymbolID struct { symbolKind SymbolKind scopeID ScopeID @@ -15,16 +13,14 @@ func (id SymbolID) SymbolKind() SymbolKind { type SymbolKind int const ( + // A variable symbol is bound to a local on the stack. SymbolKindVariable SymbolKind = iota - SymbolKindFunction ) func (s SymbolKind) String() string { switch s { case SymbolKindVariable: return "variable" - case SymbolKindFunction: - return "function" default: panic("unknown symbol kind") } @@ -40,7 +36,7 @@ func (s Symbol[D]) Data() D { } type SymbolData interface { - SymbolVariable | SymbolFunction + SymbolVariable } type SymbolVariable struct { @@ -50,16 +46,3 @@ type SymbolVariable struct { func (sv SymbolVariable) LocalIndex() int { return sv.localIndex } - -type SymbolFunction struct { - marker code.Marker - args uint -} - -func (sf SymbolFunction) Marker() code.Marker { - return sf.marker -} - -func (sf SymbolFunction) Args() uint { - return sf.args -} -- cgit 1.4.1