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
+1
View File
@@ -16,6 +16,7 @@ dependencies {
compileOnly(project(":compiler:ir.tree"))
compileOnly(project(":compiler:ir.psi2ir"))
compileOnly(project(":compiler:ir.backend.common"))
compileOnly(project(":compiler:ir.serialization.common"))
compileOnly(intellijCore())
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.fir.backend
import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension
import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext
import org.jetbrains.kotlin.backend.common.ir.BuiltinSymbolsBase
import org.jetbrains.kotlin.backend.common.serialization.DescriptorByIdSignatureFinderImpl
import org.jetbrains.kotlin.config.AnalysisFlags
import org.jetbrains.kotlin.config.LanguageVersionSettings
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
@@ -62,6 +63,7 @@ class Fir2IrConverter(
irGenerationExtensions: Collection<IrGenerationExtension>,
fir2irVisitor: Fir2IrVisitor,
languageVersionSettings: LanguageVersionSettings,
descriptorMangler: KotlinMangler.DescriptorMangler,
extensions: StubGeneratorExtensions,
) {
for (firFile in allFirFiles) {
@@ -69,7 +71,11 @@ class Fir2IrConverter(
}
val irProviders =
generateTypicalIrProviderList(irModuleFragment.descriptor, irBuiltIns, symbolTable, extensions = extensions)
generateTypicalIrProviderList(
irModuleFragment.descriptor, irBuiltIns, symbolTable,
descriptorFinder = DescriptorByIdSignatureFinderImpl(irModuleFragment.descriptor, descriptorMangler),
extensions = extensions
)
val externalDependenciesGenerator = ExternalDependenciesGenerator(
symbolTable,
irProviders
@@ -460,7 +466,8 @@ class Fir2IrConverter(
}
converter.runSourcesConversion(
allFirFiles, irModuleFragment, irGenerationExtensions, fir2irVisitor, languageVersionSettings, generatorExtensions
allFirFiles, irModuleFragment, irGenerationExtensions, fir2irVisitor, languageVersionSettings,
descriptorMangler, generatorExtensions
)
return Fir2IrResult(irModuleFragment, symbolTable, components)
@@ -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) {
@@ -5,6 +5,7 @@
package org.jetbrains.kotlin.test.backend.handlers
import org.jetbrains.kotlin.backend.common.serialization.DescriptorByIdSignatureFinderImpl
import org.jetbrains.kotlin.backend.common.serialization.signature.IdSignatureDescriptor
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
import org.jetbrains.kotlin.descriptors.findClassAcrossModuleDependencies
@@ -89,7 +90,7 @@ class IrTextDumpHandler(testServices: TestServices) : AbstractIrHandler(testServ
irModule.descriptor,
SymbolTable(signaturer, IrFactoryImpl), // TODO
irModule.irBuiltins,
mangler,
DescriptorByIdSignatureFinderImpl(irModule.descriptor, mangler)
)
val baseFile = testServices.moduleStructure.originalTestDataFiles.first()
@@ -17,6 +17,7 @@
package org.jetbrains.kotlin.ir
import org.jetbrains.kotlin.analyzer.AnalysisResult
import org.jetbrains.kotlin.backend.common.serialization.DescriptorByIdSignatureFinderImpl
import org.jetbrains.kotlin.backend.common.serialization.signature.IdSignatureDescriptor
import org.jetbrains.kotlin.backend.jvm.JvmGeneratorExtensionsImpl
import org.jetbrains.kotlin.backend.jvm.serialization.JvmIdSignatureDescriptor
@@ -169,8 +170,8 @@ abstract class AbstractIrGeneratorTestCase : CodegenTestCase() {
)
val irProviders = generateTypicalIrProviderList(
moduleDescriptor, context.irBuiltIns, context.symbolTable,
DescriptorByIdSignatureFinderImpl(moduleDescriptor, JsManglerDesc),
extensions = generatorExtensions,
mangler = JsManglerDesc,
)
return psi2ir.generateModuleFragment(context, ktFilesToAnalyze, irProviders, emptyList())
}
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.ir
import com.intellij.openapi.util.text.StringUtil
import junit.framework.TestCase
import org.jetbrains.kotlin.backend.common.serialization.DescriptorByIdSignatureFinderImpl
import org.jetbrains.kotlin.backend.common.serialization.signature.IdSignatureDescriptor
import org.jetbrains.kotlin.cli.js.loadPluginsForTests
import org.jetbrains.kotlin.config.CompilerConfiguration
@@ -58,7 +59,7 @@ abstract class AbstractIrTextTestCase : AbstractIrGeneratorTestCase() {
irModule.descriptor,
SymbolTable(signaturer, IrFactoryImpl), // TODO
irModule.irBuiltins,
mangler,
DescriptorByIdSignatureFinderImpl(irModule.descriptor, mangler)
)
val path = wholeFile.path
@@ -3,6 +3,7 @@ package org.jetbrains.kotlin.backend.konan
import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension
import org.jetbrains.kotlin.backend.common.extensions.IrPluginContextImpl
import org.jetbrains.kotlin.backend.common.overrides.FakeOverrideChecker
import org.jetbrains.kotlin.backend.common.serialization.DescriptorByIdSignatureFinderImpl
import org.jetbrains.kotlin.backend.common.serialization.mangle.ManglerChecker
import org.jetbrains.kotlin.backend.common.serialization.mangle.descriptor.Ir2DescriptorManglerAdapter
import org.jetbrains.kotlin.backend.konan.descriptors.isForwardDeclarationModule
@@ -59,7 +60,7 @@ internal fun Context.psiToIr(
val stubGenerator = DeclarationStubGeneratorImpl(
moduleDescriptor, symbolTable,
generatorContext.irBuiltIns,
KonanManglerDesc
DescriptorByIdSignatureFinderImpl(moduleDescriptor, KonanManglerDesc),
)
val irBuiltInsOverDescriptors = generatorContext.irBuiltIns as IrBuiltInsOverDescriptors
val functionIrClassFactory: KonanIrAbstractDescriptorBasedFunctionFactory =
@@ -5,6 +5,7 @@
package org.jetbrains.kotlin.scripting.js
import org.jetbrains.kotlin.backend.common.serialization.DescriptorByIdSignatureFinderImpl
import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
import org.jetbrains.kotlin.cli.common.environment.setIdeaIoUseFallback
import org.jetbrains.kotlin.cli.common.messages.AnalyzerWithCompilerReport
@@ -17,8 +18,8 @@ import org.jetbrains.kotlin.config.languageVersionSettings
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
import org.jetbrains.kotlin.ir.backend.js.JsIrBackendContext
import org.jetbrains.kotlin.ir.backend.js.generateJsCode
import org.jetbrains.kotlin.ir.backend.js.lower.serialization.ir.JsManglerDesc
import org.jetbrains.kotlin.ir.backend.js.utils.NameTables
import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmDescriptorMangler
import org.jetbrains.kotlin.ir.declarations.IrModuleFragment
import org.jetbrains.kotlin.ir.declarations.IrScript
import org.jetbrains.kotlin.ir.symbols.IrScriptSymbol
@@ -74,9 +75,10 @@ class JsCoreScriptingCompiler(
override fun getPreviousScripts() = replCompilerState.history.map { it.item.scriptSymbol }
}
val mangler = JvmDescriptorMangler(null)
val psi2irContext = psi2ir.createGeneratorContext(module, bindingContext, symbolTable, generatorExtensions)
val providers = generateTypicalIrProviderList(module, psi2irContext.irBuiltIns, psi2irContext.symbolTable, mangler)
val providers = generateTypicalIrProviderList(
module, psi2irContext.irBuiltIns, psi2irContext.symbolTable, DescriptorByIdSignatureFinderImpl(module, JsManglerDesc)
)
val irModuleFragment = psi2ir.generateModuleFragment(psi2irContext, files, providers, emptyList(), null) // TODO: deserializer
val context = JsIrBackendContext(
@@ -95,7 +97,7 @@ class JsCoreScriptingCompiler(
irModuleFragment.descriptor,
psi2irContext.irBuiltIns,
psi2irContext.symbolTable,
mangler
DescriptorByIdSignatureFinderImpl(irModuleFragment.descriptor, JsManglerDesc)
)
).generateUnboundSymbolsAsDependencies()