fix: fake override on interfaces.
This commit is contained in:
+6
-1
@@ -141,7 +141,7 @@ class JsClassGenerator(private val irClass: IrClass, val context: JsGenerationCo
|
||||
// so we need regenerate `defineProperty` with setter.
|
||||
// P.S. If the overridden property is owned by an interface - we should generate defineProperty
|
||||
// for overridden property in the first class which override those properties
|
||||
val hasOverriddenExportedInterfaceProperties = overriddenSymbols.any { it.owner.parentClassOrNull.isExportedInterface() }
|
||||
val hasOverriddenExportedInterfaceProperties = overriddenSymbols.any { it.owner.isDefinedInsideExportedInterface() }
|
||||
&& !overriddenSymbols.any { it.owner.parentClassOrNull.isExportedClass() }
|
||||
|
||||
val getterOverridesExternal = property.getter?.overridesExternal() == true
|
||||
@@ -212,6 +212,11 @@ class JsClassGenerator(private val irClass: IrClass, val context: JsGenerationCo
|
||||
return if (modality == Modality.FINAL) accessorRef() else generateFunc()
|
||||
}
|
||||
|
||||
private fun IrSimpleFunction.isDefinedInsideExportedInterface(): Boolean {
|
||||
return (!isFakeOverride && parentClassOrNull.isExportedInterface()) ||
|
||||
overriddenSymbols.any { it.owner.isDefinedInsideExportedInterface() }
|
||||
}
|
||||
|
||||
private fun IrSimpleFunction?.shouldExportAccessor(): Boolean {
|
||||
if (this == null) return false
|
||||
|
||||
|
||||
Reference in New Issue
Block a user