On Sep 28, 2012, at 9:54 AM, Brendan Eich wrote:
> Allen Wirfs-Brock wrote:
>> I see a potential benefit to implementor in the "deferred early error"
>> concept and there are implementation alternatives that would be lost without
>> it. I see a minor negative impact to developers. They would need to take
>> an extra pre-deployment action in order to be sure that a ES source file
>> does not violate any ES static semantic restrictions. To me this seems
>> like a plausible cost/benefit trade-off.
>
> I don't think this holds up. Modern JS wraps most top level code in
>
> (function () {
> ...
> })();
>
> or similar. That makes a bunch of ES6 "static" errors runtime errors.
Well, my contention is still that all ES error reporting is done at "runtime".
Again, by "static error" I mean one that is detectable by inspection of the
source code without any dependency upon runtime state. Wrapping a function
within a otherwise empty anonymous function does not make such errors less
"static"
Also, my understanding of what we are discussing would defer reporting to first
invocation of the inner-most function containing the error. In the case of the
above module pattern, only early errors at the top level of the anonymous
function would be reported when the anonymous function was called.
>
> Anyway, ES5 did what it did. That may be a place to stop adding early errors,
> but agreeing on this point does not automatically include the idea of making
> functions containing tardy static errors into invocation-fused explosive
> devices!
It isn't clear to me that there is much difference between an invocation-fused
explosive function-level and a similarly fused script file or module. The
triggering of each of these normally occurs at some point after some
application code has executed to even if we are talking about ES5 "early
errors" they are occuring at runtime and may be trigger by some sort of
invocation-like action.
Allen
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss