Copying of memberScope of local class in inline function

This commit is contained in:
Igor Chevdar
2017-04-03 17:07:26 +03:00
parent 05b6d8ab81
commit 8dbdd9422d
@@ -16,6 +16,7 @@
package org.jetbrains.kotlin.backend.common package org.jetbrains.kotlin.backend.common
import org.jetbrains.kotlin.backend.common.lower.SimpleMemberScope
import org.jetbrains.kotlin.backend.konan.Context import org.jetbrains.kotlin.backend.konan.Context
import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.descriptors.*
import org.jetbrains.kotlin.descriptors.impl.ClassConstructorDescriptorImpl import org.jetbrains.kotlin.descriptors.impl.ClassConstructorDescriptorImpl
@@ -88,10 +89,17 @@ internal class DeepCopyIrTreeWithDescriptors(val targetFunction: IrFunction, val
primaryConstructor = descriptorSubstituteMap[oldPrimaryConstructor] as ClassConstructorDescriptor primaryConstructor = descriptorSubstituteMap[oldPrimaryConstructor] as ClassConstructorDescriptor
} }
val contributedDescriptors = oldDescriptor.unsubstitutedMemberScope
.getContributedDescriptors()
.map {
if (it is CallableMemberDescriptor && it.kind == CallableMemberDescriptor.Kind.FAKE_OVERRIDE)
it
else descriptorSubstituteMap[it]!!
}
newDescriptor.initialize( newDescriptor.initialize(
oldDescriptor.unsubstitutedMemberScope, SimpleMemberScope(contributedDescriptors),
constructors, constructors,
primaryConstructor primaryConstructor
) )
} }
@@ -163,6 +171,7 @@ internal class DeepCopyIrTreeWithDescriptors(val targetFunction: IrFunction, val
Modality.FINAL, Modality.FINAL,
Visibilities.LOCAL Visibilities.LOCAL
) )
newDescriptor.overriddenDescriptors += oldDescriptor.overriddenDescriptors
return newDescriptor return newDescriptor
} }