JS backend: support for Throwable.getMessage
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
package foo
|
||||
|
||||
fun box(): String {
|
||||
|
||||
var s: String = ""
|
||||
|
||||
try {
|
||||
throw Exception("Exception")
|
||||
} catch (e: Throwable) {
|
||||
s = "Throwable:" + e.getMessage()!!
|
||||
}
|
||||
assertEquals("Throwable:Exception", s)
|
||||
|
||||
s = ""
|
||||
try {
|
||||
throw Exception("Exception")
|
||||
} catch (e: Exception) {
|
||||
s = "Exception:" + e.getMessage()!!
|
||||
}
|
||||
assertEquals("Exception:Exception", s)
|
||||
|
||||
s = ""
|
||||
try {
|
||||
throw RuntimeException("RuntimeException")
|
||||
} catch (e: Exception) {
|
||||
s = "Exception:" + e.getMessage()!!
|
||||
}
|
||||
assertEquals("Exception:RuntimeException", s)
|
||||
|
||||
s = ""
|
||||
try {
|
||||
throw NullPointerException("NullPointerException")
|
||||
} catch (e: Exception) {
|
||||
s = "Exception:" + e.getMessage()!!
|
||||
}
|
||||
assertEquals("Exception:NullPointerException", s)
|
||||
|
||||
s = ""
|
||||
try {
|
||||
throw IndexOutOfBoundsException("IndexOutOfBoundsException")
|
||||
} catch (e: NullPointerException) {
|
||||
s = "NullPointerException:" + e.getMessage()!!
|
||||
} catch (e: RuntimeException) {
|
||||
s = "RuntimeException:" + e.getMessage()!!
|
||||
} catch (e: Exception) {
|
||||
s = "Exception:" + e.getMessage()!!
|
||||
}
|
||||
assertEquals("RuntimeException:IndexOutOfBoundsException", s)
|
||||
|
||||
try {
|
||||
throw RuntimeException()
|
||||
} catch (e: Exception) {
|
||||
assertEquals(null, e.getMessage())
|
||||
}
|
||||
|
||||
return "OK"
|
||||
}
|
||||
@@ -164,16 +164,28 @@
|
||||
return new Kotlin.Progression(from, to, -1);
|
||||
};
|
||||
|
||||
Kotlin.RuntimeException = Kotlin.createClassNow();
|
||||
Kotlin.NullPointerException = Kotlin.createClassNow();
|
||||
Kotlin.NoSuchElementException = Kotlin.createClassNow();
|
||||
Kotlin.IllegalArgumentException = Kotlin.createClassNow();
|
||||
Kotlin.IllegalStateException = Kotlin.createClassNow();
|
||||
Kotlin.UnsupportedOperationException = Kotlin.createClassNow();
|
||||
Kotlin.IOException = Kotlin.createClassNow();
|
||||
Kotlin.Exception = Error;
|
||||
|
||||
Kotlin.throwNPE = function () {
|
||||
throw new Kotlin.NullPointerException();
|
||||
function createClassNowWithMessage(base) {
|
||||
return Kotlin.createClassNow(base,
|
||||
/** @constructs */
|
||||
function (message) {
|
||||
this.message = (message !== undefined) ? message : null;
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
Kotlin.RuntimeException = createClassNowWithMessage(Kotlin.Exception);
|
||||
Kotlin.NullPointerException = createClassNowWithMessage(Kotlin.RuntimeException);
|
||||
Kotlin.NoSuchElementException = createClassNowWithMessage(Kotlin.RuntimeException);
|
||||
Kotlin.IllegalArgumentException = createClassNowWithMessage(Kotlin.RuntimeException);
|
||||
Kotlin.IllegalStateException = createClassNowWithMessage(Kotlin.RuntimeException);
|
||||
Kotlin.UnsupportedOperationException = createClassNowWithMessage(Kotlin.RuntimeException);
|
||||
Kotlin.IndexOutOfBoundsException = createClassNowWithMessage(Kotlin.RuntimeException);
|
||||
Kotlin.IOException = createClassNowWithMessage(Kotlin.Exception);
|
||||
|
||||
Kotlin.throwNPE = function (message) {
|
||||
throw new Kotlin.NullPointerException(message);
|
||||
};
|
||||
|
||||
function throwAbstractFunctionInvocationError(funName) {
|
||||
@@ -468,7 +480,7 @@
|
||||
},
|
||||
checkRange: function (index) {
|
||||
if (index < 0 || index >= this.array.length) {
|
||||
throw new RangeError();
|
||||
throw new Kotlin.IndexOutOfBoundsException();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user