diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrDeclarationStorage.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrDeclarationStorage.kt index 24c3dc558da..b8a0b290665 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrDeclarationStorage.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrDeclarationStorage.kt @@ -651,7 +651,6 @@ class Fir2IrDeclarationStorage( name: Name, isFinal: Boolean, firInitializerExpression: FirExpression?, - thisReceiverOwner: IrClass?, type: IrType? = null ): IrField { val inferredType = type ?: firInitializerExpression!!.typeRef.toIrType() @@ -664,12 +663,8 @@ class Fir2IrDeclarationStorage( visibility, isFinal = isFinal, isExternal = property.isExternal, isStatic = property.isStatic || parent !is IrClass, - isFakeOverride = origin == IrDeclarationOrigin.FAKE_OVERRIDE ).also { it.correspondingPropertySymbol = this@createBackingField.symbol - if (!isFakeOverride && thisReceiverOwner != null) { - it.populateOverriddenSymbols(thisReceiverOwner) - } }.apply { metadata = FirMetadataSource.Property(property) convertAnnotationsFromLibrary(property) @@ -738,7 +733,7 @@ class Fir2IrDeclarationStorage( backingField = createBackingField( property, IrDeclarationOrigin.PROPERTY_BACKING_FIELD, descriptor, property.fieldVisibility, property.name, property.isVal, initializer, - thisReceiverOwner, type + type ).also { field -> if (initializer is FirConstExpression<*>) { // TODO: Normally we shouldn't have error type here @@ -749,8 +744,7 @@ class Fir2IrDeclarationStorage( } else if (delegate != null) { backingField = createBackingField( property, IrDeclarationOrigin.PROPERTY_DELEGATE, descriptor, - property.fieldVisibility, Name.identifier("${property.name}\$delegate"), true, delegate, - thisReceiverOwner + property.fieldVisibility, Name.identifier("${property.name}\$delegate"), true, delegate ) } if (irParent != null) { @@ -803,8 +797,7 @@ class Fir2IrDeclarationStorage( field.name, type, field.visibility, isFinal = field.modality == Modality.FINAL, isExternal = false, - isStatic = field.isStatic, - isFakeOverride = false + isStatic = field.isStatic ).apply { metadata = FirMetadataSource.Variable(field) descriptor.bind(this) @@ -1028,13 +1021,6 @@ class Fir2IrDeclarationStorage( } } - private fun IrField.populateOverriddenSymbols(thisReceiverOwner: IrClass) { - thisReceiverOwner.findMatchingOverriddenSymbolsFromSupertypes(components.irBuiltIns, this) - .filterIsInstance().singleOrNull()?.let { - overriddenSymbols = listOf(it) - } - } - private fun IrMutableAnnotationContainer.convertAnnotationsFromLibrary(firAnnotationContainer: FirAnnotationContainer) { if ((firAnnotationContainer as? FirDeclaration)?.isFromLibrary == true) { annotationGenerator?.generate(this, firAnnotationContainer) diff --git a/compiler/fir/fir2ir/tests/org/jetbrains/kotlin/fir/Fir2IrTextTestGenerated.java b/compiler/fir/fir2ir/tests/org/jetbrains/kotlin/fir/Fir2IrTextTestGenerated.java index af47c3f93a7..f3ee0eeaa58 100644 --- a/compiler/fir/fir2ir/tests/org/jetbrains/kotlin/fir/Fir2IrTextTestGenerated.java +++ b/compiler/fir/fir2ir/tests/org/jetbrains/kotlin/fir/Fir2IrTextTestGenerated.java @@ -1012,6 +1012,11 @@ public class Fir2IrTextTestGenerated extends AbstractFir2IrTextTest { runTest("compiler/testData/ir/irText/expressions/javaSyntheticPropertyAccess.kt"); } + @TestMetadata("jvmFieldReferenceWithIntersectionTypes.kt") + public void testJvmFieldReferenceWithIntersectionTypes() throws Exception { + runTest("compiler/testData/ir/irText/expressions/jvmFieldReferenceWithIntersectionTypes.kt"); + } + @TestMetadata("jvmInstanceFieldReference.kt") public void testJvmInstanceFieldReference() throws Exception { runTest("compiler/testData/ir/irText/expressions/jvmInstanceFieldReference.kt"); diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/AbstractSuspendFunctionsLowering.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/AbstractSuspendFunctionsLowering.kt index 765b8b675b9..00eb5887cd5 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/AbstractSuspendFunctionsLowering.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/AbstractSuspendFunctionsLowering.kt @@ -681,8 +681,7 @@ abstract class AbstractSuspendFunctionsLowering(val co Visibilities.PRIVATE, isFinal = !isMutable, isExternal = false, - isStatic = false, - isFakeOverride = false + isStatic = false ).also { descriptor.bind(it) it.parent = this diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/LocalDeclarationsLowering.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/LocalDeclarationsLowering.kt index 87cf1d605a0..6d9aafde882 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/LocalDeclarationsLowering.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/LocalDeclarationsLowering.kt @@ -775,8 +775,7 @@ class LocalDeclarationsLowering( visibility, isFinal = true, isExternal = false, - isStatic = false, - isFakeOverride = false + isStatic = false ).also { descriptor.bind(it) it.parent = parent diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/ir/builders/declarations/declarationBuilders.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/ir/builders/declarations/declarationBuilders.kt index da611a1c9fe..de66e91e095 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/ir/builders/declarations/declarationBuilders.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/ir/builders/declarations/declarationBuilders.kt @@ -44,7 +44,7 @@ fun IrFieldBuilder.buildField(): IrField { return IrFieldImpl( startOffset, endOffset, origin, IrFieldSymbolImpl(wrappedDescriptor), - name, type, visibility, isFinal, isExternal, isStatic, isFakeOverride + name, type, visibility, isFinal, isExternal, isStatic, ).also { it.metadata = metadata wrappedDescriptor.bind(it) diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/JsDeclarationFactory.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/JsDeclarationFactory.kt index f0c9bdd1d76..1864e4173ec 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/JsDeclarationFactory.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/JsDeclarationFactory.kt @@ -67,8 +67,7 @@ class JsDeclarationFactory(mapping: JsMapping) : DeclarationFactory { visibility, isFinal = true, isExternal = false, - isStatic = false, - isFakeOverride = false + isStatic = false ).also { descriptor.bind(it) it.parent = parent diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/JsSharedVariablesManager.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/JsSharedVariablesManager.kt index 574b7ba5b76..4f745c0f6d1 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/JsSharedVariablesManager.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/JsSharedVariablesManager.kt @@ -160,8 +160,7 @@ class JsSharedVariablesManager(val builtIns: IrBuiltIns, val implicitDeclaration Visibilities.PUBLIC, isFinal = false, isExternal = false, - isStatic = false, - isFakeOverride = false + isStatic = false ).also { descriptor.bind(it) it.parent = closureBoxClassDeclaration diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/EnumClassLowering.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/EnumClassLowering.kt index 0dbeb919d5e..3df26bda655 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/EnumClassLowering.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/EnumClassLowering.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.ir.backend.js.lower import org.jetbrains.kotlin.backend.common.BodyLoweringPass -import org.jetbrains.kotlin.backend.common.CommonBackendContext import org.jetbrains.kotlin.backend.common.DeclarationTransformer import org.jetbrains.kotlin.backend.common.getOrPut import org.jetbrains.kotlin.backend.common.ir.copyParameterDeclarationsFrom @@ -70,8 +69,7 @@ class EnumUsageLowering(val context: JsIrBackendContext) : BodyLoweringPass { return entry.run { IrFieldImpl( startOffset, endOffset, origin, symbol, name, irClass.defaultType, Visibilities.PUBLIC, - isFinal = false, isExternal = true, isStatic = true, - isFakeOverride = entry.isFakeOverride + isFinal = false, isExternal = true, isStatic = true ).also { descriptor.bind(it) it.parent = irClass diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/coroutines/AbstractSuspendFunctionsLowering.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/coroutines/AbstractSuspendFunctionsLowering.kt index 94b576aeb50..3da5c755323 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/coroutines/AbstractSuspendFunctionsLowering.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/coroutines/AbstractSuspendFunctionsLowering.kt @@ -557,8 +557,7 @@ abstract class AbstractSuspendFunctionsLowering(val co Visibilities.PRIVATE, isFinal = !isMutable, isExternal = false, - isStatic = false, - isFakeOverride = false + isStatic = false ).also { descriptor.bind(it) it.parent = this diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/ClassCodegen.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/ClassCodegen.kt index cd35b10e7a9..babb642a9a1 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/ClassCodegen.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/ClassCodegen.kt @@ -229,8 +229,6 @@ abstract class ClassCodegen protected constructor( protected abstract fun bindFieldMetadata(field: IrField, fieldType: Type, fieldName: String) private fun generateField(field: IrField) { - if (field.isFakeOverride) return - val fieldType = typeMapper.mapType(field) val fieldSignature = if (field.origin == IrDeclarationOrigin.PROPERTY_DELEGATE) null diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/ExpressionCodegen.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/ExpressionCodegen.kt index ab41066b55d..cc5786fcbf7 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/ExpressionCodegen.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/ExpressionCodegen.kt @@ -535,9 +535,8 @@ class ExpressionCodegen( assert(callee.constantValue() == null) { "access of const val: ${expression.dump()}" } } - val realField = callee - val fieldType = typeMapper.mapType(realField.type) - val fieldName = realField.name.asString() + val fieldType = typeMapper.mapType(callee.type) + val fieldName = callee.name.asString() val isStatic = expression.receiver == null expression.markLineNumber(startOffset = true) diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/FunctionReferenceLowering.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/FunctionReferenceLowering.kt index dc1c34c0c97..0ad0c3dfcb0 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/FunctionReferenceLowering.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/FunctionReferenceLowering.kt @@ -191,17 +191,7 @@ internal class FunctionReferenceLowering(private val context: JvmBackendContext) } } - private val receiverFieldFromSuper = context.ir.symbols.functionReferenceReceiverField.owner - - val fakeOverrideReceiverField = functionReferenceClass.addField { - name = receiverFieldFromSuper.name - isFakeOverride = true - origin = IrDeclarationOrigin.FAKE_OVERRIDE - type = receiverFieldFromSuper.type - isFinal = receiverFieldFromSuper.isFinal - isStatic = receiverFieldFromSuper.isStatic - visibility = receiverFieldFromSuper.visibility - } + private val receiverField = context.ir.symbols.functionReferenceReceiverField.owner fun build(): IrExpression = context.createJvmIrBuilder(currentScope!!.scope.scopeOwnerSymbol).run { irBlock(irFunctionReference.startOffset, irFunctionReference.endOffset) { @@ -418,7 +408,9 @@ internal class FunctionReferenceLowering(private val context: JvmBackendContext) // will put it into a field. if (samSuperType == null) irImplicitCast( - irGetField(irGet(dispatchReceiverParameter!!), fakeOverrideReceiverField), + irGetField(irGet(dispatchReceiverParameter!!), + this@FunctionReferenceBuilder.receiverField + ), boundReceiver.second.type ) else diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/PropertyReferenceLowering.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/PropertyReferenceLowering.kt index dd60afc9f39..15f9e1a34a0 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/PropertyReferenceLowering.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/PropertyReferenceLowering.kt @@ -299,17 +299,7 @@ internal class PropertyReferenceLowering(val context: JvmBackendContext) : Class referenceClass.addOverride(getSignature) { computeSignatureString(expression) } } - val receiverField = referenceClass.addField { - val backingFieldFromSuper = superClass.properties.single { it.name.asString() == "receiver" }.backingField!! - name = backingFieldFromSuper.name - isFakeOverride = true - origin = IrDeclarationOrigin.FAKE_OVERRIDE - type = backingFieldFromSuper.type - isFinal = backingFieldFromSuper.isFinal - isStatic = backingFieldFromSuper.isStatic - visibility = backingFieldFromSuper.visibility - } - + val backingField = superClass.properties.single { it.name.asString() == "receiver" }.backingField!! val get = superClass.functions.find { it.name.asString() == "get" } val set = superClass.functions.find { it.name.asString() == "set" } val invoke = superClass.functions.find { it.name.asString() == "invoke" } @@ -321,13 +311,13 @@ internal class PropertyReferenceLowering(val context: JvmBackendContext) : Class call.copyTypeArgumentsFrom(expression) call.dispatchReceiver = call.symbol.owner.dispatchReceiverParameter?.let { if (expression.dispatchReceiver != null) - irImplicitCast(irGetField(irGet(arguments[0]), receiverField), it.type) + irImplicitCast(irGetField(irGet(arguments[0]), backingField), it.type) else irImplicitCast(irGet(arguments[index++]), it.type) } call.extensionReceiver = call.symbol.owner.extensionReceiverParameter?.let { if (expression.extensionReceiver != null) - irImplicitCast(irGetField(irGet(arguments[0]), receiverField), it.type) + irImplicitCast(irGetField(irGet(arguments[0]), backingField), it.type) else irImplicitCast(irGet(arguments[index++]), it.type) } @@ -354,7 +344,7 @@ internal class PropertyReferenceLowering(val context: JvmBackendContext) : Class field.isStatic -> null expression.dispatchReceiver != null -> - irImplicitCast(irGetField(irGet(arguments[0]), receiverField), field.parentAsClass.defaultType) + irImplicitCast(irGetField(irGet(arguments[0]), backingField), field.parentAsClass.defaultType) else -> irImplicitCast(irGet(arguments[1]), field.parentAsClass.defaultType) } diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/RenameFieldsLowering.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/RenameFieldsLowering.kt index 5f0871d4bef..600da3e1c7e 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/RenameFieldsLowering.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/RenameFieldsLowering.kt @@ -96,9 +96,7 @@ private class FieldNameCollector : IrElementVisitorVoid { } override fun visitField(declaration: IrField) { - if (!declaration.isFakeOverride) { - nameToField.getOrPut(declaration.parent to declaration.name) { mutableListOf() }.add(declaration) - } + nameToField.getOrPut(declaration.parent to declaration.name) { mutableListOf() }.add(declaration) } } @@ -113,7 +111,6 @@ private class FieldRenamer(private val newNames: Map) : IrElement return IrFieldImpl( declaration.startOffset, declaration.endOffset, declaration.origin, symbol, newName, declaration.type, declaration.visibility, declaration.isFinal, declaration.isExternal, declaration.isStatic, - isFakeOverride = declaration.isFakeOverride ).also { descriptor.bind(it) it.parent = declaration.parent diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/SyntheticAccessorLowering.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/SyntheticAccessorLowering.kt index 94d86eb722e..58117655d19 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/SyntheticAccessorLowering.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/SyntheticAccessorLowering.kt @@ -160,10 +160,9 @@ internal class SyntheticAccessorLowering(val context: JvmBackendContext) : IrEle val symbol = expression.symbol val parent = symbol.owner.accessorParent(dispatchReceiverType?.classOrNull?.owner ?: symbol.owner.parent) as IrClass - val symbolToAccess = symbol.owner.findDescendantIn(parent)?.symbol ?: symbol modifyGetterExpression( expression, - getterMap.getOrPut(Pair(symbolToAccess, parent)) { makeGetterAccessorSymbol(symbolToAccess, parent) } + getterMap.getOrPut(Pair(symbol, parent)) { makeGetterAccessorSymbol(symbol, parent) } ) } else { expression @@ -178,10 +177,9 @@ internal class SyntheticAccessorLowering(val context: JvmBackendContext) : IrEle val symbol = expression.symbol val parent = symbol.owner.accessorParent(dispatchReceiverType?.classOrNull?.owner ?: symbol.owner.parent) as IrClass - val symbolToAccess = symbol.owner.findDescendantIn(parent)?.symbol ?: symbol modifySetterExpression( expression, - setterMap.getOrPut(Pair(symbolToAccess, parent)) { makeSetterAccessorSymbol(symbolToAccess, parent) } + setterMap.getOrPut(Pair(symbol, parent)) { makeSetterAccessorSymbol(symbol, parent) } ) } else { expression @@ -189,11 +187,6 @@ internal class SyntheticAccessorLowering(val context: JvmBackendContext) : IrEle ) } - private fun IrField.findDescendantIn(derivedClass: IrClass): IrField? = - derivedClass.fields.singleOrNull { candidate -> - candidate.name == this.name && candidate.overrides(this) - } - override fun visitConstructor(declaration: IrConstructor): IrStatement { if (declaration.isOrShouldBeHidden) { pendingAccessorsToAdd.add(handleHiddenConstructor(declaration)) diff --git a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/PropertyGenerator.kt b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/PropertyGenerator.kt index 07e6096c872..ae2756d16b3 100644 --- a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/PropertyGenerator.kt +++ b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/PropertyGenerator.kt @@ -24,7 +24,6 @@ import org.jetbrains.kotlin.ir.expressions.IrExpressionBody import org.jetbrains.kotlin.ir.expressions.IrStatementOrigin import org.jetbrains.kotlin.ir.expressions.impl.IrExpressionBodyImpl import org.jetbrains.kotlin.ir.expressions.impl.IrGetValueImpl -import org.jetbrains.kotlin.ir.util.declareFieldWithOverrides import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.psiUtil.endOffset import org.jetbrains.kotlin.psi.psiUtil.startOffsetSkippingComments diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/builders/declarations/IrFieldBuilder.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/builders/declarations/IrFieldBuilder.kt index 85daf655cf9..4a8d56504bf 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/builders/declarations/IrFieldBuilder.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/builders/declarations/IrFieldBuilder.kt @@ -16,7 +16,6 @@ class IrFieldBuilder : IrDeclarationBuilder() { var isFinal: Boolean = false var isExternal: Boolean = false var isStatic: Boolean = false - var isFakeOverride: Boolean = false var metadata: MetadataSource? = null fun updateFrom(from: IrField) { @@ -26,7 +25,6 @@ class IrFieldBuilder : IrDeclarationBuilder() { isFinal = from.isFinal isExternal = from.isExternal isStatic = from.isStatic - isFakeOverride = from.isFakeOverride metadata = from.metadata } } diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrField.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrField.kt index df3294a4102..fdd193003ed 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrField.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrField.kt @@ -13,7 +13,7 @@ import org.jetbrains.kotlin.ir.symbols.IrPropertySymbol import org.jetbrains.kotlin.ir.types.IrType interface IrField : - IrSymbolDeclaration, IrOverridableDeclaration, + IrSymbolDeclaration, IrDeclarationWithName, IrDeclarationWithVisibility, IrDeclarationParent { @ObsoleteDescriptorBasedAPI @@ -23,7 +23,6 @@ interface IrField : val isFinal: Boolean val isExternal: Boolean val isStatic: Boolean - val isFakeOverride: Boolean var initializer: IrExpressionBody? diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrFieldImpl.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrFieldImpl.kt index c40337d0830..7e1e4e13e70 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrFieldImpl.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrFieldImpl.kt @@ -42,8 +42,7 @@ class IrFieldImpl( override val visibility: Visibility, override val isFinal: Boolean, override val isExternal: Boolean, - override val isStatic: Boolean, - override val isFakeOverride: Boolean = origin == IrDeclarationOrigin.FAKE_OVERRIDE + override val isStatic: Boolean ) : IrDeclarationBase(startOffset, endOffset, origin), IrField, FieldCarrier { @@ -96,16 +95,6 @@ class IrFieldImpl( } } - override var overridenSymbolsField: List = emptyList() - - override var overriddenSymbols: List - get() = getCarrier().overridenSymbolsField - set(v) { - if (overriddenSymbols !== v) { - setCarrier().overridenSymbolsField = v - } - } - override var metadataField: MetadataSource? = null override var metadata: MetadataSource? diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/carriers/FieldCarrier.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/carriers/FieldCarrier.kt index 559ba74dffb..11cecb953da 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/carriers/FieldCarrier.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/carriers/FieldCarrier.kt @@ -10,14 +10,12 @@ import org.jetbrains.kotlin.ir.declarations.IrDeclarationParent import org.jetbrains.kotlin.ir.declarations.MetadataSource import org.jetbrains.kotlin.ir.expressions.IrConstructorCall import org.jetbrains.kotlin.ir.expressions.IrExpressionBody -import org.jetbrains.kotlin.ir.symbols.IrFieldSymbol import org.jetbrains.kotlin.ir.symbols.IrPropertySymbol interface FieldCarrier : DeclarationCarrier { var initializerField: IrExpressionBody? var correspondingPropertySymbolField: IrPropertySymbol? var metadataField: MetadataSource? - var overridenSymbolsField: List override fun clone(): FieldCarrier { return FieldCarrierImpl( @@ -27,8 +25,7 @@ interface FieldCarrier : DeclarationCarrier { annotationsField, initializerField, correspondingPropertySymbolField, - metadataField, - overridenSymbolsField + metadataField ) } } @@ -40,6 +37,5 @@ class FieldCarrierImpl( override var annotationsField: List, override var initializerField: IrExpressionBody?, override var correspondingPropertySymbolField: IrPropertySymbol?, - override var metadataField: MetadataSource?, - override var overridenSymbolsField: List + override var metadataField: MetadataSource? ): FieldCarrier \ No newline at end of file diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/lazy/IrLazyField.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/lazy/IrLazyField.kt index 1a32a226dae..72a76bd9ec0 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/lazy/IrLazyField.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/lazy/IrLazyField.kt @@ -35,7 +35,6 @@ class IrLazyField( override val isFinal: Boolean, override val isExternal: Boolean, override val isStatic: Boolean, - override val isFakeOverride: Boolean, stubGenerator: DeclarationStubGenerator, typeTranslator: TypeTranslator ) : IrLazyDeclarationBase(startOffset, endOffset, origin, stubGenerator, typeTranslator), @@ -51,12 +50,6 @@ class IrLazyField( ?: mutableListOf() } - override var overriddenSymbols: List by lazyVar { - symbol.descriptor.overriddenDescriptors.map { - stubGenerator.generateFieldStub(it.original).symbol - }.toMutableList() - } - override var type: IrType by lazyVar { descriptor.type.toIrType() } diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/descriptors/WrappedDescriptors.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/descriptors/WrappedDescriptors.kt index fcd44056699..02c8aa4e042 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/descriptors/WrappedDescriptors.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/descriptors/WrappedDescriptors.kt @@ -991,8 +991,7 @@ open class WrappedFieldDescriptor( override fun hasSynthesizedParameterNames() = false - override fun getOverriddenDescriptors(): MutableCollection = - owner.overriddenSymbols.map { it.descriptor }.toMutableList() + override fun getOverriddenDescriptors(): MutableCollection = mutableListOf() override fun copy( newOwner: DeclarationDescriptor?, diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/AdditionalIrUtils.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/AdditionalIrUtils.kt index 96e35605dc3..ce37b41ef65 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/AdditionalIrUtils.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/AdditionalIrUtils.kt @@ -78,18 +78,6 @@ fun IrSimpleFunction.overrides(other: IrSimpleFunction): Boolean { return false } -fun IrField.overrides(other: IrField): Boolean { - if (this == other) return true - - this.overriddenSymbols.forEach { - if (it.owner.overrides(other)) { - return true - } - } - - return false -} - private val IrConstructorCall.annotationClass get() = this.symbol.owner.constructedClass diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/DeclarationStubGenerator.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/DeclarationStubGenerator.kt index 9d496f43010..6b76e0af352 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/DeclarationStubGenerator.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/DeclarationStubGenerator.kt @@ -173,20 +173,14 @@ class DeclarationStubGenerator( return referenced.owner } - val origin = - if (descriptor.kind == CallableMemberDescriptor.Kind.FAKE_OVERRIDE) - IrDeclarationOrigin.FAKE_OVERRIDE - else computeOrigin(descriptor) - - return symbolTable.declareField(UNDEFINED_OFFSET, UNDEFINED_OFFSET, origin, descriptor.original, descriptor.type.toIrType()) { + return symbolTable.declareField(UNDEFINED_OFFSET, UNDEFINED_OFFSET, computeOrigin(descriptor), descriptor.original, descriptor.type.toIrType()) { IrLazyField( - UNDEFINED_OFFSET, UNDEFINED_OFFSET, origin, + UNDEFINED_OFFSET, UNDEFINED_OFFSET, computeOrigin(descriptor), it, descriptor, descriptor.name, descriptor.visibility, isFinal = !descriptor.isVar, isExternal = descriptor.isEffectivelyExternal(), isStatic = (descriptor.dispatchReceiverParameter == null), - isFakeOverride = (origin == IrDeclarationOrigin.FAKE_OVERRIDE), stubGenerator = this, typeTranslator = typeTranslator ) } diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/DeepCopyIrTreeWithSymbols.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/DeepCopyIrTreeWithSymbols.kt index 6a0bae569d3..38127a9a627 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/DeepCopyIrTreeWithSymbols.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/DeepCopyIrTreeWithSymbols.kt @@ -245,12 +245,8 @@ open class DeepCopyIrTreeWithSymbols( isFinal = declaration.isFinal, isExternal = declaration.isExternal, isStatic = declaration.isStatic, - isFakeOverride = declaration.isFakeOverride ).apply { transformAnnotations(declaration) - overriddenSymbols = declaration.overriddenSymbols.map { - symbolRemapper.getReferencedField(it) - } initializer = declaration.initializer?.transform() } diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/DumpIrTree.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/DumpIrTree.kt index 3e16916b2db..8b44f1edc61 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/DumpIrTree.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/DumpIrTree.kt @@ -145,9 +145,6 @@ class DumpIrTreeVisitor( override fun visitField(declaration: IrField, data: String) { declaration.dumpLabeledElementWith(data) { dumpAnnotations(declaration) - declaration.overriddenSymbols.dumpItems("overridden") { - it.dump() - } declaration.initializer?.accept(this, "") } } diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/IrFakeOverrideUtils.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/IrFakeOverrideUtils.kt index 6b33a4b6882..14d6b005f6f 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/IrFakeOverrideUtils.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/IrFakeOverrideUtils.kt @@ -15,7 +15,6 @@ val IrDeclaration.isFakeOverride: Boolean get() = when (this) { is IrSimpleFunction -> isFakeOverride is IrProperty -> isFakeOverride - is IrField -> isFakeOverride else -> false } @@ -31,15 +30,6 @@ val IrFunction.target: IrFunction get() = when (this) { else -> error(this) } -fun IrField.resolveFakeOverride(): IrField? { - var toVisit = setOf(this) - val nonOverridden = mutableSetOf() - while (toVisit.isNotEmpty()) { - nonOverridden += toVisit.filter { it.overriddenSymbols.isEmpty() } - toVisit = toVisit.flatMap { it.overriddenSymbols }.map { it.owner }.toSet() - } - return nonOverridden.singleOrNull() -} fun IrSimpleFunction.collectRealOverrides(toSkip: (IrSimpleFunction) -> Boolean = { false }): Set { if (isReal && !toSkip(this)) return setOf(this) diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/RenderIrElement.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/RenderIrElement.kt index 91e044d02ba..d39fb724952 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/RenderIrElement.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/RenderIrElement.kt @@ -445,7 +445,6 @@ class RenderIrElementVisitor(private val normalizeNames: Boolean = false) : IrEl "final".takeIf { isFinal }, "external".takeIf { isExternal }, "static".takeIf { isStatic }, - "fake_override".takeIf { isFakeOverride } ) override fun visitClass(declaration: IrClass, data: Nothing?): String = diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/overrides.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/overrides.kt index 9707b5c4234..d8ed9c45005 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/overrides.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/overrides.kt @@ -45,29 +45,3 @@ fun generateOverriddenFunctionSymbols( symbolTable.referenceSimpleFunction(it.original) } } - -@ObsoleteDescriptorBasedAPI -fun SymbolTable.declareFieldWithOverrides( - startOffset: Int, - endOffset: Int, - origin: IrDeclarationOrigin, - descriptor: PropertyDescriptor, - type: IrType, - hasBackingField: (PropertyDescriptor) -> Boolean -) = - declareField(startOffset, endOffset, origin, descriptor, type).also { declaration -> - generateOverriddenFieldSymbols(declaration, this, hasBackingField) - } - -@ObsoleteDescriptorBasedAPI -fun generateOverriddenFieldSymbols( - declaration: IrField, - symbolTable: SymbolTable, - hasBackingField: (PropertyDescriptor) -> Boolean -) { - declaration.overriddenSymbols = declaration.descriptor.overriddenDescriptors.mapNotNull { - if (hasBackingField(it)) { - symbolTable.referenceField(it.original) - } else null - } -} \ No newline at end of file diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrFileDeserializer.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrFileDeserializer.kt index 9e00b016a6e..cadda51a82e 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrFileDeserializer.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrFileDeserializer.kt @@ -1234,7 +1234,6 @@ abstract class IrFileDeserializer(val logger: LoggingContext, val builtIns: IrBu flags.isFinal, flags.isExternal, flags.isStatic, - flags.isFakeOverride ) }.usingParent { if (proto.hasInitializer()) diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrFlags.java b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrFlags.java index e503811c246..b2495f7c836 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrFlags.java +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrFlags.java @@ -69,15 +69,13 @@ public class IrFlags extends Flags { ProtoBuf.Visibility visibility, boolean isFinal, boolean isExternal, - boolean isStatic, - boolean isFakeOverride + boolean isStatic ) { return HAS_ANNOTATIONS.toFlags(hasAnnotations) | VISIBILITY.toFlags(visibility) | IS_FINAL.toFlags(isFinal) | IS_EXTERNAL_FIELD.toFlags(isExternal) | IS_STATIC.toFlags(isStatic) - | IS_FAKE_OVERRIDE.toFlags(isFakeOverride) ; } diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/encodings/BinaryFlags.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/encodings/BinaryFlags.kt index ddc6a3f87f7..03d7709a16f 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/encodings/BinaryFlags.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/encodings/BinaryFlags.kt @@ -191,13 +191,12 @@ inline class FieldFlags(val flags: Long) { val isFinal: Boolean get() = IrFlags.IS_FINAL.get(flags.toInt()) val isExternal: Boolean get() = IrFlags.IS_EXTERNAL_FIELD.get(flags.toInt()) val isStatic: Boolean get() = IrFlags.IS_STATIC.get(flags.toInt()) - val isFakeOverride: Boolean get() = IrFlags.IS_FAKE_OVERRIDE.get(flags.toInt()) companion object { fun encode(field: IrField): Long { return field.run { val visibility = ProtoEnumFlags.visibility(visibility) - IrFlags.getFieldFlags(annotations.isNotEmpty(), visibility, isFinal, isExternal, isStatic, isFakeOverride).toLong() + IrFlags.getFieldFlags(annotations.isNotEmpty(), visibility, isFinal, isExternal, isStatic).toLong() } } diff --git a/compiler/testData/codegen/box/javaInterop/protectedField.kt b/compiler/testData/codegen/box/javaInterop/protectedField.kt index 8b4ed955a5c..113b97ae212 100644 --- a/compiler/testData/codegen/box/javaInterop/protectedField.kt +++ b/compiler/testData/codegen/box/javaInterop/protectedField.kt @@ -1,5 +1,4 @@ // TARGET_BACKEND: JVM -// IGNORE_BACKEND_FIR: JVM_IR // FILE: ProtectedField.java public abstract class ProtectedField { diff --git a/compiler/testData/codegen/box/properties/protectedJavaFieldInInline.kt b/compiler/testData/codegen/box/properties/protectedJavaFieldInInline.kt index 1aa750923fe..e7dcf9a8348 100644 --- a/compiler/testData/codegen/box/properties/protectedJavaFieldInInline.kt +++ b/compiler/testData/codegen/box/properties/protectedJavaFieldInInline.kt @@ -1,5 +1,4 @@ // !LANGUAGE: -ProhibitProtectedCallFromInline -// IGNORE_BACKEND_FIR: JVM_IR // TARGET_BACKEND: JVM // FILE: JavaClass.java diff --git a/compiler/testData/ir/irText/expressions/jvmInstanceFieldReference.txt b/compiler/testData/ir/irText/expressions/jvmInstanceFieldReference.txt index e06f4d8f042..9236a6eb246 100644 --- a/compiler/testData/ir/irText/expressions/jvmInstanceFieldReference.txt +++ b/compiler/testData/ir/irText/expressions/jvmInstanceFieldReference.txt @@ -7,20 +7,20 @@ FILE fqName: fileName:/Derived.kt INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:Derived modality:FINAL visibility:public superTypes:[.Base]' ANONYMOUS_INITIALIZER isStatic=false BLOCK_BODY - SET_FIELD 'FIELD FAKE_OVERRIDE name:value type:kotlin.Int visibility:public [fake_override]' type=kotlin.Unit origin=EQ + SET_FIELD 'FIELD IR_EXTERNAL_JAVA_DECLARATION_STUB name:value type:kotlin.Int visibility:public' type=kotlin.Unit origin=EQ receiver: GET_VAR ': .Derived declared in .Derived' type=.Derived origin=null value: CONST Int type=kotlin.Int value=0 FUN name:getValue visibility:public modality:FINAL <> ($this:.Derived) returnType:kotlin.Int $this: VALUE_PARAMETER name: type:.Derived BLOCK_BODY RETURN type=kotlin.Nothing from='public final fun getValue (): kotlin.Int declared in .Derived' - GET_FIELD 'FIELD FAKE_OVERRIDE name:value type:kotlin.Int visibility:public [fake_override]' type=kotlin.Int origin=GET_PROPERTY + GET_FIELD 'FIELD IR_EXTERNAL_JAVA_DECLARATION_STUB name:value type:kotlin.Int visibility:public' type=kotlin.Int origin=GET_PROPERTY receiver: GET_VAR ': .Derived declared in .Derived.getValue' type=.Derived origin=null FUN name:setValue visibility:public modality:FINAL <> ($this:.Derived, value:kotlin.Int) returnType:kotlin.Unit $this: VALUE_PARAMETER name: type:.Derived VALUE_PARAMETER name:value index:0 type:kotlin.Int BLOCK_BODY - SET_FIELD 'FIELD FAKE_OVERRIDE name:value type:kotlin.Int visibility:public [fake_override]' type=kotlin.Unit origin=EQ + SET_FIELD 'FIELD IR_EXTERNAL_JAVA_DECLARATION_STUB name:value type:kotlin.Int visibility:public' type=kotlin.Unit origin=EQ receiver: GET_VAR ': .Derived declared in .Derived.setValue' type=.Derived origin=null value: GET_VAR 'value: kotlin.Int declared in .Derived.setValue' type=kotlin.Int origin=null PROPERTY FAKE_OVERRIDE name:value visibility:public modality:FINAL [fake_override,var] diff --git a/compiler/testData/ir/irText/expressions/kt16904.txt b/compiler/testData/ir/irText/expressions/kt16904.txt index fddf5a8780d..3f7f3d8e55e 100644 --- a/compiler/testData/ir/irText/expressions/kt16904.txt +++ b/compiler/testData/ir/irText/expressions/kt16904.txt @@ -132,7 +132,7 @@ FILE fqName: fileName:/kt16904.kt INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:Test2 modality:FINAL visibility:public superTypes:[.J]' ANONYMOUS_INITIALIZER isStatic=false BLOCK_BODY - SET_FIELD 'FIELD FAKE_OVERRIDE name:field type:kotlin.Int visibility:public [fake_override]' type=kotlin.Unit origin=EQ + SET_FIELD 'FIELD IR_EXTERNAL_JAVA_DECLARATION_STUB name:field type:kotlin.Int visibility:public' type=kotlin.Unit origin=EQ receiver: GET_VAR ': .Test2 declared in .Test2' type=.Test2 origin=null value: CONST Int type=kotlin.Int value=42 PROPERTY FAKE_OVERRIDE name:field visibility:public modality:FINAL [fake_override,var] diff --git a/compiler/testData/ir/irText/expressions/setFieldWithImplicitCast.txt b/compiler/testData/ir/irText/expressions/setFieldWithImplicitCast.txt index 4be3fefe608..ebd92f26f4f 100644 --- a/compiler/testData/ir/irText/expressions/setFieldWithImplicitCast.txt +++ b/compiler/testData/ir/irText/expressions/setFieldWithImplicitCast.txt @@ -14,7 +14,7 @@ FILE fqName: fileName:/Derived.kt if: TYPE_OP type=kotlin.Boolean origin=INSTANCEOF typeOperand=kotlin.String GET_VAR 'v: kotlin.Any declared in .Derived.setValue' type=kotlin.Any origin=null then: BLOCK type=kotlin.Unit origin=null - SET_FIELD 'FIELD FAKE_OVERRIDE name:value type:kotlin.String? visibility:public [fake_override]' type=kotlin.Unit origin=EQ + SET_FIELD 'FIELD IR_EXTERNAL_JAVA_DECLARATION_STUB name:value type:kotlin.String? visibility:public' type=kotlin.Unit origin=EQ receiver: GET_VAR ': .Derived declared in .Derived.setValue' type=.Derived origin=null value: TYPE_OP type=kotlin.String origin=IMPLICIT_CAST typeOperand=kotlin.String GET_VAR 'v: kotlin.Any declared in .Derived.setValue' type=kotlin.Any origin=null diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/ir/AbstractIrTextTestCase.kt b/compiler/tests-common/tests/org/jetbrains/kotlin/ir/AbstractIrTextTestCase.kt index 3fbee1991aa..5f93d1cd1fc 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/ir/AbstractIrTextTestCase.kt +++ b/compiler/tests-common/tests/org/jetbrains/kotlin/ir/AbstractIrTextTestCase.kt @@ -210,14 +210,6 @@ abstract class AbstractIrTextTestCase : AbstractIrGeneratorTestCase() { } } - override fun visitField(declaration: IrField) { - visitDeclaration(declaration) - - require((declaration.origin == IrDeclarationOrigin.FAKE_OVERRIDE) == declaration.isFakeOverride) { - "${declaration.render()}: origin: ${declaration.origin}; isFakeOverride: ${declaration.isFakeOverride}" - } - } - @OptIn(ObsoleteDescriptorBasedAPI::class) override fun visitFunction(declaration: IrFunction) { visitDeclaration(declaration) diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/BytecodeTextTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/BytecodeTextTestGenerated.java index 071ca7d1b71..76bfcd3d84e 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/BytecodeTextTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/BytecodeTextTestGenerated.java @@ -199,6 +199,16 @@ public class BytecodeTextTestGenerated extends AbstractBytecodeTextTest { runTest("compiler/testData/codegen/bytecodeText/javaExtensionPropertyIntrinsic.kt"); } + @TestMetadata("javaFields.kt") + public void testJavaFields() throws Exception { + runTest("compiler/testData/codegen/bytecodeText/javaFields.kt"); + } + + @TestMetadata("javaFieldsWithIntersectionTypes.kt") + public void testJavaFieldsWithIntersectionTypes() throws Exception { + runTest("compiler/testData/codegen/bytecodeText/javaFieldsWithIntersectionTypes.kt"); + } + @TestMetadata("javaStatics.kt") public void testJavaStatics() throws Exception { runTest("compiler/testData/codegen/bytecodeText/javaStatics.kt"); diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBytecodeTextTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBytecodeTextTestGenerated.java index d53779a2b6b..f22f6d8a573 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBytecodeTextTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBytecodeTextTestGenerated.java @@ -199,6 +199,16 @@ public class IrBytecodeTextTestGenerated extends AbstractIrBytecodeTextTest { runTest("compiler/testData/codegen/bytecodeText/javaExtensionPropertyIntrinsic.kt"); } + @TestMetadata("javaFields.kt") + public void testJavaFields() throws Exception { + runTest("compiler/testData/codegen/bytecodeText/javaFields.kt"); + } + + @TestMetadata("javaFieldsWithIntersectionTypes.kt") + public void testJavaFieldsWithIntersectionTypes() throws Exception { + runTest("compiler/testData/codegen/bytecodeText/javaFieldsWithIntersectionTypes.kt"); + } + @TestMetadata("javaStatics.kt") public void testJavaStatics() throws Exception { runTest("compiler/testData/codegen/bytecodeText/javaStatics.kt"); diff --git a/compiler/tests/org/jetbrains/kotlin/ir/IrTextTestCaseGenerated.java b/compiler/tests/org/jetbrains/kotlin/ir/IrTextTestCaseGenerated.java index aa456a0f6fc..0eab0b6079e 100644 --- a/compiler/tests/org/jetbrains/kotlin/ir/IrTextTestCaseGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/ir/IrTextTestCaseGenerated.java @@ -1011,6 +1011,11 @@ public class IrTextTestCaseGenerated extends AbstractIrTextTestCase { runTest("compiler/testData/ir/irText/expressions/javaSyntheticPropertyAccess.kt"); } + @TestMetadata("jvmFieldReferenceWithIntersectionTypes.kt") + public void testJvmFieldReferenceWithIntersectionTypes() throws Exception { + runTest("compiler/testData/ir/irText/expressions/jvmFieldReferenceWithIntersectionTypes.kt"); + } + @TestMetadata("jvmInstanceFieldReference.kt") public void testJvmInstanceFieldReference() throws Exception { runTest("compiler/testData/ir/irText/expressions/jvmInstanceFieldReference.kt");