So I've been bugfixing and merging the code from the simplified
operators branch. I just fixed so that UNDEFINED is always ignored
when adding arrays, mappins and multisets, and not just as first
argument.
Previously:
Pike v8.1 release 6 running Hilfe v3.5 (Incremental Pike Frontend)
> `+( UNDEFINED, ({1}), ({2}) );
(1) Result: ({ /* 2 elements */
1,
2
})
> `+( ({1}), UNDEFINED, ({2}) );
Bad argument 2 to `+(). Expected array.
Unknown program: `+(({1}),UNDEFINED,({2}))
HilfeInput:1: HilfeInput()->___HilfeWrapper()
The remaining issue I have is what to do when an addition LFUN returns
UNDEFINED. I interpret Pers commit message as he was leaning towards
having an object return UNDEFINED mean to not involve the object,
though there was no code to back that up. I lean towards having
returning UNDEFINED be an error, since the object can just as well
return the value it was given. In any event, the current behaviour is
wrong:
Pike v8.1 release 6 running Hilfe v3.5 (Incremental Pike Frontend)
> class A { mixed ``+(mixed x) { return UNDEFINED; } }
> `+( ({1}), A(), ({2}) );
(1) Result: ({ /* 1 element */
2
})