@@ -131,30 +131,30 @@ sealed class FastKFunction<T> {
131131 private fun <T > topLevelFunctionOf (
132132 function : KFunction <T >, instance : Any? , parameters : List <KParameter >, method : Method
133133 ): FastKFunction <T > {
134- return if (parameters[0 ].kind == KParameter .Kind .EXTENSION_RECEIVER ) {
135- // KParameter.Kind.EXTENSION_RECEIVERの要求が有れば確定で拡張関数
136- // 対象が拡張関数ならinstanceはreceiver、指定が無ければエラー
137- instance ? : throw IllegalArgumentException (
138- " Function requires EXTENSION_RECEIVER instance, but is not present."
139- )
140-
141- val generator = BucketGenerator (parameters, instance)
142- val valueParameters = parameters.subList(1 , parameters.size)
143-
144- TopLevelExtensionFunction (function, method, instance, generator, valueParameters)
145- } else if (method.parameters.size != parameters.size) {
134+ return when {
135+ parameters[0 ].kind == KParameter .Kind .EXTENSION_RECEIVER -> {
136+ // KParameter.Kind.EXTENSION_RECEIVERの要求が有れば確定で拡張関数
137+ // 対象が拡張関数ならinstanceはreceiver、指定が無ければエラー
138+ instance ? : throw IllegalArgumentException (
139+ " Function requires EXTENSION_RECEIVER instance, but is not present."
140+ )
141+
142+ val generator = BucketGenerator (parameters, instance)
143+ val valueParameters = parameters.subList(1 , parameters.size)
144+
145+ TopLevelExtensionFunction (function, method, instance, generator, valueParameters)
146+ }
146147 // javaMethodのパラメータサイズとKFunctionのパラメータサイズが違う場合も拡張関数
147148 // インスタンスが設定されていれば高速呼び出し、そうじゃなければ通常の関数呼び出し
148- instance
149+ method.parameters.size != parameters.size -> instance
149150 ?.let {
150151 val generator = BucketGenerator (parameters, instance)
151152 val valueParameters = parameters.subList(1 , parameters.size)
152153
153154 TopLevelExtensionFunction (function, method, instance, generator, valueParameters)
154155 } ? : Function (function, parameters)
155- } else {
156156 // トップレベル関数
157- TopLevelFunction (function, method, parameters)
157+ else -> TopLevelFunction (function, method, parameters)
158158 }
159159 }
160160
0 commit comments