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 83fd18e34b8..9c0e3668907 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,7 +67,7 @@ class JsDeclarationFactory(mapping: JsMapping) : DeclarationFactory { isFinal = true, isExternal = false, isStatic = false, - isFakeOverride = origin == IrDeclarationOrigin.FAKE_OVERRIDE + isFakeOverride = false ).also { descriptor.bind(it) it.parent = parent diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/ir/IrBuilder.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/ir/IrBuilder.kt index 1091ada1068..61f85029d52 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/ir/IrBuilder.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/ir/IrBuilder.kt @@ -93,6 +93,7 @@ object JsIrBuilder { isTailrec: Boolean = false, isSuspend: Boolean = false, isExpect: Boolean = false, + isFakeOverride: Boolean = false, origin: IrDeclarationOrigin = SYNTHESIZED_DECLARATION ) = buildFunction( Name.identifier(name), @@ -105,6 +106,7 @@ object JsIrBuilder { isTailrec = isTailrec, isSuspend = isSuspend, isExpect = isExpect, + isFakeOverride = isFakeOverride, origin = origin ) @@ -120,6 +122,7 @@ object JsIrBuilder { isSuspend: Boolean = false, isExpect: Boolean = false, isOperator: Boolean = false, + isFakeOverride: Boolean = false, origin: IrDeclarationOrigin = SYNTHESIZED_DECLARATION ): IrSimpleFunction { val descriptor = WrappedSimpleFunctionDescriptor() @@ -137,7 +140,7 @@ object JsIrBuilder { isTailrec = isTailrec, isSuspend = isSuspend, isExpect = isExpect, - isFakeOverride = origin == IrDeclarationOrigin.FAKE_OVERRIDE, + isFakeOverride = isFakeOverride, isOperator = isOperator ).also { descriptor.bind(it) diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/BridgesConstruction.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/BridgesConstruction.kt index ac74928df53..90f37c5235d 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/BridgesConstruction.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/BridgesConstruction.kt @@ -132,6 +132,7 @@ class BridgesConstruction(val context: CommonBackendContext) : DeclarationTransf isTailrec = bridge.isTailrec, isSuspend = bridge.isSuspend, isExpect = bridge.isExpect, + isFakeOverride = false, origin = origin ).apply { copyTypeParametersFrom(bridge) 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 a8c8c58e240..314e5de8e4e 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 @@ -70,7 +70,7 @@ class EnumUsageLowering(val context: JsIrBackendContext) : BodyLoweringPass { IrFieldImpl( startOffset, endOffset, origin, symbol, name, irClass.defaultType, Visibilities.PUBLIC, isFinal = false, isExternal = true, isStatic = true, - isFakeOverride = origin == IrDeclarationOrigin.FAKE_OVERRIDE + isFakeOverride = entry.isFakeOverride ).also { descriptor.bind(it) it.parent = irClass diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/PrivateMembersLowering.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/PrivateMembersLowering.kt index f1f0fa77735..f05cc12b7fd 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/PrivateMembersLowering.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/PrivateMembersLowering.kt @@ -59,7 +59,7 @@ class PrivateMembersLowering(val context: JsIrBackendContext) : DeclarationTrans symbol, name, visibility, modality, returnType, isInline = isInline, isExternal = isExternal, isTailrec = isTailrec, isSuspend = isSuspend, isExpect = isExpect, - isFakeOverride = origin == IrDeclarationOrigin.FAKE_OVERRIDE, + isFakeOverride = isFakeOverride, isOperator = isOperator ).also { descriptor.bind(it) diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/calls/EqualityAndComparisonCallsTransformer.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/calls/EqualityAndComparisonCallsTransformer.kt index ee3e819e0ad..0dfa0b61463 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/calls/EqualityAndComparisonCallsTransformer.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/calls/EqualityAndComparisonCallsTransformer.kt @@ -117,7 +117,7 @@ class EqualityAndComparisonCallsTransformer(context: JsIrBackendContext) : Calls if (function.parent !is IrClass) return call fun IrSimpleFunction.isFakeOverriddenFromComparable(): Boolean = when { - origin != IrDeclarationOrigin.FAKE_OVERRIDE -> + !isFakeOverride -> !isStaticMethodOfClass && parentAsClass.thisReceiver!!.type.isComparable() else -> overriddenSymbols.all { it.owner.isFakeOverriddenFromComparable() } diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/JsClassGenerator.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/JsClassGenerator.kt index 8a953801174..d4c7da47314 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/JsClassGenerator.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/JsClassGenerator.kt @@ -71,7 +71,7 @@ class JsClassGenerator(private val irClass: IrClass, val context: JsGenerationCo if (property.visibility != Visibilities.PUBLIC) continue - if (property.origin == IrDeclarationOrigin.FAKE_OVERRIDE) + if (property.isFakeOverride) continue fun IrSimpleFunction.accessorRef(): JsNameRef? =