summaryrefslogtreecommitdiff
path: root/eval.c
diff options
context:
space:
mode:
authorPeter Mikkelsen <peter@pmikkelsen.com>2022-02-09 13:08:12 +0000
committerPeter Mikkelsen <peter@pmikkelsen.com>2022-02-09 13:08:12 +0000
commite195d66a333102924bae452ba09dc20cba4e96e6 (patch)
tree83ce2bd6c816eb9087b4c7f575e52e77ae8faa73 /eval.c
parenta8f66d313a4ec83622e1e0fce3206a65c12324a9 (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.c7
1 files changed, 2 insertions, 5 deletions
diff --git a/eval.c b/eval.c
index b7515b1..ea7e84f 100644
--- a/eval.c
+++ b/eval.c
@@ -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;
}