diff --git a/src/frontend/compiler.nim b/src/frontend/compiler.nim index e929e83..a81916a 100644 --- a/src/frontend/compiler.nim +++ b/src/frontend/compiler.nim @@ -377,17 +377,17 @@ proc getStackPos(self: Compiler, name: IdentExpr, depth: int = self.scopeDepth): ## Returns the predicted call stack position of a given name, relative ## to the current frame var found = false - result = 2 - for variable in self.names: + result = self.names.len() + for variable in reversed(self.names): if variable.isFunDecl: continue - inc(result) + dec(result) if name.name.lexeme == variable.name.name.lexeme: if variable.isPrivate and variable.owner != self.currentModule: continue else: found = true - dec(result) + inc(result) break if not found: return -1 diff --git a/src/main.nim b/src/main.nim index e23a6a5..39f3a23 100644 --- a/src/main.nim +++ b/src/main.nim @@ -193,7 +193,7 @@ proc runFile(f: string, interactive: bool = false, fromString: bool = false) = serialized: Serialized tokenizer = newLexer() parser = newParser() - compiler = newCompiler() + compiler = newCompiler(replMode=true) debugger {.used.} = newDebugger() serializer = newSerializer() vm = newPeonVM() diff --git a/tests/scopes.pn b/tests/scopes.pn index af3a92b..1a66e00 100644 --- a/tests/scopes.pn +++ b/tests/scopes.pn @@ -7,4 +7,4 @@ var x = 5; } x; } -x; +x; \ No newline at end of file