Index: runtime/lib/regexp_patch.dart |
diff --git a/runtime/lib/regexp_patch.dart b/runtime/lib/regexp_patch.dart |
index e365f30e5bb7356b983b7fb503cd1707dc223e4c..d82e3305d981a098d003823cc8d5df4369bcb8f4 100644 |
--- a/runtime/lib/regexp_patch.dart |
+++ b/runtime/lib/regexp_patch.dart |
@@ -13,21 +13,21 @@ patch class RegExp { |
} |
class _JSRegExpMatch implements Match { |
- _JSRegExpMatch(this.regexp, this.str, this._match); |
+ _JSRegExpMatch(this._regexp, this.str, this._match); |
int get start => _start(0); |
int get end => _end(0); |
int _start(int groupIdx) { |
- return _match[(groupIdx * MATCH_PAIR)]; |
+ return _match[(groupIdx * _MATCH_PAIR)]; |
} |
int _end(int groupIdx) { |
- return _match[(groupIdx * MATCH_PAIR) + 1]; |
+ return _match[(groupIdx * _MATCH_PAIR) + 1]; |
} |
String group(int groupIdx) { |
- if (groupIdx < 0 || groupIdx > regexp._groupCount) { |
+ if (groupIdx < 0 || groupIdx > _regexp._groupCount) { |
throw new RangeError.value(groupIdx); |
} |
int startIndex = _start(groupIdx); |
@@ -51,14 +51,14 @@ class _JSRegExpMatch implements Match { |
return groupsList; |
} |
- int get groupCount => regexp._groupCount; |
+ int get groupCount => _regexp._groupCount; |
- String get pattern => regexp.pattern; |
+ Pattern get pattern => _regexp; |
- final RegExp regexp; |
+ final RegExp _regexp; |
final String str; |
final List<int> _match; |
- static const int MATCH_PAIR = 2; |
+ static const int _MATCH_PAIR = 2; |
} |
@@ -80,20 +80,21 @@ class _JSSyntaxRegExp implements RegExp { |
if (str is! String) throw new ArgumentError(str); |
List<Match> result = new List<Match>(); |
int length = str.length; |
- int startIndex = 0; |
+ int index = 0; |
while (true) { |
- List match = _ExecuteMatch(str, startIndex); |
+ List match = _ExecuteMatch(str, index); |
if (match == null) { |
break; |
} |
result.add(new _JSRegExpMatch(this, str, match)); |
- int endIndex = match[1]; |
- if (endIndex == length) { |
- break; |
- } else if (match[0] == endIndex) { |
- ++startIndex; // empty match, advance and restart |
- } else { |
- startIndex = endIndex; |
+ // Find the index at which to start searching for the next match. |
+ index = match[1]; |
+ if (match[0] == index) { |
+ // Zero-length match. |
+ if (index == length) { |
+ break; |
+ } |
+ index++; |
} |
} |
return result; |