diff options
author | Peter Mikkelsen <peter@pmikkelsen.com> | 2022-02-09 13:08:12 +0000 |
---|---|---|
committer | Peter Mikkelsen <peter@pmikkelsen.com> | 2022-02-09 13:08:12 +0000 |
commit | e195d66a333102924bae452ba09dc20cba4e96e6 (patch) | |
tree | 83ce2bd6c816eb9087b4c7f575e52e77ae8faa73 /eval.c | |
parent | a8f66d313a4ec83622e1e0fce3206a65c12324a9 (diff) |
Since symbols now have pointers to their values, we don't need the symbol.undefined field anymore
Diffstat (limited to 'eval.c')
-rw-r--r-- | eval.c | 7 |
1 files changed, 2 insertions, 5 deletions
@@ -141,7 +141,7 @@ lookup(Datum *var) traceprint("VAR LOOKUP %S\n", var->name); Symbol *symbol = getsym(var->name, 0); - if(symbol->undefined){ + if(symbol->value == nil && symbol->getfn == nil){ Rune *msg = runesmprint("Undefined name: %S", var->name); throwerror(msg, EValue); } @@ -259,12 +259,9 @@ assign(Datum *left, Datum *right) else{ /* re-assign the symbol to one that is sure to be local. This enables shadowing */ symbol = getsym(symbol->name, 1); - - if(symbol->undefined == 0) - freedatum(symbol->value); + freedatum(symbol->value); symbol->value = right; incdatumref(right); - symbol->undefined = 0; if(symbol->value->tag == ArrayTag) symbol->value->array->stranded = 0; } |