package test import kotlin.InlineOption.* abstract class A { abstract fun getO() : R abstract fun getK() : R abstract fun getParam() : R } inline fun doWork(inlineOptions(ONLY_LOCAL_RETURN) jobO: ()-> R, inlineOptions(ONLY_LOCAL_RETURN) jobK: ()-> R, param: R) : A { val s = object : A() { override fun getO(): R { return jobO() } override fun getK(): R { return jobK() } override fun getParam(): R { return param } } return s; } inline fun doWorkInConstructor(inlineOptions(ONLY_LOCAL_RETURN) jobO: ()-> R, inlineOptions(ONLY_LOCAL_RETURN) jobK: ()-> R, param: R) : A { val s = object : A() { val p = param; val o1 = jobO() val k1 = jobK() override fun getO(): R { return o1 } override fun getK(): R { return k1 } override fun getParam(): R { return p } } return s; }