[JS IR] Fix js("...") call checker in frontend.
Call mather relies on that BuiltIn package fragment implement specific interface `BuiltInsPackageFragment` which was missed. Make sure that BuiltIn module's package fragments implement that interface. Fix progression optimizer symbols resolve in JS & WASM IR BE
This commit is contained in:
committed by
TeamCityServer
parent
18950feeff
commit
f05c8ad953
+16
-1
@@ -6,6 +6,7 @@
|
||||
package org.jetbrains.kotlin.library.metadata
|
||||
|
||||
import org.jetbrains.kotlin.backend.common.serialization.metadata.KlibMetadataVersion
|
||||
import org.jetbrains.kotlin.builtins.BuiltInsPackageFragment
|
||||
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
||||
import org.jetbrains.kotlin.library.KotlinLibrary
|
||||
import org.jetbrains.kotlin.metadata.ProtoBuf
|
||||
@@ -20,7 +21,7 @@ import org.jetbrains.kotlin.serialization.deserialization.getName
|
||||
import org.jetbrains.kotlin.storage.StorageManager
|
||||
import java.lang.ref.SoftReference
|
||||
|
||||
class KlibMetadataDeserializedPackageFragment(
|
||||
open class KlibMetadataDeserializedPackageFragment(
|
||||
fqName: FqName,
|
||||
private val library: KotlinLibrary,
|
||||
private val packageAccessHandler: PackageAccessHandler?,
|
||||
@@ -51,6 +52,20 @@ class KlibMetadataDeserializedPackageFragment(
|
||||
}
|
||||
}
|
||||
|
||||
class BuiltInKlibMetadataDeserializedPackageFragment(
|
||||
fqName: FqName,
|
||||
library: KotlinLibrary,
|
||||
packageAccessHandler: PackageAccessHandler?,
|
||||
storageManager: StorageManager,
|
||||
module: ModuleDescriptor,
|
||||
partName: String
|
||||
) : KlibMetadataDeserializedPackageFragment(fqName, library, packageAccessHandler, storageManager, module, partName),
|
||||
BuiltInsPackageFragment {
|
||||
|
||||
override val isFallback: Boolean
|
||||
get() = false
|
||||
}
|
||||
|
||||
class KlibMetadataCachedPackageFragment(
|
||||
byteArray: ByteArray,
|
||||
storageManager: StorageManager,
|
||||
|
||||
+15
-6
@@ -6,11 +6,10 @@ import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.impl.PackageFragmentDescriptorImpl
|
||||
import org.jetbrains.kotlin.incremental.components.LookupLocation
|
||||
import org.jetbrains.kotlin.library.*
|
||||
import org.jetbrains.kotlin.library.metadata.KlibMetadataCachedPackageFragment
|
||||
import org.jetbrains.kotlin.library.metadata.KlibMetadataDeserializedPackageFragment
|
||||
import org.jetbrains.kotlin.library.metadata.KlibMetadataPackageFragment
|
||||
import org.jetbrains.kotlin.library.metadata.PackageAccessHandler
|
||||
import org.jetbrains.kotlin.library.KotlinLibrary
|
||||
import org.jetbrains.kotlin.library.exportForwardDeclarations
|
||||
import org.jetbrains.kotlin.library.isInterop
|
||||
import org.jetbrains.kotlin.library.metadata.*
|
||||
import org.jetbrains.kotlin.library.packageFqName
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
@@ -32,8 +31,18 @@ open class KlibMetadataDeserializedPackageFragmentsFactoryImpl : KlibMetadataDes
|
||||
) = packageFragmentNames.flatMap {
|
||||
val fqName = FqName(it)
|
||||
val parts = library.packageMetadataParts(fqName.asString())
|
||||
val isBuiltInModule = moduleDescriptor.builtIns.builtInsModule === moduleDescriptor
|
||||
parts.map { partName ->
|
||||
KlibMetadataDeserializedPackageFragment(fqName, library, packageAccessedHandler, storageManager, moduleDescriptor, partName)
|
||||
if (isBuiltInModule)
|
||||
BuiltInKlibMetadataDeserializedPackageFragment(
|
||||
fqName,
|
||||
library,
|
||||
packageAccessedHandler,
|
||||
storageManager,
|
||||
moduleDescriptor,
|
||||
partName
|
||||
) else
|
||||
KlibMetadataDeserializedPackageFragment(fqName, library, packageAccessedHandler, storageManager, moduleDescriptor, partName)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user