FIC: propagate info about conversions for deserialized classes
This commit is contained in:
+4
-2
@@ -44,7 +44,8 @@ class MetadataPackageFragmentProvider(
|
||||
notFoundClasses: NotFoundClasses,
|
||||
private val metadataPartProvider: MetadataPartProvider,
|
||||
contractDeserializer: ContractDeserializer,
|
||||
kotlinTypeChecker: NewKotlinTypeChecker
|
||||
kotlinTypeChecker: NewKotlinTypeChecker,
|
||||
samConversionResolver: SamConversionResolver
|
||||
) : AbstractDeserializedPackageFragmentProvider(storageManager, finder, moduleDescriptor) {
|
||||
init {
|
||||
components = DeserializationComponents(
|
||||
@@ -63,7 +64,8 @@ class MetadataPackageFragmentProvider(
|
||||
contractDeserializer,
|
||||
AdditionalClassPartsProvider.None, PlatformDependentDeclarationFilter.All,
|
||||
BuiltInSerializerProtocol.extensionRegistry,
|
||||
kotlinTypeChecker
|
||||
kotlinTypeChecker,
|
||||
samConversionResolver
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
+3
-1
@@ -16,6 +16,7 @@ import org.jetbrains.kotlin.descriptors.deserialization.ClassDescriptorFactory
|
||||
import org.jetbrains.kotlin.descriptors.deserialization.PlatformDependentDeclarationFilter
|
||||
import org.jetbrains.kotlin.incremental.components.LookupTracker
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.resolve.sam.SamConversionResolverImpl
|
||||
import org.jetbrains.kotlin.serialization.deserialization.*
|
||||
import org.jetbrains.kotlin.storage.StorageManager
|
||||
import java.io.InputStream
|
||||
@@ -78,7 +79,8 @@ class BuiltInsLoaderImpl : BuiltInsLoader {
|
||||
ContractDeserializer.DEFAULT,
|
||||
additionalClassPartsProvider,
|
||||
platformDependentDeclarationFilter,
|
||||
BuiltInSerializerProtocol.extensionRegistry
|
||||
BuiltInSerializerProtocol.extensionRegistry,
|
||||
samConversionResolver = SamConversionResolverImpl(storageManager, samWithReceiverResolvers = emptyList())
|
||||
)
|
||||
|
||||
for (packageFragment in packageFragments) {
|
||||
|
||||
+2
-1
@@ -49,7 +49,8 @@ class DeserializationComponents(
|
||||
val additionalClassPartsProvider: AdditionalClassPartsProvider = AdditionalClassPartsProvider.None,
|
||||
val platformDependentDeclarationFilter: PlatformDependentDeclarationFilter = PlatformDependentDeclarationFilter.All,
|
||||
val extensionRegistryLite: ExtensionRegistryLite,
|
||||
val kotlinTypeChecker: NewKotlinTypeChecker = NewKotlinTypeChecker.Default
|
||||
val kotlinTypeChecker: NewKotlinTypeChecker = NewKotlinTypeChecker.Default,
|
||||
val samConversionResolver: SamConversionResolver
|
||||
) {
|
||||
val classDeserializer: ClassDeserializer = ClassDeserializer(this)
|
||||
|
||||
|
||||
+7
@@ -26,6 +26,7 @@ import org.jetbrains.kotlin.resolve.scopes.StaticScopeForKotlinEnum
|
||||
import org.jetbrains.kotlin.serialization.deserialization.*
|
||||
import org.jetbrains.kotlin.types.AbstractClassTypeConstructor
|
||||
import org.jetbrains.kotlin.types.KotlinType
|
||||
import org.jetbrains.kotlin.types.SimpleType
|
||||
import org.jetbrains.kotlin.types.TypeConstructor
|
||||
import org.jetbrains.kotlin.types.checker.KotlinTypeRefiner
|
||||
import org.jetbrains.kotlin.types.refinement.TypeRefinement
|
||||
@@ -172,6 +173,12 @@ class DeserializedClassDescriptor(
|
||||
|
||||
override fun getDeclaredTypeParameters() = c.typeDeserializer.ownTypeParameters
|
||||
|
||||
override fun getDefaultFunctionTypeForSamInterface(): SimpleType? {
|
||||
return c.components.samConversionResolver.resolveFunctionTypeIfSamInterface(this)
|
||||
}
|
||||
|
||||
override fun isDefinitelyNotSamInterface() = !isFun
|
||||
|
||||
private inner class DeserializedClassTypeConstructor : AbstractClassTypeConstructor(c.storageManager) {
|
||||
private val parameters = c.storageManager.createLazyValue {
|
||||
this@DeserializedClassDescriptor.computeConstructorTypeParameters()
|
||||
|
||||
Reference in New Issue
Block a user