@@ -168,12 +168,7 @@ internal class PropertyReferenceLowering(val context: JvmBackendContext) : IrEle
168168 parameters = listOf (thisReceiver!! .copyTo(this )) + method.nonDispatchParameters.map { it.copyTo(this ) }
169169 }
170170
171- private class PropertyReferenceKind (
172- val implSymbol : IrClassSymbol ,
173- val wrapper : IrFunction
174- )
175-
176- private fun propertyReferenceKindFor (expression : IrRichPropertyReference ): PropertyReferenceKind {
171+ private fun propertyReferenceClassFor (expression : IrRichPropertyReference ): IrClassSymbol {
177172 val boundReceivers = expression.getBoundValues(REFLECTED_PROPERTY )
178173 val getterFunction = expression.originalGetter ? : expression.getterFunction
179174 val needReceiversCount = getterFunction.parameters.size + if (getterFunction.isJvmStaticInObject()) 1 else 0
@@ -183,13 +178,7 @@ internal class PropertyReferenceLowering(val context: JvmBackendContext) : IrEle
183178 val mutable = expression.setterFunction != null
184179 val i = needReceiversCount - boundReceivers.size
185180 check(i in 0 .. 2 ) { " Incorrect number of receivers ($i ) for property reference: ${expression.render()} " }
186- val symbols = context.symbols
187- return PropertyReferenceKind (
188- symbols.getPropertyReferenceClass(mutable, i, true ),
189- symbols.reflection.owner.functions.single {
190- it.name.asString() == (if (mutable) " mutableProperty$i " else " property$i " )
191- }
192- )
181+ return context.symbols.getPropertyReferenceClass(mutable, i, true )
193182 }
194183
195184 private data class PropertyInstance (val initializer : IrExpression , val index : Int )
@@ -328,16 +317,15 @@ internal class PropertyReferenceLowering(val context: JvmBackendContext) : IrEle
328317 val boundReceivers = expression.getBoundValues(REFLECTED_PROPERTY )
329318 require(boundReceivers.size <= 1 ) { " Property references can not capture more than one receiver: ${expression.dump()} " }
330319 val boundReceiver = boundReceivers.firstOrNull()
331- val referenceKind = propertyReferenceKindFor (expression)
320+ val referenceClass = propertyReferenceClassFor (expression)
332321 return context.createJvmIrBuilder(currentScope!! , expression).run {
333322 val arity = when {
334323 boundReceiver != null -> 5 // (receiver, jClass, name, desc, flags)
335324 else -> 4 // (jClass, name, desc, flags)
336325 }
337- val instance = irCall(referenceKind.implSymbol .constructors.single { it.owner.parameters.size == arity }).apply {
326+ irCall(referenceClass .constructors.single { it.owner.parameters.size == arity }).apply {
338327 fillReflectedPropertyArguments(this , expression, boundReceiver?.let (expression.boundValues::get))
339328 }
340- irCall(referenceKind.wrapper).apply { arguments[0 ] = instance }
341329 }
342330 }
343331
@@ -398,7 +386,7 @@ internal class PropertyReferenceLowering(val context: JvmBackendContext) : IrEle
398386 getterBoundValues : List <Int >,
399387 setterBoundValues : List <Int >,
400388 ): IrClass {
401- val superClass = propertyReferenceKindFor (expression).implSymbol .owner
389+ val superClass = propertyReferenceClassFor (expression).owner
402390 val referenceClass = context.irFactory.buildClass {
403391 setSourceRange(expression)
404392 name = SpecialNames .NO_NAME_PROVIDED
0 commit comments