diff options
| author | Peter Mikkelsen <petermikkelsen10@gmail.com> | 2022-01-24 21:29:00 +0000 |
|---|---|---|
| committer | Peter Mikkelsen <petermikkelsen10@gmail.com> | 2022-01-24 21:29:00 +0000 |
| commit | fbbd0b34314d58cc4d210e5ff07c2726fdadd659 (patch) | |
| tree | 84b4fc5b3dbdcdb688f32c248fcb508253f55fa0 | |
| parent | a4cc3e44e0fcf15159c68f7af45e8decd0c30ba4 (diff) | |
re-open symbols before read, as they may have changed due to shadowing. Example of code this commit fixes:
before:
a←10
{a←⍵ ⋄ a} 20
10
a
10
now:
a←10
{a←⍵ ⋄ a} 20
20
a
10
| -rw-r--r-- | eval.c | 2 |
1 files changed, 2 insertions, 0 deletions
@@ -136,6 +136,8 @@ Datum * lookup(Datum var) { traceprint("VAR LOOKUP %S\n", var.symbol->name); + /* re-assign the symbol, since it may have been changed by shadowing */ + var.symbol = getsym(var.symbol->name, 0); if(var.symbol->undefined){ Rune *msg = runesmprint("Undefined name: %S", var.symbol->name); |