// !LANGUAGE: +ContextReceivers // TARGET_BACKEND: JVM_IR class LoggingCounter { var operationCounter = 0 } class A { context(LoggingCounter) var p: Int get(): Int { operationCounter++ return 1 } set(value: Int) { operationCounter++ } } fun foo() = A() fun box(): String { val loggingCounter = LoggingCounter() with(loggingCounter) { foo().p += 1 foo().p = 1 foo()?.p = 1 foo().p } val operationsTotal = loggingCounter.operationCounter return if (operationsTotal == 5) "OK" else "$operationsTotal" }