Move JvmBuiltIns initialization after container setup

It will be used in the further commits to initilize built-ins instance
with components as arguments
This commit is contained in:
Denis Zharkov
2016-09-21 16:09:18 +03:00
parent 63943c60d3
commit a7dedfab70
11 changed files with 29 additions and 21 deletions
@@ -19,6 +19,7 @@ package org.jetbrains.kotlin.load.kotlin
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
import org.jetbrains.kotlin.incremental.components.LookupTracker
import org.jetbrains.kotlin.load.java.lazy.LazyJavaPackageFragmentProvider
import org.jetbrains.kotlin.platform.JvmBuiltIns
import org.jetbrains.kotlin.serialization.deserialization.*
import org.jetbrains.kotlin.storage.StorageManager
@@ -37,14 +38,16 @@ class DeserializationComponentsForJava(
val components: DeserializationComponents
init {
val settings = JvmBuiltInsSettings(moduleDescriptor, storageManager, { moduleDescriptor })
// currently built-ins may be not an instance of JvmBuiltIns only in case of built-ins serialization
val jvmBuiltIns = moduleDescriptor.builtIns as? JvmBuiltIns
components = DeserializationComponents(
storageManager, moduleDescriptor, classDataFinder, annotationAndConstantLoader, packageFragmentProvider,
LocalClassifierTypeSettings.Default,
errorReporter, lookupTracker, JavaFlexibleTypeDeserializer, ClassDescriptorFactory.EMPTY,
notFoundClasses,
additionalClassPartsProvider = settings,
platformDependentDeclarationFilter = settings
additionalClassPartsProvider = jvmBuiltIns?.settings ?: AdditionalClassPartsProvider.None,
platformDependentDeclarationFilter =
jvmBuiltIns?.settings ?: PlatformDependentDeclarationFilter.NoPlatformDependent
)
}
}
@@ -19,7 +19,6 @@ package org.jetbrains.kotlin.platform
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
import org.jetbrains.kotlin.load.kotlin.JvmBuiltInsSettings
import org.jetbrains.kotlin.serialization.deserialization.AdditionalClassPartsProvider
import org.jetbrains.kotlin.serialization.deserialization.PlatformDependentDeclarationFilter
import org.jetbrains.kotlin.storage.StorageManager
import org.jetbrains.kotlin.utils.sure
@@ -28,12 +27,13 @@ class JvmBuiltIns(storageManager: StorageManager) : KotlinBuiltIns(storageManage
// Module containing JDK classes or having them among dependencies
private var ownerModuleDescriptor: ModuleDescriptor? = null
fun setOwnerModuleDescriptor(moduleDescriptor: ModuleDescriptor) {
fun initialize(moduleDescriptor: ModuleDescriptor) {
assert(ownerModuleDescriptor == null) { "JvmBuiltins repeated initialization" }
this.ownerModuleDescriptor = moduleDescriptor
}
private lateinit var settings: JvmBuiltInsSettings
lateinit var settings: JvmBuiltInsSettings
private set
// Here we know order in which KotlinBuiltIns constructor calls these methods
override fun getPlatformDependentDeclarationFilter(): PlatformDependentDeclarationFilter {