// TARGET_BACKEND: JVM_IR // IGNORE_BACKEND_K1: JVM_IR var cnt = 0 class A var A?.b: A? get() { return this } set(v) { cnt++ } var A?.c: A? get() { return this } set(v) { cnt++ } operator fun A?.get(i: Int): A? = this operator fun A?.set(i: Int, v: A?): A? { cnt++ return this } operator fun A?.inc(): A? { return this } fun test(a: A?) { ++a?.b ++a?.b?.c ++a?.b.c // ".c" will be called anyway ++a?.b[0] ++a?.b?.c[0] ++a?.b.c[0] // ".c" will be called anyway ++a?.b[0][0] ++a?.b?.c[0][0] ++a?.b.c[0][0] // ".c" will be called anyway } fun box(): String { test(null) if (cnt != 3) return "fail 1: $cnt" cnt = 0 test(A()) if (cnt != 9) return "fail 2: $cnt" return "OK" }