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

Unified Diff: pkg/dev_compiler/tool/input_sdk/private/string_helper.dart

Issue 2994203002: Optimize DDC private library files. (Closed)
Patch Set: Address comments Created 3 years, 4 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
Index: pkg/dev_compiler/tool/input_sdk/private/string_helper.dart
diff --git a/pkg/dev_compiler/tool/input_sdk/private/string_helper.dart b/pkg/dev_compiler/tool/input_sdk/private/string_helper.dart
index 2f106e13764ba78e5ef1e2a80594f046fd81a9bd..c6f26fcfa2ee1adae64d63ffa7bc280eb538ce01 100644
--- a/pkg/dev_compiler/tool/input_sdk/private/string_helper.dart
+++ b/pkg/dev_compiler/tool/input_sdk/private/string_helper.dart
@@ -4,18 +4,22 @@
part of dart._js_helper;
+@notNull
int stringIndexOfStringUnchecked(receiver, other, startIndex) {
return JS('int', '#.indexOf(#, #)', receiver, other, startIndex);
}
+@notNull
String substring1Unchecked(receiver, startIndex) {
return JS('String', '#.substring(#)', receiver, startIndex);
}
+@notNull
String substring2Unchecked(receiver, startIndex, endIndex) {
return JS('String', '#.substring(#, #)', receiver, startIndex, endIndex);
}
+@notNull
bool stringContainsStringUnchecked(receiver, other, startIndex) {
return stringIndexOfStringUnchecked(receiver, other, startIndex) >= 0;
}
@@ -101,7 +105,9 @@ class _StringAllMatchesIterator implements Iterator<Match> {
Match get current => _current;
}
-bool stringContainsUnchecked(String receiver, other, int startIndex) {
+@notNull
+bool stringContainsUnchecked(
+ @notNull String receiver, @notNull other, int startIndex) {
if (other is String) {
return stringContainsStringUnchecked(receiver, other, startIndex);
} else if (other is JSSyntaxRegExp) {
@@ -112,6 +118,7 @@ bool stringContainsUnchecked(String receiver, other, int startIndex) {
}
}
+@notNull
String stringReplaceJS(receiver, replacer, replacement) {
// The JavaScript String.replace method recognizes replacement
// patterns in the replacement string. Dart does not have that
@@ -120,7 +127,8 @@ String stringReplaceJS(receiver, replacer, replacement) {
return JS('String', r'#.replace(#, #)', receiver, replacer, replacement);
}
-String stringReplaceFirstRE(String receiver, JSSyntaxRegExp regexp,
+@notNull
+String stringReplaceFirstRE(@notNull String receiver, JSSyntaxRegExp regexp,
String replacement, int startIndex) {
var match = regexp._execGlobal(receiver, startIndex);
if (match == null) return receiver;
@@ -131,13 +139,14 @@ String stringReplaceFirstRE(String receiver, JSSyntaxRegExp regexp,
/// Returns a string for a RegExp pattern that matches [string]. This is done by
/// escaping all RegExp metacharacters.
+@notNull
String quoteStringForRegExp(string) {
return JS('String', r'#.replace(/[[\]{}()*+?.\\^$|]/g, "\\$&")', string);
}
-String stringReplaceAllUnchecked(
- String receiver, Pattern pattern, String replacement) {
- checkString(replacement);
+@notNull
+String stringReplaceAllUnchecked(@notNull String receiver,
+ @nullCheck Pattern pattern, @nullCheck String replacement) {
if (pattern is String) {
if (pattern == "") {
if (receiver == "") {
@@ -161,7 +170,6 @@ String stringReplaceAllUnchecked(
var re = regExpGetGlobalNative(pattern);
return stringReplaceJS(receiver, re, replacement);
} else {
- checkNull(pattern);
// TODO(floitsch): implement generic String.replace (with patterns).
throw "String.replaceAll(Pattern) UNIMPLEMENTED";
}
@@ -170,20 +178,18 @@ String stringReplaceAllUnchecked(
String _matchString(Match match) => match[0];
String _stringIdentity(String string) => string;
-String stringReplaceAllFuncUnchecked(String receiver, Pattern pattern,
- String onMatch(Match match), String onNonMatch(String nonMatch)) {
+@notNull
+String stringReplaceAllFuncUnchecked(
+ String receiver,
+ @nullCheck Pattern pattern,
+ String onMatch(Match match),
+ String onNonMatch(String nonMatch)) {
if (onMatch == null) onMatch = _matchString;
if (onNonMatch == null) onNonMatch = _stringIdentity;
if (pattern is String) {
return stringReplaceAllStringFuncUnchecked(
receiver, pattern, onMatch, onNonMatch);
}
- // Placing the Pattern test here is indistinguishable from placing it at the
- // top of the method but it saves an extra check on the `pattern is String`
- // path.
- if (pattern is! Pattern) {
- throw new ArgumentError.value(pattern, 'pattern', 'is not a Pattern');
- }
StringBuffer buffer = new StringBuffer();
int startIndex = 0;
for (Match match in pattern.allMatches(receiver)) {
@@ -195,6 +201,7 @@ String stringReplaceAllFuncUnchecked(String receiver, Pattern pattern,
return buffer.toString();
}
+@notNull
String stringReplaceAllEmptyFuncUnchecked(String receiver,
String onMatch(Match match), String onNonMatch(String nonMatch)) {
// Pattern is the empty string.
@@ -224,6 +231,7 @@ String stringReplaceAllEmptyFuncUnchecked(String receiver,
return buffer.toString();
}
+@notNull
String stringReplaceAllStringFuncUnchecked(String receiver, String pattern,
String onMatch(Match match), String onNonMatch(String nonMatch)) {
int patternLength = pattern.length;
@@ -246,8 +254,9 @@ String stringReplaceAllStringFuncUnchecked(String receiver, String pattern,
return buffer.toString();
}
-String stringReplaceFirstUnchecked(
- String receiver, Pattern pattern, String replacement, int startIndex) {
+@notNull
+String stringReplaceFirstUnchecked(@notNull String receiver,
+ @nullCheck Pattern pattern, String replacement, int startIndex) {
if (pattern is String) {
int index = stringIndexOfStringUnchecked(receiver, pattern, startIndex);
if (index < 0) return receiver;
@@ -259,13 +268,13 @@ String stringReplaceFirstUnchecked(
? stringReplaceJS(receiver, regExpGetNative(pattern), replacement)
: stringReplaceFirstRE(receiver, pattern, replacement, startIndex);
}
- checkNull(pattern);
Iterator<Match> matches = pattern.allMatches(receiver, startIndex).iterator;
if (!matches.moveNext()) return receiver;
Match match = matches.current;
return receiver.replaceRange(match.start, match.end, replacement);
}
+@notNull
String stringReplaceFirstMappedUnchecked(String receiver, Pattern pattern,
String replace(Match current), int startIndex) {
Iterator<Match> matches = pattern.allMatches(receiver, startIndex).iterator;
@@ -275,10 +284,12 @@ String stringReplaceFirstMappedUnchecked(String receiver, Pattern pattern,
return receiver.replaceRange(match.start, match.end, replacement);
}
+@notNull
String stringJoinUnchecked(array, separator) {
return JS('String', r'#.join(#)', array, separator);
}
+@notNull
String stringReplaceRangeUnchecked(
String receiver, int start, int end, String replacement) {
var prefix = JS('String', '#.substring(0, #)', receiver, start);

Powered by Google App Engine
This is Rietveld 408576698