Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(456)

Side by Side Diff: src/char-predicates.cc

Issue 2331303002: Use ICU for ID_START and ID_CONTINUE for Unicode 9 data (Closed)
Patch Set: undo the speculative fix to see if it's really necessary Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2011 the V8 project authors. All rights reserved. 1 // Copyright 2011 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifdef V8_INTL_SUPPORT
5 #include "src/char-predicates.h" 6 #include "src/char-predicates.h"
6 7
7 #ifdef V8_INTL_SUPPORT
8 #include "unicode/uchar.h" 8 #include "unicode/uchar.h"
9 #include "unicode/urename.h" 9 #include "unicode/urename.h"
10 #endif // V8_INTL_SUPPORT
11 10
12 namespace v8 { 11 namespace v8 {
13 namespace internal { 12 namespace internal {
14 13
15 bool SupplementaryPlanes::IsIDStart(uc32 c) { 14 bool IdentifierStart::Is(uc32 c) {
16 DCHECK(c > 0xFFFF); 15 // cannot use u_isIDStart because it does not work for
17 #ifdef V8_INTL_SUPPORT 16 // Other_ID_Start characters.
18 // This only works for code points in the SMPs, since ICU does not exclude 17 return u_hasBinaryProperty(c, UCHAR_ID_START) ||
19 // code points with properties 'Pattern_Syntax' or 'Pattern_White_Space'. 18 (c < 0x60 && (c == 0x24 || c == 0x5C || c == 0x5F));
20 // Code points in the SMP do not have those properties.
21 return u_isIDStart(c);
22 #else
23 // This is incorrect, but if we don't have ICU, use this as fallback.
24 return false;
25 #endif // V8_INTL_SUPPORT
26 } 19 }
27 20
21 bool IdentifierPart::Is(uc32 c) {
22 // Can't use u_isIDPart because it does not work for
23 // Other_ID_Continue characters.
24 return u_hasBinaryProperty(c, UCHAR_ID_CONTINUE) ||
25 (c < 0x60 && (c == 0x24 || c == 0x5C || c == 0x5F)) || c == 0x200C ||
26 c == 0x200D;
27 }
28 28
29 bool SupplementaryPlanes::IsIDPart(uc32 c) { 29 // Ecma 262 7.0 11.2 White Space
30 DCHECK(c > 0xFFFF); 30 // gC=Zs, U+0009, U+000B, U+000C, U+FEFF
31 #ifdef V8_INTL_SUPPORT 31 bool WhiteSpace::Is(uc32 c) {
32 // This only works for code points in the SMPs, since ICU does not exclude 32 return (u_charType(c) == U_SPACE_SEPARATOR) ||
33 // code points with properties 'Pattern_Syntax' or 'Pattern_White_Space'. 33 (c < 0x0D && (c == 0x09 || c == 0x0B || c == 0x0C)) || c == 0xFEFF;
34 // Code points in the SMP do not have those properties.
35 return u_isIDPart(c);
36 #else
37 // This is incorrect, but if we don't have ICU, use this as fallback.
38 return false;
39 #endif // V8_INTL_SUPPORT
40 } 34 }
35
41 } // namespace internal 36 } // namespace internal
42 } // namespace v8 37 } // namespace v8
38 #endif // V8_INTL_SUPPORT
OLDNEW
« src/char-predicates.h ('K') | « src/char-predicates.h ('k') | src/unicode.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698