(This grew out of a conversation Allen and I had yesterday -- great to see it 
developed.)

One thing to make clear:

> ES5~EAS6:  The construct has identical syntax and static semantics in both 
> ES5 and ES6, but differing semantics.  For example, accessing a formal 
> parameter after an assignment to the corresponding element of the function's 
> arguments object.

This is something we propose to do with completion reform, and also until this 
year for typeof null.

It's clear we can't get away with changing typeof null == "null". Even with 
full opt-in, it's a runtime migration hazard (one of the five fingers of fate). 
I withdraw it -- I'm the one who proposed it in lieu of an Object.isObject 
predicate -- but I do not think we should add Object.isObject either.

Rather, we need to rethink reflection on types in light of not only null vs. 
object, but value types/proxies. I'd rather not rush that. In the mean time, 
and for lo these 16 years (heading toward 17!), developers have coped and can 
continue to do so with typeof x == "object" && x === null or simpler (!x, x == 
null, other context-specialized combinations).

In general, the latest "new syntax is its own opt-in" thinking, with Allen's 
state machine approach, means our five fingers of fate have to be small enough 
that we can get away with them. At least Mark and I believe completion reform 
(making the completion value depend on a statically decidable 
expression-statement) is the only such finger we can get away with folding 
right now.


> If you want to explicitly force ES6 processing put a:
>   let ES6;

Or (no quotes)

  use strict;

I think we want this pragma supported, not only the string-literal 
expression-statement "directive".


> at the top of the source file. 
> 
> If you want to explicitly force ES5 processing put a:
>   with (5);
> at the top of the source file

That will potentially deoptimize the top level for some engines, but maybe it 
doesn't matter. I don't expect it to catch on ;-).

/be

_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to