Move checkBounds from StringHelper to InternalPreconditions.
Change-Id: Ica6fed965d273ccd31576fbea2b0f6cffa8deccb
diff --git a/dev/core/super/javaemul/internal/InternalPreconditions.java b/dev/core/super/javaemul/internal/InternalPreconditions.java
index 66b6430..5792137 100644
--- a/dev/core/super/javaemul/internal/InternalPreconditions.java
+++ b/dev/core/super/javaemul/internal/InternalPreconditions.java
@@ -235,6 +235,23 @@
}
/**
+ * Checks that bounds are correct.
+ *
+ * @throw StringIndexOutOfBoundsException if the range is not legal
+ */
+ public static void checkStringBounds(int start, int end, int size) {
+ if (start < 0) {
+ throw new StringIndexOutOfBoundsException("fromIndex: " + start + " < 0");
+ }
+ if (end > size) {
+ throw new StringIndexOutOfBoundsException("toIndex: " + end + " > size " + size);
+ }
+ if (end < start) {
+ throw new StringIndexOutOfBoundsException("fromIndex: " + start + " > toIndex: " + end);
+ }
+ }
+
+ /**
* Substitutes each {@code %s} in {@code template} with an argument. These are matched by
* position: the first {@code %s} gets {@code args[0]}, etc. If there are more arguments than
* placeholders, the unmatched arguments will be appended to the end of the formatted message in
diff --git a/dev/core/super/javaemul/internal/StringHelper.java b/dev/core/super/javaemul/internal/StringHelper.java
index 01f0027..270664e 100644
--- a/dev/core/super/javaemul/internal/StringHelper.java
+++ b/dev/core/super/javaemul/internal/StringHelper.java
@@ -20,27 +20,6 @@
* in GWT's emul.
*/
public class StringHelper {
- /**
- * Checks that bounds are correct.
- *
- * @param legalCount the end of the legal range
- * @param start must be >= 0
- * @param end must be <= legalCount and must be >= start
- * @throw StringIndexOutOfBoundsException if the range is not legal
- * @skip
- */
- public static void checkBounds(int legalCount, int start, int end) {
- if (start < 0) {
- throw new StringIndexOutOfBoundsException(start);
- }
- if (end < start) {
- throw new StringIndexOutOfBoundsException(end - start);
- }
- if (end > legalCount) {
- throw new StringIndexOutOfBoundsException(end);
- }
- }
-
public static String valueOf(char x[], int start, int end) {
// Work around function.prototype.apply call stack size limits:
// https://code.google.com/p/v8/issues/detail?id=2896
diff --git a/user/super/com/google/gwt/emul/java/lang/AbstractStringBuilder.java b/user/super/com/google/gwt/emul/java/lang/AbstractStringBuilder.java
index 7db1549..40c3819 100644
--- a/user/super/com/google/gwt/emul/java/lang/AbstractStringBuilder.java
+++ b/user/super/com/google/gwt/emul/java/lang/AbstractStringBuilder.java
@@ -15,7 +15,7 @@
*/
package java.lang;
-import javaemul.internal.StringHelper;
+import static javaemul.internal.InternalPreconditions.checkStringBounds;
/**
* A base class to share implementation between {@link StringBuffer} and {@link StringBuilder}.
@@ -63,8 +63,8 @@
}
public void getChars(int srcStart, int srcEnd, char[] dst, int dstStart) {
- StringHelper.checkBounds(length(), srcStart, srcEnd);
- StringHelper.checkBounds(dst.length, dstStart, dstStart + (srcEnd - srcStart));
+ checkStringBounds(srcStart, srcEnd, length());
+ checkStringBounds(dstStart, dstStart + (srcEnd - srcStart), dst.length);
while (srcStart < srcEnd) {
dst[dstStart++] = string.charAt(srcStart++);
}
diff --git a/user/super/com/google/gwt/emul/java/lang/String.java b/user/super/com/google/gwt/emul/java/lang/String.java
index a6c3025..f540688 100644
--- a/user/super/com/google/gwt/emul/java/lang/String.java
+++ b/user/super/com/google/gwt/emul/java/lang/String.java
@@ -22,6 +22,7 @@
import java.util.Locale;
import javaemul.internal.HashCodes;
+import javaemul.internal.InternalPreconditions;
import javaemul.internal.StringHelper;
import javaemul.internal.annotations.DoNotInline;
@@ -113,7 +114,7 @@
public static String valueOf(char x[], int offset, int count) {
int end = offset + count;
- StringHelper.checkBounds(x.length, offset, end);
+ InternalPreconditions.checkStringBounds(offset, end, x.length);
return StringHelper.valueOf(x, offset, end);
}