[JS IR] Fix usages of 'IrDeclarationOrigin.FAKE_OVERRIDE'

This commit is contained in:
Roman Artemev
2020-03-27 13:35:58 +03:00
committed by romanart
parent e4ad6698fb
commit 0480f2d170
7 changed files with 10 additions and 6 deletions
@@ -67,7 +67,7 @@ class JsDeclarationFactory(mapping: JsMapping) : DeclarationFactory {
isFinal = true, isFinal = true,
isExternal = false, isExternal = false,
isStatic = false, isStatic = false,
isFakeOverride = origin == IrDeclarationOrigin.FAKE_OVERRIDE isFakeOverride = false
).also { ).also {
descriptor.bind(it) descriptor.bind(it)
it.parent = parent it.parent = parent
@@ -93,6 +93,7 @@ object JsIrBuilder {
isTailrec: Boolean = false, isTailrec: Boolean = false,
isSuspend: Boolean = false, isSuspend: Boolean = false,
isExpect: Boolean = false, isExpect: Boolean = false,
isFakeOverride: Boolean = false,
origin: IrDeclarationOrigin = SYNTHESIZED_DECLARATION origin: IrDeclarationOrigin = SYNTHESIZED_DECLARATION
) = buildFunction( ) = buildFunction(
Name.identifier(name), Name.identifier(name),
@@ -105,6 +106,7 @@ object JsIrBuilder {
isTailrec = isTailrec, isTailrec = isTailrec,
isSuspend = isSuspend, isSuspend = isSuspend,
isExpect = isExpect, isExpect = isExpect,
isFakeOverride = isFakeOverride,
origin = origin origin = origin
) )
@@ -120,6 +122,7 @@ object JsIrBuilder {
isSuspend: Boolean = false, isSuspend: Boolean = false,
isExpect: Boolean = false, isExpect: Boolean = false,
isOperator: Boolean = false, isOperator: Boolean = false,
isFakeOverride: Boolean = false,
origin: IrDeclarationOrigin = SYNTHESIZED_DECLARATION origin: IrDeclarationOrigin = SYNTHESIZED_DECLARATION
): IrSimpleFunction { ): IrSimpleFunction {
val descriptor = WrappedSimpleFunctionDescriptor() val descriptor = WrappedSimpleFunctionDescriptor()
@@ -137,7 +140,7 @@ object JsIrBuilder {
isTailrec = isTailrec, isTailrec = isTailrec,
isSuspend = isSuspend, isSuspend = isSuspend,
isExpect = isExpect, isExpect = isExpect,
isFakeOverride = origin == IrDeclarationOrigin.FAKE_OVERRIDE, isFakeOverride = isFakeOverride,
isOperator = isOperator isOperator = isOperator
).also { ).also {
descriptor.bind(it) descriptor.bind(it)
@@ -132,6 +132,7 @@ class BridgesConstruction(val context: CommonBackendContext) : DeclarationTransf
isTailrec = bridge.isTailrec, isTailrec = bridge.isTailrec,
isSuspend = bridge.isSuspend, isSuspend = bridge.isSuspend,
isExpect = bridge.isExpect, isExpect = bridge.isExpect,
isFakeOverride = false,
origin = origin origin = origin
).apply { ).apply {
copyTypeParametersFrom(bridge) copyTypeParametersFrom(bridge)
@@ -70,7 +70,7 @@ class EnumUsageLowering(val context: JsIrBackendContext) : BodyLoweringPass {
IrFieldImpl( IrFieldImpl(
startOffset, endOffset, origin, symbol, name, irClass.defaultType, Visibilities.PUBLIC, startOffset, endOffset, origin, symbol, name, irClass.defaultType, Visibilities.PUBLIC,
isFinal = false, isExternal = true, isStatic = true, isFinal = false, isExternal = true, isStatic = true,
isFakeOverride = origin == IrDeclarationOrigin.FAKE_OVERRIDE isFakeOverride = entry.isFakeOverride
).also { ).also {
descriptor.bind(it) descriptor.bind(it)
it.parent = irClass it.parent = irClass
@@ -59,7 +59,7 @@ class PrivateMembersLowering(val context: JsIrBackendContext) : DeclarationTrans
symbol, name, visibility, modality, symbol, name, visibility, modality,
returnType, returnType,
isInline = isInline, isExternal = isExternal, isTailrec = isTailrec, isSuspend = isSuspend, isExpect = isExpect, isInline = isInline, isExternal = isExternal, isTailrec = isTailrec, isSuspend = isSuspend, isExpect = isExpect,
isFakeOverride = origin == IrDeclarationOrigin.FAKE_OVERRIDE, isFakeOverride = isFakeOverride,
isOperator = isOperator isOperator = isOperator
).also { ).also {
descriptor.bind(it) descriptor.bind(it)
@@ -117,7 +117,7 @@ class EqualityAndComparisonCallsTransformer(context: JsIrBackendContext) : Calls
if (function.parent !is IrClass) return call if (function.parent !is IrClass) return call
fun IrSimpleFunction.isFakeOverriddenFromComparable(): Boolean = when { fun IrSimpleFunction.isFakeOverriddenFromComparable(): Boolean = when {
origin != IrDeclarationOrigin.FAKE_OVERRIDE -> !isFakeOverride ->
!isStaticMethodOfClass && parentAsClass.thisReceiver!!.type.isComparable() !isStaticMethodOfClass && parentAsClass.thisReceiver!!.type.isComparable()
else -> overriddenSymbols.all { it.owner.isFakeOverriddenFromComparable() } else -> overriddenSymbols.all { it.owner.isFakeOverriddenFromComparable() }
@@ -71,7 +71,7 @@ class JsClassGenerator(private val irClass: IrClass, val context: JsGenerationCo
if (property.visibility != Visibilities.PUBLIC) if (property.visibility != Visibilities.PUBLIC)
continue continue
if (property.origin == IrDeclarationOrigin.FAKE_OVERRIDE) if (property.isFakeOverride)
continue continue
fun IrSimpleFunction.accessorRef(): JsNameRef? = fun IrSimpleFunction.accessorRef(): JsNameRef? =