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

Unified Diff: tool/input_sdk/private/js_string.dart

Issue 1950133003: Update String methods. (Closed) Base URL: https://github.com/dart-lang/dev_compiler@master
Patch Set: Created 4 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « tool/input_sdk/private/js_rti.dart ('k') | tool/input_sdk/private/string_helper.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tool/input_sdk/private/js_string.dart
diff --git a/tool/input_sdk/private/js_string.dart b/tool/input_sdk/private/js_string.dart
index 4007b2fb4344ee7359ef592c7df26efa88e08bd0..d7845692842b08eb7054f84504bf674518c34df8 100644
--- a/tool/input_sdk/private/js_string.dart
+++ b/tool/input_sdk/private/js_string.dart
@@ -15,9 +15,9 @@ class JSString extends Interceptor implements String, JSIndexable {
const JSString();
int codeUnitAt(int index) {
- if (index is !int) throw new ArgumentError(index);
- if (index < 0) throw new RangeError.value(index);
- if (index >= length) throw new RangeError.value(index);
+ if (index is !int) throw diagnoseIndexError(this, index);
+ if (index < 0) throw diagnoseIndexError(this, index);
+ if (index >= length) throw diagnoseIndexError(this, index);
return JS('int', r'#.charCodeAt(#)', this, index);
}
@@ -45,7 +45,7 @@ class JSString extends Interceptor implements String, JSIndexable {
}
String operator +(String other) {
- if (other is !String) throw new ArgumentError(other);
+ if (other is !String) throw new ArgumentError.value(other);
return JS('String', r'# + #', this, other);
}
@@ -74,12 +74,18 @@ class JSString extends Interceptor implements String, JSIndexable {
String replaceFirst(Pattern from, String to, [int startIndex = 0]) {
checkString(to);
checkInt(startIndex);
- if (startIndex < 0 || startIndex > this.length) {
- throw new RangeError.range(startIndex, 0, this.length);
- }
+ RangeError.checkValueInInterval(startIndex, 0, this.length, "startIndex");
return stringReplaceFirstUnchecked(this, from, to, startIndex);
}
+ String replaceFirstMapped(Pattern from, String replace(Match match),
+ [int startIndex = 0]) {
+ checkNull(replace);
+ checkInt(startIndex);
+ RangeError.checkValueInInterval(startIndex, 0, this.length, "startIndex");
+ return stringReplaceFirstMappedUnchecked(this, from, replace, startIndex);
+ }
+
List<String> split(Pattern pattern) {
checkNull(pattern);
if (pattern is String) {
@@ -92,6 +98,14 @@ class JSString extends Interceptor implements String, JSIndexable {
}
}
+ String replaceRange(int start, int end, String replacement) {
+ checkString(replacement);
+ checkInt(start);
+ end = RangeError.checkValidRange(start, end, this.length);
+ checkInt(end);
+ return stringReplaceRangeUnchecked(this, start, end, replacement);
+ }
+
List<String> _defaultSplit(Pattern pattern) {
List<String> result = <String>[];
// End of most recent match. That is, start of next part to add to result.
@@ -366,12 +380,12 @@ class JSString extends Interceptor implements String, JSIndexable {
int indexOf(Pattern pattern, [int start = 0]) {
checkNull(pattern);
- if (start is! int) throw new ArgumentError(start);
+ if (start is! int) throw argumentErrorValue(start);
if (start < 0 || start > this.length) {
throw new RangeError.range(start, 0, this.length);
}
if (pattern is String) {
- return JS('int', r'#.indexOf(#, #)', this, pattern, start);
+ return stringIndexOfStringUnchecked(this, pattern, start);
}
if (pattern is JSSyntaxRegExp) {
JSSyntaxRegExp re = pattern;
@@ -389,7 +403,7 @@ class JSString extends Interceptor implements String, JSIndexable {
if (start == null) {
start = length;
} else if (start is! int) {
- throw new ArgumentError(start);
+ throw argumentErrorValue(start);
} else if (start < 0 || start > this.length) {
throw new RangeError.range(start, 0, this.length);
}
@@ -419,9 +433,9 @@ class JSString extends Interceptor implements String, JSIndexable {
bool get isNotEmpty => !isEmpty;
int compareTo(String other) {
- if (other is !String) throw new ArgumentError(other);
+ if (other is !String) throw argumentErrorValue(other);
return this == other ? 0
- : JS('bool', r'# < #', this, other) ? -1 : 1;
+ : JS('bool', r'# < #', this, other) ? -1 : 1;
}
// Note: if you change this, also change the function [S].
@@ -452,8 +466,8 @@ class JSString extends Interceptor implements String, JSIndexable {
int get length => JS('int', r'#.length', this);
String operator [](int index) {
- if (index is !int) throw new ArgumentError(index);
- if (index >= length || index < 0) throw new RangeError.value(index);
+ if (index is !int) throw diagnoseIndexError(this, index);
+ if (index >= length || index < 0) throw diagnoseIndexError(this, index);
return JS('String', '#[#]', this, index);
}
}
« no previous file with comments | « tool/input_sdk/private/js_rti.dart ('k') | tool/input_sdk/private/string_helper.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698