Added assertion for super call with default arguments in function default impl body
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
|
||||
fun def(i: Int = 0): Int {
|
||||
return i;
|
||||
}
|
||||
|
||||
fun box():String {
|
||||
val clazz = Class.forName("SuperCallCheckKt")
|
||||
|
||||
val method = clazz.getMethod("def\$default", Int::class.java, Int::class.java, Any::class.java)
|
||||
val result = method.invoke(null, -1, 1, null)
|
||||
|
||||
if (result != 0) return "fail 1: $result"
|
||||
|
||||
var failed = false
|
||||
try {
|
||||
method.invoke(null, -1, 1, "fail")
|
||||
} catch(e: Exception) {
|
||||
val cause = e.cause
|
||||
if (cause is java.lang.UnsupportedOperationException &&
|
||||
cause.message!!.startsWith("Super calls")) {
|
||||
failed = true
|
||||
}
|
||||
}
|
||||
|
||||
return if (!failed) "fail" else "OK"
|
||||
}
|
||||
+2
-2
@@ -8,6 +8,6 @@ class A {
|
||||
return "OK"
|
||||
}
|
||||
}
|
||||
// Test argument reordering when call site argument order differs from declaration one
|
||||
// 18 LOAD
|
||||
// Test argument reordering when call site argument order differs from declaration one: 18 + 1 for super call check
|
||||
// 19 LOAD
|
||||
// 5 STORE
|
||||
+2
-2
@@ -7,6 +7,6 @@ class A {
|
||||
return "OK"
|
||||
}
|
||||
}
|
||||
// Test there is no argument reordering when call site argument order same as declaration one
|
||||
// 15 LOAD
|
||||
// Test there is no argument reordering when call site argument order same as declaration one: 15 + 1 for super call check
|
||||
// 16 LOAD
|
||||
// 2 STORE
|
||||
@@ -0,0 +1,3 @@
|
||||
class A (i: Int = 0)
|
||||
|
||||
// 0 ATHROW
|
||||
Reference in New Issue
Block a user