// 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" }