[regexp] simplify unicode flag check.

It's sufficient to check for --harmony-unicode-regexps when parsing the
regexp flags from string.

R=neis@chromium.org

Review URL: https://codereview.chromium.org/1567413002

Cr-Commit-Position: refs/heads/master@{#33178}
This commit is contained in:
yangguo 2016-01-08 05:26:25 -08:00 committed by Commit bot
parent 43d45493c6
commit 45850f4012

View File

@ -343,7 +343,7 @@ RegExpTree* RegExpParser::ParseDisjunction() {
// escaped,
// no other identity escapes are allowed. If the 'u' flag is not
// present, all identity escapes are allowed.
if (!FLAG_harmony_unicode_regexps || !unicode_) {
if (!unicode_) {
builder->AddCharacter(first_digit);
Advance(2);
} else {
@ -404,7 +404,7 @@ RegExpTree* RegExpParser::ParseDisjunction() {
uc32 value;
if (ParseHexEscape(2, &value)) {
builder->AddCharacter(value);
} else if (!FLAG_harmony_unicode_regexps || !unicode_) {
} else if (!unicode_) {
builder->AddCharacter('x');
} else {
// If the 'u' flag is present, invalid escapes are not treated as
@ -418,7 +418,7 @@ RegExpTree* RegExpParser::ParseDisjunction() {
uc32 value;
if (ParseUnicodeEscape(&value)) {
builder->AddCharacter(value);
} else if (!FLAG_harmony_unicode_regexps || !unicode_) {
} else if (!unicode_) {
builder->AddCharacter('u');
} else {
// If the 'u' flag is present, invalid escapes are not treated as
@ -434,8 +434,7 @@ RegExpTree* RegExpParser::ParseDisjunction() {
// other identity escapes are allowed. If the 'u' flag is not
// present,
// all identity escapes are allowed.
if (!FLAG_harmony_unicode_regexps || !unicode_ ||
IsSyntaxCharacter(current())) {
if (!unicode_ || IsSyntaxCharacter(current())) {
builder->AddCharacter(current());
Advance();
} else {
@ -736,7 +735,7 @@ bool RegExpParser::ParseUnicodeEscape(uc32* value) {
// Accept both \uxxxx and \u{xxxxxx} (if harmony unicode escapes are
// allowed). In the latter case, the number of hex digits between { } is
// arbitrary. \ and u have already been read.
if (current() == '{' && FLAG_harmony_unicode_regexps && unicode_) {
if (current() == '{' && unicode_) {
int start = position();
Advance();
if (ParseUnlimitedLengthHexNumber(0x10ffff, value)) {
@ -831,7 +830,7 @@ uc32 RegExpParser::ParseClassCharacterEscape() {
if (ParseHexEscape(2, &value)) {
return value;
}
if (!FLAG_harmony_unicode_regexps || !unicode_) {
if (!unicode_) {
// If \x is not followed by a two-digit hexadecimal, treat it
// as an identity escape.
return 'x';
@ -847,7 +846,7 @@ uc32 RegExpParser::ParseClassCharacterEscape() {
if (ParseUnicodeEscape(&value)) {
return value;
}
if (!FLAG_harmony_unicode_regexps || !unicode_) {
if (!unicode_) {
return 'u';
}
// If the 'u' flag is present, invalid escapes are not treated as
@ -860,8 +859,7 @@ uc32 RegExpParser::ParseClassCharacterEscape() {
// If the 'u' flag is present, only syntax characters can be escaped, no
// other identity escapes are allowed. If the 'u' flag is not present, all
// identity escapes are allowed.
if (!FLAG_harmony_unicode_regexps || !unicode_ ||
IsSyntaxCharacter(result)) {
if (!unicode_ || IsSyntaxCharacter(result)) {
Advance();
return result;
}