[IR] Support MFVC properties without backing fields
Signed-off-by: Evgeniy.Zhelenskiy <Evgeniy.Zhelenskiy@jetbrains.com> #KT-1179
This commit is contained in:
committed by
Space Team
parent
5e01669e23
commit
53b98503ed
+1
-7
@@ -912,13 +912,7 @@ internal class JvmMultiFieldValueClassLowering(
|
||||
override fun visitCall(expression: IrCall): IrExpression {
|
||||
val callee = expression.symbol.owner
|
||||
val property = callee.property
|
||||
if (
|
||||
property != null &&
|
||||
callee.extensionReceiverParameter == null &&
|
||||
callee.contextReceiverParametersCount == 0 &&
|
||||
callee.isGetter &&
|
||||
(expression.type.needsMfvcFlattening() || expression.dispatchReceiver?.type?.needsMfvcFlattening() == true)
|
||||
) {
|
||||
if (property != null && callee.isGetter && replacements.getMfvcPropertyNode(property) != null) {
|
||||
require(callee.valueParameters.isEmpty()) { "Unexpected getter:\n${callee.dump()}" }
|
||||
expression.dispatchReceiver = expression.dispatchReceiver?.transform(this, null)
|
||||
return context.createJvmIrBuilder(getCurrentScopeSymbol(), expression).irBlock {
|
||||
|
||||
+5
-4
@@ -335,8 +335,9 @@ class MemoizedMultiFieldValueClassReplacements(
|
||||
}
|
||||
}
|
||||
|
||||
private fun useRootNode(
|
||||
parent: IrClass,
|
||||
property: IrProperty
|
||||
) = parent.isMultiFieldValueClass && (property.getter?.isStatic ?: property.backingField?.isStatic) == false
|
||||
private fun useRootNode(parent: IrClass, property: IrProperty): Boolean {
|
||||
val getter = property.getter
|
||||
if (getter != null && (getter.contextReceiverParametersCount > 0 || getter.extensionReceiverParameter != null)) return false
|
||||
return parent.isMultiFieldValueClass && (getter?.isStatic ?: property.backingField?.isStatic) == false
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user