| // IGNORE_KLIB_RUNTIME_ERRORS_WITH_CUSTOM_FIRST_STAGE: ANY:1.9 | |
| // ISSUE: KT-63709 | |
| operator fun String.invoke(unused: String): String = "String.invoke(String)" | |
| operator fun String.invoke(unused: Any): String = "String.invoke(Any)" | |
| operator fun Any.invoke(unused: String): String = "Any.invoke(String)" | |
| fun box(): String { | |
| var result = "" | |
| implicitArgumentCast().let { if (it != "OK") result += "FAIL: implicitArgumentCast(): $it\n" } | |
| explicitArgumentCast().let { if (it != "OK") result += "FAIL: explicitArgumentCast(): $it\n" } | |
| implicitReceiverCast().let { if (it != "OK") result += "FAIL: implicitReceiverCast(): $it\n" } | |
| explicitReceiverCast().let { if (it != "OK") result += "FAIL: explicitReceiverCast(): $it\n" } | |
| implicitInvokeExplicitRecieverArgumentCast().let { if (it != "OK") result += "FAIL: implicitInvokeExplicitRecieverArgumentCast(): $it\n" } | |
| explicitInvokeImplicitRecieverArgumentCast().let { if (it != "OK") result += "FAIL: explicitInvokeImplicitRecieverArgumentCast(): $it\n" } | |
| explicitInvokeExplicitRecieverArgumentCast().let { if (it != "OK") result += "FAIL: explicitInvokeExplicitRecieverArgumentCast(): $it\n" } | |
| return if (result.length == 0) "OK" else result | |
| } | |
| fun implicitArgumentCast(): String { | |
| val a: Any = "" | |
| return when (val result = a(a as String)) { | |
| "Any.invoke(String)" -> "OK" | |
| else -> result | |
| } | |
| } | |
| fun explicitArgumentCast(): String { | |
| val a: Any = "" | |
| return when (val result = a.invoke(a as String)) { | |
| "Any.invoke(String)" -> "OK" | |
| else -> result | |
| } | |
| } | |
| fun implicitReceiverCast(): String { | |
| val a: Any = "" | |
| return when (val result = (a as String)(a)) { | |
| "String.invoke(String)" -> "OK" // Unique to K2 | |
| else -> result | |
| } | |
| } | |
| fun explicitReceiverCast(): String { | |
| val a: Any = "" | |
| return when (val result = (a as String).invoke(a)) { | |
| "String.invoke(String)" -> "OK" | |
| else -> result | |
| } | |
| } | |
| fun implicitInvokeExplicitRecieverArgumentCast(): String { | |
| val a: Any = "" | |
| with (a) { | |
| return when (val result = this(this as String)) { | |
| "Any.invoke(String)" -> "OK" | |
| else -> result | |
| } | |
| } | |
| } | |
| fun explicitInvokeImplicitRecieverArgumentCast(): String { | |
| val a: Any = "" | |
| with (a) { | |
| return when (val result = invoke(this as String)) { | |
| "Any.invoke(String)" -> "OK" | |
| else -> result | |
| } | |
| } | |
| } | |
| fun explicitInvokeExplicitRecieverArgumentCast(): String { | |
| val a: Any = "" | |
| with (a) { | |
| return when (val result = this.invoke(this as String)) { | |
| "Any.invoke(String)" -> "OK" | |
| else -> result | |
| } | |
| } | |
| } |