Refactor bridges generation for JVM
Make a separate subclass for DescriptorBasedFunctionHandle to allow customize the behavior without complex abstract concepts like `areDeclarationAndDefinitionSame`
This commit is contained in:
+6
-6
@@ -28,7 +28,10 @@ import org.jetbrains.kotlin.js.translate.utils.*
|
||||
import org.jetbrains.kotlin.js.translate.utils.JsAstUtils.prototypeOf
|
||||
import org.jetbrains.kotlin.js.translate.utils.JsAstUtils.pureFqn
|
||||
import org.jetbrains.kotlin.resolve.DescriptorUtils
|
||||
import org.jetbrains.kotlin.resolve.descriptorUtil.*
|
||||
import org.jetbrains.kotlin.resolve.descriptorUtil.getSuperClassNotAny
|
||||
import org.jetbrains.kotlin.resolve.descriptorUtil.getSuperInterfaces
|
||||
import org.jetbrains.kotlin.resolve.descriptorUtil.isEffectivelyExternal
|
||||
import org.jetbrains.kotlin.resolve.descriptorUtil.isExtension
|
||||
import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter
|
||||
import org.jetbrains.kotlin.resolve.source.getPsi
|
||||
import org.jetbrains.kotlin.utils.identity
|
||||
@@ -241,10 +244,7 @@ class ClassModelGenerator(val context: TranslationContext) {
|
||||
private fun generateOtherBridges(descriptor: ClassDescriptor, model: JsClassModel) {
|
||||
for (memberDescriptor in descriptor.defaultType.memberScope.getContributedDescriptors()) {
|
||||
if (memberDescriptor is FunctionDescriptor) {
|
||||
val bridgesToGenerate = generateBridgesForFunctionDescriptor(memberDescriptor, identity()) {
|
||||
//There is no DefaultImpls in js backend so if method non-abstract it should be recognized as non-abstract on bridges calculation
|
||||
true
|
||||
}
|
||||
val bridgesToGenerate = generateBridgesForFunctionDescriptor(memberDescriptor, identity())
|
||||
|
||||
for (bridge in bridgesToGenerate) {
|
||||
generateBridge(descriptor, model, bridge)
|
||||
@@ -304,4 +304,4 @@ class ClassModelGenerator(val context: TranslationContext) {
|
||||
|
||||
block.statements += defineProperty.makeStmt()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user