JSC does lazy parsing of nested functions and we have no problem reporting 
static errors, so i’m not sure what you believe is the problem here.

—Oliver

> On Oct 1, 2014, at 7:09 AM, Erik Arvidsson <[email protected]> wrote:
> 
> The static error is problematic. I'm pretty sure that engines that do lazy 
> parsing of functions is not going to report static errors before doing a full 
> parse of the function.
> 
> I think we need to either enforce this or remove this restriction. Anything 
> in between will lead to inconsistent behavior between engines.
> 
> On Tue, Sep 30, 2014 at 8:58 PM, Allen Wirfs-Brock <[email protected] 
> <mailto:[email protected]>> wrote:
> 
> On Sep 30, 2014, at 5:09 PM, Shu-yu Guo wrote:
> 
>> Hi all,
>> 
>> In the current draft, I see 2 different places where assigning to an 
>> immutable binding ('const') throws an error:
>> 
>> 1) Dynamically throwing a TypeError in SetMutableBinding, 
>> http://people.mozilla.org/~jorendorff/es6-draft.html#sec-declarative-environment-records-setmutablebinding-n-v-s
>>  
>> <http://people.mozilla.org/~jorendorff/es6-draft.html#sec-declarative-environment-records-setmutablebinding-n-v-s>
>> 2) Statically throwing a Syntax Error in assignment expressions, 
>> http://people.mozilla.org/~jorendorff/es6-draft.html#sec-assignment-operators-static-semantics-early-errors
>>  
>> <http://people.mozilla.org/~jorendorff/es6-draft.html#sec-assignment-operators-static-semantics-early-errors>
> see bug https://bugs.ecmascript.org/show_bug.cgi?id=3148 
> <https://bugs.ecmascript.org/show_bug.cgi?id=3148> the "can" in that sentence 
> isn't meant to be interpreted as "best effort" but instead more along the 
> lines of "it is provable".
> 
> We need to refine that language, but the test is approximately that there are 
> no with blocks inside the scope of the const declaration and surrounding the 
> reference to the const. binding
> 
>> 
>> 1) throws only in strict mode code, while 2) throws regardless. 2) is also 
>> best effort; seems to be implementation-dependent what "can statically 
>> determine" entails.
>> 
>> Is the intention that assigning to consts silently nops if the 
>> implementation cannot determine the assignment to be to a const statically, 
>> in non-strict code, but implementations *should* make a best effort to 
>> report such cases eagerly, regardless of strictness? Seems kind of odd to 
>> me; perhaps I am misreading?
> 
> 1) looks like a bug to me.  I pretty sure it was never the intent for 
> assignments to const binding to silently fail in non-strict code. The current 
> semantics of SetMutableBinding is a carry over from ES5 where immutable 
> bindings were only used (I have to double check this) for FunctionExpression 
> function name bindings. The legacy of ES3 (hence non-strict ES5) was to did 
> not throw on assignments to such function name bindings.
> 
> I'll probably have to do some extra special casing to preserve the ES3/5 
> semantics for assignment to function names and make the throw unconditional 
> to other immutable bindings
> 
> Allen
> 
> 
> 
> _______________________________________________
> es-discuss mailing list
> [email protected] <mailto:[email protected]>
> https://mail.mozilla.org/listinfo/es-discuss 
> <https://mail.mozilla.org/listinfo/es-discuss>
> 
> 
> 
> 
> -- 
> erik
> _______________________________________________
> es-discuss mailing list
> [email protected]
> https://mail.mozilla.org/listinfo/es-discuss

_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to