diff options
| author | Mel <einebeere@gmail.com> | 2022-08-11 01:25:47 +0000 |
|---|---|---|
| committer | Mel <einebeere@gmail.com> | 2022-08-11 01:25:47 +0000 |
| commit | 86f31acf6789be116dcc54ed85b069a37c0f7aa8 (patch) | |
| tree | bc7afd6a8c340825996d29c6cfd392ae42b4fbd5 /pkg/lang/compiler/scope/symbol.go | |
| parent | c46b2bc7ce6df1f2c6c9494ef08015ec29992da5 (diff) | |
| download | jinx-86f31acf6789be116dcc54ed85b069a37c0f7aa8.tar.zst jinx-86f31acf6789be116dcc54ed85b069a37c0f7aa8.zip | |
Actual modules and core
Diffstat (limited to 'pkg/lang/compiler/scope/symbol.go')
| -rw-r--r-- | pkg/lang/compiler/scope/symbol.go | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/pkg/lang/compiler/scope/symbol.go b/pkg/lang/compiler/scope/symbol.go index b87d5aa..8bfe60a 100644 --- a/pkg/lang/compiler/scope/symbol.go +++ b/pkg/lang/compiler/scope/symbol.go @@ -26,6 +26,8 @@ const ( // An env symbol is bound to a local on the stack, outside of the function's scope. // Emitted at lookup time, so the SymbolScope has no array for them. SymbolKindEnv SymbolKind = iota + // A global symbol is bound to a global from a dependency. + SymbolKindGlobal SymbolKind = iota ) func (s SymbolKind) String() string { @@ -34,6 +36,8 @@ func (s SymbolKind) String() string { return "variable" case SymbolKindEnv: return "env" + case SymbolKindGlobal: + return "global" default: panic("unknown symbol kind") } @@ -49,7 +53,7 @@ func (s Symbol[D]) Data() D { } type SymbolData interface { - SymbolVariable | SymbolEnv + SymbolVariable | SymbolEnv | SymbolGlobal } type SymbolVariable struct { @@ -67,3 +71,11 @@ type SymbolEnv struct { func (se SymbolEnv) IndexInEnv() int { return se.indexInEnv } + +type SymbolGlobal struct { + id string +} + +func (sg SymbolGlobal) ID() string { + return sg.id +} \ No newline at end of file |
