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 /eval.c | |
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
Diffstat (limited to 'eval.c')
-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); |