On 2014/10/07 17:50:42, Yang wrote:
On 2014/10/07 16:26:59, mathias wrote:
> I’m slightly confused by this patch. Its description is “update to
Unicode
> v7.0.0” but the intent also seems to be to update to the ES6 definition
of
> `Identifier`. However, the current patch only does that partially, as it
doesn’t
> support supplementary Unicode symbols. E.g. `eval('var 𐐼')` shouldn’t
throw
an
> error (`𐐼` is U+1043C DESERET SMALL LETTER DEE).
I'm not particular familiar witb the spec changes in this area. I merely
reran
the script to generate V8's Unicode tables with the data files for Unicode
7.0.0. Thereby I used the same rules to generate the predicates, except
that I
added a predicate Pattern for the properties PATTERN_* to correctly
implement
ID_Start and ID_Continue. I'm not sure how your example is related and
where
it
is described in either ES6 or Unicode. Can you give me a tip?
ES6 allows supplementary characters (i.e. characters with code point >
0xFFFF)
in identifiers, while ES5 doesn’t. See
https://people.mozilla.org/~jorendorff/es6-draft.html#sec-names-and-keywords,
and note how `IdentifierStart` refers to `UnicodeIDStart` which is defined
as
‘any Unicode code point with the Unicode property “ID_Start” or
“Other_ID_Start”’ — this doesn’t exclude supplementary code points. But ES5
did:
https://bugs.ecmascript.org/show_bug.cgi?id=469#c0 The same thing goes for
`IdentifierPart` and `UnicodeIDContinue`.
To illustrate the difference in code: compare
https://gist.github.com/mathiasbynens/6334847#file-javascript-identifier-regex-js-L34-L40
(ES5) with
https://gist.github.com/mathiasbynens/6334847#file-javascript-identifier-regex-js-L65-L81
(ES6).
https://codereview.chromium.org/638643002/
--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.