Skip bridge generation for non real declaration on first step they would be processed later
~ ~
This commit is contained in:
+4
-2
@@ -37,6 +37,7 @@ import org.jetbrains.kotlin.codegen.state.GenerationState
|
|||||||
import org.jetbrains.kotlin.codegen.state.KotlinTypeMapper
|
import org.jetbrains.kotlin.codegen.state.KotlinTypeMapper
|
||||||
import org.jetbrains.kotlin.descriptors.*
|
import org.jetbrains.kotlin.descriptors.*
|
||||||
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor.Kind.DECLARATION
|
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor.Kind.DECLARATION
|
||||||
|
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor.Kind.FAKE_OVERRIDE
|
||||||
import org.jetbrains.kotlin.descriptors.annotations.Annotations
|
import org.jetbrains.kotlin.descriptors.annotations.Annotations
|
||||||
import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET
|
import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrClass
|
import org.jetbrains.kotlin.ir.declarations.IrClass
|
||||||
@@ -74,7 +75,8 @@ class BridgeLowering(val state: GenerationState) : ClassLoweringPass {
|
|||||||
val functions = irClass.declarations.filterIsInstance<IrFunction>().filterNot {
|
val functions = irClass.declarations.filterIsInstance<IrFunction>().filterNot {
|
||||||
val descriptor = it.descriptor
|
val descriptor = it.descriptor
|
||||||
descriptor is ConstructorDescriptor ||
|
descriptor is ConstructorDescriptor ||
|
||||||
DescriptorUtils.isStaticDeclaration(descriptor)
|
DescriptorUtils.isStaticDeclaration(descriptor) ||
|
||||||
|
!descriptor.kind.isReal
|
||||||
}
|
}
|
||||||
|
|
||||||
functions.forEach {
|
functions.forEach {
|
||||||
@@ -82,7 +84,7 @@ class BridgeLowering(val state: GenerationState) : ClassLoweringPass {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//additional bridges for interface methods
|
//additional bridges for inherited interface methods
|
||||||
if (!DescriptorUtils.isInterface(classDescriptor) && classDescriptor !is DefaultImplsClassDescriptor) {
|
if (!DescriptorUtils.isInterface(classDescriptor) && classDescriptor !is DefaultImplsClassDescriptor) {
|
||||||
for (memberDescriptor in DescriptorUtils.getAllDescriptors(classDescriptor.defaultType.memberScope)) {
|
for (memberDescriptor in DescriptorUtils.getAllDescriptors(classDescriptor.defaultType.memberScope)) {
|
||||||
if (memberDescriptor is CallableMemberDescriptor) {
|
if (memberDescriptor is CallableMemberDescriptor) {
|
||||||
|
|||||||
Reference in New Issue
Block a user