diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmBackendFacade.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmBackendFacade.kt index 97feca4e0e6..ca7192f294f 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmBackendFacade.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmBackendFacade.kt @@ -30,9 +30,9 @@ object JvmBackendFacade { errorHandler: CompilationErrorHandler, phaseConfig: PhaseConfig ) { + val extensions = JvmGeneratorExtensions() val psi2ir = Psi2IrTranslator(state.languageVersionSettings, mangler = JvmMangler) - val psi2irContext = psi2ir.createGeneratorContext(state.module, state.bindingContext, extensions = JvmGeneratorExtensions) - val extensions = JvmStubGeneratorExtensions() + val psi2irContext = psi2ir.createGeneratorContext(state.module, state.bindingContext, extensions = extensions) for (extension in IrGenerationExtension.getInstances(state.project)) { psi2ir.addPostprocessingStep { module -> @@ -67,7 +67,7 @@ object JvmBackendFacade { symbolTable: SymbolTable, sourceManager: PsiSourceManager, phaseConfig: PhaseConfig, - extensions: JvmStubGeneratorExtensions = JvmStubGeneratorExtensions() + extensions: JvmGeneratorExtensions ) { val context = JvmBackendContext( state, sourceManager, irModuleFragment.irBuiltins, irModuleFragment, symbolTable, phaseConfig, extensions.classNameOverride diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmGeneratorExtensions.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmGeneratorExtensions.kt index 70ad6f10fa8..4386d8102bd 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmGeneratorExtensions.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmGeneratorExtensions.kt @@ -13,7 +13,6 @@ import org.jetbrains.kotlin.descriptors.Visibility import org.jetbrains.kotlin.ir.builders.declarations.buildClass import org.jetbrains.kotlin.ir.declarations.IrClass import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin -import org.jetbrains.kotlin.ir.util.StubGeneratorExtensions import org.jetbrains.kotlin.load.java.descriptors.JavaCallableMemberDescriptor import org.jetbrains.kotlin.load.java.descriptors.JavaClassDescriptor import org.jetbrains.kotlin.load.java.sam.SamAdapterDescriptor @@ -29,7 +28,9 @@ import org.jetbrains.kotlin.types.KotlinType import org.jetbrains.kotlin.types.TypeSubstitutor import org.jetbrains.kotlin.types.Variance -object JvmGeneratorExtensions : GeneratorExtensions() { +class JvmGeneratorExtensions(private val generateFacades: Boolean = true) : GeneratorExtensions() { + val classNameOverride = mutableMapOf() + override val samConversion: SamConversion get() = JvmSamConversion @@ -66,13 +67,6 @@ object JvmGeneratorExtensions : GeneratorExtensions() { else null - override fun isPropertyWithPlatformField(descriptor: PropertyDescriptor): Boolean = - descriptor.hasJvmFieldAnnotation() -} - -class JvmStubGeneratorExtensions : StubGeneratorExtensions() { - val classNameOverride = mutableMapOf() - override fun computeExternalDeclarationOrigin(descriptor: DeclarationDescriptor): IrDeclarationOrigin? = if (descriptor is JavaCallableMemberDescriptor) IrDeclarationOrigin.IR_EXTERNAL_JAVA_DECLARATION_STUB @@ -80,6 +74,7 @@ class JvmStubGeneratorExtensions : StubGeneratorExtensions() { IrDeclarationOrigin.IR_EXTERNAL_DECLARATION_STUB override fun generateFacadeClass(source: DeserializedContainerSource): IrClass? { + if (!generateFacades) return null val jvmPackagePartSource = source as? JvmPackagePartSource ?: return null val facadeName = jvmPackagePartSource.facadeClassName ?: jvmPackagePartSource.className return buildClass { diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmIrCodegenFactory.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmIrCodegenFactory.kt index ea59a12e4e2..2d1806a148d 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmIrCodegenFactory.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmIrCodegenFactory.kt @@ -41,14 +41,12 @@ class JvmIrCodegenFactory(private val phaseConfig: PhaseConfig) : CodegenFactory symbolTable: SymbolTable, sourceManager: PsiSourceManager ) { - val stubGeneratorExtensions = JvmStubGeneratorExtensions() + val extensions = JvmGeneratorExtensions() val irProviders = generateTypicalIrProviderList( - irModuleFragment.descriptor, irModuleFragment.irBuiltins, symbolTable, extensions = stubGeneratorExtensions + irModuleFragment.descriptor, irModuleFragment.irBuiltins, symbolTable, extensions = extensions ) ExternalDependenciesGenerator(symbolTable, irProviders).generateUnboundSymbolsAsDependencies() - JvmBackendFacade.doGenerateFilesInternal( - state, errorHandler, irModuleFragment, symbolTable, sourceManager, phaseConfig, stubGeneratorExtensions - ) + JvmBackendFacade.doGenerateFilesInternal(state, errorHandler, irModuleFragment, symbolTable, sourceManager, phaseConfig, extensions) } override fun createPackageCodegen(state: GenerationState, files: Collection, fqName: FqName): PackageCodegen { diff --git a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/Psi2IrTranslator.kt b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/Psi2IrTranslator.kt index 65ec1938c6f..d1c9d47faf5 100644 --- a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/Psi2IrTranslator.kt +++ b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/Psi2IrTranslator.kt @@ -48,17 +48,13 @@ class Psi2IrTranslator( moduleDescriptor: ModuleDescriptor, ktFiles: Collection, bindingContext: BindingContext, - generatorExtensions: GeneratorExtensions, - stubGeneratorExtensions: StubGeneratorExtensions + generatorExtensions: GeneratorExtensions ): IrModuleFragment { val context = createGeneratorContext(moduleDescriptor, bindingContext, extensions = generatorExtensions) - return generateModuleFragment( - context, ktFiles, - irProviders = generateTypicalIrProviderList( - moduleDescriptor, context.irBuiltIns, context.symbolTable, - extensions = stubGeneratorExtensions - ) + val irProviders = generateTypicalIrProviderList( + moduleDescriptor, context.irBuiltIns, context.symbolTable, extensions = generatorExtensions ) + return generateModuleFragment(context, ktFiles, irProviders) } fun createGeneratorContext( diff --git a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/GeneratorExtensions.kt b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/GeneratorExtensions.kt index c137036e6e5..31010ba2cc2 100644 --- a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/GeneratorExtensions.kt +++ b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/GeneratorExtensions.kt @@ -8,9 +8,10 @@ package org.jetbrains.kotlin.psi2ir.generators import org.jetbrains.kotlin.descriptors.CallableDescriptor import org.jetbrains.kotlin.descriptors.PropertyDescriptor import org.jetbrains.kotlin.descriptors.Visibility +import org.jetbrains.kotlin.ir.util.StubGeneratorExtensions import org.jetbrains.kotlin.types.KotlinType -open class GeneratorExtensions { +open class GeneratorExtensions : StubGeneratorExtensions() { open val samConversion: SamConversion get() = SamConversion @@ -29,6 +30,4 @@ open class GeneratorExtensions { } open fun computeFieldVisibility(descriptor: PropertyDescriptor): Visibility? = null - - open fun isPropertyWithPlatformField(descriptor: PropertyDescriptor): Boolean = false } diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/ir/AbstractIrGeneratorTestCase.kt b/compiler/tests-common/tests/org/jetbrains/kotlin/ir/AbstractIrGeneratorTestCase.kt index 6dc9c7df06c..2a9176e9e10 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/ir/AbstractIrGeneratorTestCase.kt +++ b/compiler/tests-common/tests/org/jetbrains/kotlin/ir/AbstractIrGeneratorTestCase.kt @@ -18,17 +18,13 @@ package org.jetbrains.kotlin.ir import org.jetbrains.kotlin.analyzer.AnalysisResult import org.jetbrains.kotlin.backend.jvm.JvmGeneratorExtensions -import org.jetbrains.kotlin.backend.jvm.JvmStubGeneratorExtensions import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment import org.jetbrains.kotlin.codegen.CodegenTestCase import org.jetbrains.kotlin.config.languageVersionSettings -import org.jetbrains.kotlin.descriptors.DeclarationDescriptor import org.jetbrains.kotlin.ir.backend.js.JsGeneratorExtensions -import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin import org.jetbrains.kotlin.ir.declarations.IrFile import org.jetbrains.kotlin.ir.declarations.IrModuleFragment -import org.jetbrains.kotlin.ir.util.StubGeneratorExtensions import org.jetbrains.kotlin.js.analyze.TopDownAnalyzerFacadeForJS import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.psi2ir.Psi2IrConfiguration @@ -115,39 +111,30 @@ abstract class AbstractIrGeneratorTestCase : CodegenTestCase() { moduleDescriptors = emptyList(), friendModuleDescriptors = emptyList() ), - psi2ir, ktFilesToAnalyze, JsGeneratorExtensions(), StubGeneratorExtensions.EMPTY + psi2ir, ktFilesToAnalyze, JsGeneratorExtensions() ) fun generateIrModuleWithJvmResolve( ktFilesToAnalyze: List, environment: KotlinCoreEnvironment, psi2ir: Psi2IrTranslator ): IrModuleFragment = generateIrModule( - JvmResolveUtil.analyze(ktFilesToAnalyze, environment), psi2ir, ktFilesToAnalyze, JvmGeneratorExtensions, - IrTestStubGeneratorExtensions + JvmResolveUtil.analyze(ktFilesToAnalyze, environment), psi2ir, ktFilesToAnalyze, + JvmGeneratorExtensions(generateFacades = false) ) private fun generateIrModule( analysisResult: AnalysisResult, psi2ir: Psi2IrTranslator, ktFilesToAnalyze: List, - generatorExtensions: GeneratorExtensions, - stubGeneratorExtensions: StubGeneratorExtensions + generatorExtensions: GeneratorExtensions ): IrModuleFragment { if (!psi2ir.configuration.ignoreErrors) { analysisResult.throwIfError() AnalyzingUtils.throwExceptionOnErrors(analysisResult.bindingContext) } return psi2ir.generateModule( - analysisResult.moduleDescriptor, ktFilesToAnalyze, analysisResult.bindingContext, generatorExtensions, - stubGeneratorExtensions + analysisResult.moduleDescriptor, ktFilesToAnalyze, analysisResult.bindingContext, generatorExtensions ) } } - - private object IrTestStubGeneratorExtensions : StubGeneratorExtensions() { - private val jvm = JvmStubGeneratorExtensions() - - override fun computeExternalDeclarationOrigin(descriptor: DeclarationDescriptor): IrDeclarationOrigin? = - jvm.computeExternalDeclarationOrigin(descriptor) - } }