IR: pass DescriptorByIdSignatureFinder as parameter to DeclarationStubGeneratorimpl

This breaks dependency between serialization.common and psi2ir modules.
This commit is contained in:
Georgy Bronnikov
2021-12-01 20:23:22 +03:00
committed by TeamCityServer
parent 3f91674090
commit 6a3a375372
11 changed files with 34 additions and 28 deletions
@@ -8,10 +8,8 @@ package org.jetbrains.kotlin.backend.jvm
import org.jetbrains.kotlin.analyzer.hasJdkCapability
import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension
import org.jetbrains.kotlin.backend.common.extensions.IrPluginContextImpl
import org.jetbrains.kotlin.backend.common.phaser.CompilerPhase
import org.jetbrains.kotlin.backend.common.phaser.PhaseConfig
import org.jetbrains.kotlin.backend.common.phaser.invokeToplevel
import org.jetbrains.kotlin.backend.common.phaser.then
import org.jetbrains.kotlin.backend.common.phaser.*
import org.jetbrains.kotlin.backend.common.serialization.DescriptorByIdSignatureFinderImpl
import org.jetbrains.kotlin.backend.jvm.intrinsics.IrIntrinsicMethods
import org.jetbrains.kotlin.backend.jvm.ir.getKtFile
import org.jetbrains.kotlin.backend.jvm.serialization.JvmIdSignatureDescriptor
@@ -95,7 +93,9 @@ open class JvmIrCodegenFactory(
val stubGenerator =
DeclarationStubGeneratorImpl(
psi2irContext.moduleDescriptor, symbolTable, psi2irContext.irBuiltIns, mangler, jvmGeneratorExtensions
psi2irContext.moduleDescriptor, symbolTable, psi2irContext.irBuiltIns,
DescriptorByIdSignatureFinderImpl(psi2irContext.moduleDescriptor, mangler),
jvmGeneratorExtensions
)
val frontEndContext = object : TranslationPluginContext {
override val moduleDescriptor: ModuleDescriptor
@@ -290,7 +290,7 @@ open class JvmIrCodegenFactory(
): List<IrProvider> {
return generateTypicalIrProviderList(
irModuleFragment.descriptor, irModuleFragment.irBuiltins, symbolTable,
JvmDescriptorMangler(null),
DescriptorByIdSignatureFinderImpl(irModuleFragment.descriptor, JvmDescriptorMangler(null)),
extensions = extensions
)
}
-1
View File
@@ -8,7 +8,6 @@ dependencies {
api(project(":compiler:frontend"))
api(project(":compiler:backend-common"))
api(project(":compiler:ir.tree"))
api(project(":compiler:ir.serialization.common"))
compileOnly(intellijCore())
}
@@ -5,7 +5,6 @@
package org.jetbrains.kotlin.psi2ir.generators
import org.jetbrains.kotlin.backend.common.serialization.DescriptorByIdSignatureFinderImpl
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
import org.jetbrains.kotlin.descriptors.NotFoundClasses
import org.jetbrains.kotlin.ir.IrBuiltIns
@@ -21,7 +20,7 @@ class DeclarationStubGeneratorImpl(
moduleDescriptor: ModuleDescriptor,
symbolTable: SymbolTable,
irBuiltins: IrBuiltIns,
mangler: KotlinMangler.DescriptorMangler,
override val descriptorFinder: DescriptorByIdSignatureFinder,
extensions: StubGeneratorExtensions = StubGeneratorExtensions.EMPTY,
) : DeclarationStubGenerator(moduleDescriptor, symbolTable, irBuiltins, extensions) {
override val typeTranslator: TypeTranslator =
@@ -33,12 +32,6 @@ class DeclarationStubGeneratorImpl(
true,
extensions
)
override val descriptorFinder: DescriptorByIdSignatureFinder = DescriptorByIdSignatureFinderImpl(
moduleDescriptor,
mangler,
DescriptorByIdSignatureFinderImpl.LookupMode.MODULE_WITH_DEPENDENCIES
)
}
// In most cases, IrProviders list consist of an optional deserializer and a DeclarationStubGenerator.
@@ -46,12 +39,12 @@ fun generateTypicalIrProviderList(
moduleDescriptor: ModuleDescriptor,
irBuiltins: IrBuiltIns,
symbolTable: SymbolTable,
mangler: KotlinMangler.DescriptorMangler,
descriptorFinder: DescriptorByIdSignatureFinder,
deserializer: IrDeserializer? = null,
extensions: StubGeneratorExtensions = StubGeneratorExtensions.EMPTY
): List<IrProvider> {
val stubGenerator = DeclarationStubGeneratorImpl(
moduleDescriptor, symbolTable, irBuiltins, mangler, extensions
moduleDescriptor, symbolTable, irBuiltins, descriptorFinder, extensions
)
return listOfNotNull(deserializer, stubGenerator)
}
@@ -20,7 +20,7 @@ import org.jetbrains.kotlin.utils.addIfNotNull
class DescriptorByIdSignatureFinderImpl(
private val moduleDescriptor: ModuleDescriptor,
private val mangler: KotlinMangler.DescriptorMangler,
private val lookupMode: LookupMode
private val lookupMode: LookupMode = LookupMode.MODULE_WITH_DEPENDENCIES,
) : DescriptorByIdSignatureFinder {
init {
assert(lookupMode != LookupMode.MODULE_ONLY || moduleDescriptor is ModuleDescriptorImpl) {