Index: src/parser.cc |
diff --git a/src/parser.cc b/src/parser.cc |
index 88832087f8fbbabfade19fa9d80c0ec427f05ed8..e1d9b712ce7b5602f9d3729c976b5f4067ecf18d 100644 |
--- a/src/parser.cc |
+++ b/src/parser.cc |
@@ -3848,9 +3848,7 @@ RegExpTree* RegExpParser::ReportError(Vector<const char> message) { |
// Disjunction |
RegExpTree* RegExpParser::ParsePattern() { |
RegExpTree* result = ParseDisjunction(CHECK_FAILED); |
- if (has_more()) { |
- ReportError(CStrVector("Unmatched ')'") CHECK_FAILED); |
- } |
+ ASSERT(!has_more()); |
// If the result of parsing is a literal string atom, and it has the |
// same length as the input, then the atom is identical to the input. |
if (result->IsAtom() && result->AsAtom()->length() == in()->length()) { |
@@ -3888,7 +3886,7 @@ RegExpTree* RegExpParser::ParseDisjunction() { |
return builder->ToRegExp(); |
case ')': { |
if (!stored_state->IsSubexpression()) { |
- ReportError(CStrVector("Unexpected ')'") CHECK_FAILED); |
+ ReportError(CStrVector("Unmatched ')'") CHECK_FAILED); |
} |
ASSERT_NE(INITIAL, stored_state->group_type()); |
@@ -4028,7 +4026,7 @@ RegExpTree* RegExpParser::ParseDisjunction() { |
CharacterRange::AddClassEscape(c, ranges); |
RegExpTree* atom = new RegExpCharacterClass(ranges, false); |
builder->AddAtom(atom); |
- goto has_read_atom; // Avoid setting has_character_escapes_. |
+ break; |
} |
case '1': case '2': case '3': case '4': case '5': case '6': |
case '7': case '8': case '9': { |
@@ -4040,11 +4038,11 @@ RegExpTree* RegExpParser::ParseDisjunction() { |
} |
if (capture == NULL) { |
builder->AddEmpty(); |
- goto has_read_atom; |
+ break; |
} |
RegExpTree* atom = new RegExpBackReference(capture); |
builder->AddAtom(atom); |
- goto has_read_atom; // Avoid setting has_character_escapes_. |
+ break; |
} |
uc32 first_digit = Next(); |
if (first_digit == '8' || first_digit == '9') { |
@@ -4129,7 +4127,6 @@ RegExpTree* RegExpParser::ParseDisjunction() { |
break; |
} // end switch(current()) |
- has_read_atom: |
int min; |
int max; |
switch (current()) { |