diff options
Diffstat (limited to 'eval.c')
-rw-r--r-- | eval.c | 7 |
1 files changed, 6 insertions, 1 deletions
@@ -225,7 +225,11 @@ nameis(Datum left, Datum right) Datum assign(Datum left, Datum right) { - if(left.symbol->setfn != nil) + if(runestrcmp(left.symbol->name, L"⍵") == 0) + throwerror(nil, ESyntax); + else if(runestrcmp(left.symbol->name, L"⍺") == 0 && !left.symbol->undefined) + goto end; + else if(left.symbol->setfn != nil) left.symbol->setfn(right); else{ if(left.symbol->undefined == 0 && left.symbol->value.tag == ArrayTag) @@ -237,6 +241,7 @@ assign(Datum left, Datum right) incref(right.array); /* for the binding */ } } +end: right.shy = 1; if(right.tag == ArrayTag) incref(right.array); /* for the returned array */ |