Properly reorder arguments in anonymous object super class constructor
#KT-18356 Fixed
This commit is contained in:
+10
@@ -0,0 +1,10 @@
|
||||
var result = "fail"
|
||||
|
||||
open class Base(val o: String, val k: String)
|
||||
|
||||
fun box(): String {
|
||||
val obj1 = object : Base(k = { result = "O"; "K"}() , o = {result += "K"; "O"}()) {}
|
||||
|
||||
if (result != "OK") return "fail $result"
|
||||
return obj1.o + obj1.k
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
var result = "fail"
|
||||
|
||||
open class Base(val o: String, val k: String)
|
||||
class Derived : Base(k = { result = "O"; "K"}() , o = {result += "K"; "O"}()) {}
|
||||
|
||||
fun box(): String {
|
||||
val derived = Derived()
|
||||
|
||||
if (result != "OK") return "fail $result"
|
||||
return derived.o + derived.k
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
open class Base(val addr: Long, val name: String)
|
||||
|
||||
fun box(): String {
|
||||
val obj1 = object : Base(name = "OK", addr = 0x1234L) {}
|
||||
if (obj1.addr != 0x1234L) return "fail ${obj1.addr}"
|
||||
return obj1.name
|
||||
}
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
abstract class Base(val s: String, vararg ints: Int)
|
||||
|
||||
fun foo(s: String, ints: IntArray) = object : Base(ints = *ints, s = s) {}
|
||||
|
||||
fun box(): String {
|
||||
return foo("OK", intArrayOf(1, 2)).s
|
||||
}
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
open class Foo(val value: String) {
|
||||
|
||||
open inner class Inner(val d: Double = -1.0, val s: String, vararg val y: Int) {
|
||||
open fun result() = "Fail"
|
||||
}
|
||||
|
||||
val obj = object : Inner(s = "O") {
|
||||
override fun result() = s + value
|
||||
}
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
return Foo("K").obj.result()
|
||||
}
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
fun box(): String {
|
||||
val capture = "O"
|
||||
|
||||
class Local {
|
||||
val captured = capture
|
||||
|
||||
open inner class Inner(val d: Double = -1.0, val s: String, vararg val y: Int) {
|
||||
open fun result() = "Fail"
|
||||
}
|
||||
|
||||
val obj = object : Inner(s = "K") {
|
||||
override fun result() = capture + s
|
||||
}
|
||||
}
|
||||
|
||||
return Local().obj.result()
|
||||
}
|
||||
Reference in New Issue
Block a user