Mark Miller erights at gmail.com
Mon Nov 12 16:01:22 PST 2007

On Nov 12, 2007 2:30 PM, Brendan Eich <brendan at mozilla.org> wrote:
> Nothing as badly silent as assigning to a ReadOnly property, but here I'll
> bitch about a similar change during ES1 standardization: delete x => false
>
> Anyway, with exception handling these both seem like warts. At least with
> delete, the expression using that operator at the top level has a boolean
> result -- but the result could be true and the property is still "in" the
> object (via prototype-based delegation). Beware.

Another point of agreement! Caja attempts to be approximately a
"fail-stop subset" of ES3 (or ES3R), meaning (from the Caja spec):

# Caja is only a subset of JavaScript in a limited sense: While a Caja program
# has not explicitly indicated a failure, it executes within JavaScript's
# semantics. By \emph{indicate a failure}, we mean either throwing an exception
# or returning \code{undefined} for a property read.

To fix delete within this constraint, "delete <whatever>" in Caja
either return true or throws.

--
Text by me above is hereby placed in the public domain

Cheers,
--MarkM