Adds no-op functionaliy to Throwable and friends.
This is in preparation for J2CL having its own java.lang.Throwable.
Change-Id: I0eddd3e45aa15ad5059f5735c9e951226e61183d
Review-Link: https://gwt-review.googlesource.com/#/c/21900/
diff --git a/user/super/com/google/gwt/emul/java/lang/JsException.java b/user/super/com/google/gwt/emul/java/lang/JsException.java
index 7a37e9c..faf8565 100644
--- a/user/super/com/google/gwt/emul/java/lang/JsException.java
+++ b/user/super/com/google/gwt/emul/java/lang/JsException.java
@@ -22,8 +22,13 @@
*/
public class JsException extends RuntimeException {
+ private static final Object UNINITIALIZED = "__noinit__";
+
+ private Object backingJsObject = UNINITIALIZED;
+
protected JsException(Object backingJsObject) {
super(backingJsObject);
+ this.backingJsObject = backingJsObject;
}
JsException(String msg) {
@@ -33,4 +38,10 @@
JsException() {
super();
}
+
+ // Note that this initialization path is only used for J2CL transpiler, not in GWT.
+ @Override
+ void privateInitError(Object error) {
+ super.privateInitError(backingJsObject == UNINITIALIZED ? error : backingJsObject);
+ }
}
diff --git a/user/super/com/google/gwt/emul/java/lang/NullPointerException.java b/user/super/com/google/gwt/emul/java/lang/NullPointerException.java
index 3bb6113..c5a8c35 100644
--- a/user/super/com/google/gwt/emul/java/lang/NullPointerException.java
+++ b/user/super/com/google/gwt/emul/java/lang/NullPointerException.java
@@ -35,7 +35,7 @@
super(typeError);
}
- @Override
+ // Do not add @Override since J2CL doesn't have the method.
Object createError(String msg) {
return new NativeTypeError(msg);
}
diff --git a/user/super/com/google/gwt/emul/java/lang/Throwable.java b/user/super/com/google/gwt/emul/java/lang/Throwable.java
index 7467655..3ea313d 100644
--- a/user/super/com/google/gwt/emul/java/lang/Throwable.java
+++ b/user/super/com/google/gwt/emul/java/lang/Throwable.java
@@ -117,6 +117,9 @@
return new NativeError(msg);
}
+ // Called by J2CL transpiler. Do not remove!
+ void privateInitError(Object error) { }
+
@SuppressWarnings("unusable-by-js")
private static native Object fixIE(Object e) /*-{
// In IE -unlike every other browser-, the stack property is not defined until you throw it.