// !LANGUAGE: +NewInference // IGNORE_BACKEND_FIR: JVM_IR // TARGET_BACKEND: JVM // IGNORE_BACKEND: JVM_IR // FILE: example/Hello.java package example; @FunctionalInterface public interface Hello { void invoke(A a); } // FILE: example/SomeJavaClass.java package example; public class SomeJavaClass { public void someFunction(Hello hello) { ((Hello)hello).invoke("OK"); } public SomeJavaClass plus(Hello hello) { ((Hello)hello).invoke("OK"); return this; } public void get(Hello hello) { ((Hello)hello).invoke("OK"); } public void set(int i, Hello hello) { ((Hello)hello).invoke("OK"); } } // FILE: main.kt import example.SomeJavaClass fun box(): String { var a: SomeJavaClass = SomeJavaClass() var result = "fail" a.someFunction { result = it } if (result != "OK") return "fail 1: $result" result = "fail" a + { result = it } if (result != "OK") return "fail 2: $result" result = "fail" a[{ result = it }] if (result != "OK") return "fail 3: $result" result = "fail" a += { result = it } if (result != "OK") return "fail 4: $result" result = "fail" a[0] = { result = it } if (result != "OK") return "fail 5: $result" return "OK" }