// !JVM_DEFAULT_MODE: disable // TARGET_BACKEND: JVM // First item on Android is `java.lang.Thread.getStackTrace` // IGNORE_BACKEND: ANDROID // WITH_RUNTIME // FULL_JDK interface Test { fun call(): List = Thread.currentThread().getStackTrace().map { it.className + "." + it.methodName } } interface A : Test interface B : Test interface C: B, A class Foo : C class Foo2 : A, B, C fun box(): String { var result = Foo().call() if (result[1] != "Test\$DefaultImpls.call") return "fail 1: ${result[1]}" if (result[2] != "B\$DefaultImpls.call") return "fail 2: ${result[2]}" if (result[3] != "C\$DefaultImpls.call") return "fail 3: ${result[3]}" if (result[4] != "Foo.call") return "fail 4: ${result[4]}" if (result[5] != "DefaultImplCallKt.box") return "fail 6: ${result[5]}" result = Foo2().call() if (result[1] != "Test\$DefaultImpls.call") return "fail 7: ${result[1]}" if (result[2] != "A\$DefaultImpls.call") return "fail 8: ${result[2]}" if (result[3] != "Foo2.call") return "fail 9: ${result[3]}" if (result[4] != "DefaultImplCallKt.box") return "fail 10: ${result[4]}" return "OK" }