Throwing errors on mutating immutable bindings

Allen Wirfs-Brock allen at wirfs-brock.com
Wed Oct 1 08:59:00 PDT 2014


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.

Allen



More information about the es-discuss mailing list