> On Nov 7, 2015, at 7:32 AM, Caitlin Potter <[email protected]> wrote: > > That it works in Chrome is a bug, which will hopefully be fixed by Monday or > Tuesday! > > Per http://tc39.github.io/ecma262/#sec-keywords, “new” is a Keyword, which > makes it a ReservedWord. > > Per > http://tc39.github.io/ecma262/#sec-identifiers-static-semantics-early-errors, > under the > “Identifier: IdentifierName but not ReservedWord” section, the second early > error applies here. This applies to > `new`, which is always a reserved word. So whenever an Identifier is > expected, if it contains UnicodeEscapeSequences which result in the same > StringValue as a ReservedWord, it’s an error.
yup > > The spec is similarly explicit in saying that escaped ReservedWords are not > valid as ReservedWords. Browsers behave differently here (for instance, > http://jsfiddle.net/jd51pqae/ <<< at the time of this writing Webkit Nightly > prints the text, while other browsers SyntaxError. in Chromes case, this is > because it’s tokenized as an Identifier, so the second Identifier “f” is > unexpected when parsing a MemberExpression. SpiderMonkey is doing a nice job > of reporting clean errors for this kind of thing, that are easier to > understand. > > There are some odd points though: > > 1. ReservedWord restrictions never apply to `get` or `set`, even in > ObjectLiterals (though currently Chrome fails to treat `g\u{65}t` or > `s\u{65}t` as an accessor prefix, this is a bug). Chrome is doing the right thing here and should not change. The intent is that in the syntactic grammar a sequence of characters in bold font such as get (for example, see http://ecma-international.org/ecma-262/6.0/#sec-method-definitions <http://ecma-international.org/ecma-262/6.0/#sec-method-definitions> ) matches exactly that sequence and does not match theescaped equivalences. That is why the grammar says get rather than saying Identifier with a static semantic restriction that the StringValue of the Identifier must be “get”. I think this is implicit in a careful reading of the grammars, but perhaps would benifit from a explicit note stating this. > > 2. In the case of “new.target”, it’s technically legal to write > `new.t\u{61}rget`, but this mostly just seems like an oversight in the spec. no, for the same reason. http://ecma-international.org/ecma-262/6.0/#sec-left-hand-side-expressions <http://ecma-international.org/ecma-262/6.0/#sec-left-hand-side-expressions> says: NewTarget : new . target new is a keyword, target is an explicit character sequence that doesn’t allow for unicode escapes. Allen
_______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

