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.