Throwing errors on mutating immutable bindings

Mark Miller erights at gmail.com
Wed Oct 1 10:30:29 PDT 2014


On Wed, Oct 1, 2014 at 9:15 AM, Allen Wirfs-Brock <allen at wirfs-brock.com>
wrote:

>
> On Oct 1, 2014, at 9:05 AM, Mark S. Miller wrote:
>
> Good point. If we can require all such assignments to be rejected
> statically, why is a runtime assignment to a const variable even possible?
> Can't we just assert that this cannot occur?
>
>
> The runtime cases I meant are the ones you mentioned. Sloppy with or eval
> dynamically shadowing a sloppy a [[Set]] reference to a const binding.
> Can't be a early error, should be a runtime error.
>

Although it is a bit late to suggest it ;) ...

Couldn't we have "with" and sloppy direct eval ignore/skip const and let
bindings? Then these errors could always be early.

I have no argument with the answer "too late", but still curious if there's
another reason.


>
> Allen
>
>
>
>
>
>
> On Wed, Oct 1, 2014 at 8:59 AM, Allen Wirfs-Brock <allen at wirfs-brock.com>
> wrote:
>
>>
>> On Oct 1, 2014, at 8:39 AM, Mark S. Miller wrote:
>>
>> ...
>>
>> I was with you until you got to the following point
>>
>> >
>> > If there is an intervening "with" or sloppy direct eval, then there is
>> not a statically apparent assignment to a const variable. Since this can
>> only occur in sloppy code anyway, it seems more consistent with the rest of
>> sloppy mode for this failed assignment to be silent, rather than
>> dynamically throwing an error.
>> >
>>
>> const is a new kind of declaration unlike any declaration form that
>> previous existed in ES, so Ii don't think its handling introduces any
>> legacy consistency issues.  If somebody is using const, regard less of
>> mode, they pretty clearly expect assignments to any const bindings to be
>> illegal.  And, I don't think any body wants new silent failure errors, even
>> in sloppy mode.  The most consistent thing is for runtime detected
>> assignments to const bindings to always be noisy errors.  Early where
>> possible, at runtime in the rest of the cases.
>>
>
-- 
  Cheers,
  --MarkM
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20141001/3eb3beef/attachment.html>


More information about the es-discuss mailing list