JVM IR: remove outdated code in JvmIrCodegenFactory

This commit is contained in:
Alexander Udalov
2020-08-10 20:59:55 +02:00
parent b2d49e9615
commit 624204c7b4
3 changed files with 7 additions and 42 deletions
@@ -254,14 +254,14 @@ public class ClassFileFactory implements OutputFileCollection {
public PackageCodegen forPackage(@NotNull FqName fqName, @NotNull Collection<KtFile> files) { public PackageCodegen forPackage(@NotNull FqName fqName, @NotNull Collection<KtFile> files) {
assert !isDone : "Already done!"; assert !isDone : "Already done!";
registerSourceFiles(files); registerSourceFiles(files);
return state.getCodegenFactory().createPackageCodegen(state, files, fqName); return new PackageCodegenImpl(state, files, fqName);
} }
@NotNull @NotNull
public MultifileClassCodegen forMultifileClass(@NotNull FqName facadeFqName, @NotNull Collection<KtFile> files) { public MultifileClassCodegen forMultifileClass(@NotNull FqName facadeFqName, @NotNull Collection<KtFile> files) {
assert !isDone : "Already done!"; assert !isDone : "Already done!";
registerSourceFiles(files); registerSourceFiles(files);
return state.getCodegenFactory().createMultifileClassCodegen(state, files, facadeFqName); return new MultifileClassCodegenImpl(state, files, facadeFqName);
} }
private void registerSourceFiles(Collection<KtFile> files) { private void registerSourceFiles(Collection<KtFile> files) {
@@ -26,10 +26,6 @@ import org.jetbrains.kotlin.psi.KtFile
interface CodegenFactory { interface CodegenFactory {
fun generateModule(state: GenerationState, files: Collection<KtFile>) fun generateModule(state: GenerationState, files: Collection<KtFile>)
fun createPackageCodegen(state: GenerationState, files: Collection<KtFile>, fqName: FqName): PackageCodegen
fun createMultifileClassCodegen(state: GenerationState, files: Collection<KtFile>, fqName: FqName): MultifileClassCodegen
companion object { companion object {
fun doCheckCancelled(state: GenerationState) { fun doCheckCancelled(state: GenerationState) {
if (state.classBuilderMode.generateBodies) { if (state.classBuilderMode.generateBodies) {
@@ -49,8 +45,7 @@ object DefaultCodegenFactory : CodegenFactory {
if (fileClassInfo.withJvmMultifileClass) { if (fileClassInfo.withJvmMultifileClass) {
filesInMultifileClasses.putValue(fileClassInfo.facadeClassFqName, file) filesInMultifileClasses.putValue(fileClassInfo.facadeClassFqName, file)
} } else {
else {
filesInPackages.putValue(file.packageFqName, file) filesInPackages.putValue(file.packageFqName, file)
} }
} }
@@ -68,23 +63,17 @@ object DefaultCodegenFactory : CodegenFactory {
} }
} }
override fun createPackageCodegen(state: GenerationState, files: Collection<KtFile>, fqName: FqName) =
PackageCodegenImpl(state, files, fqName)
override fun createMultifileClassCodegen(state: GenerationState, files: Collection<KtFile>, fqName: FqName) =
MultifileClassCodegenImpl(state, files, fqName)
private fun generateMultifileClass(state: GenerationState, multifileClassFqName: FqName, files: Collection<KtFile>) { private fun generateMultifileClass(state: GenerationState, multifileClassFqName: FqName, files: Collection<KtFile>) {
state.factory.forMultifileClass(multifileClassFqName, files).generate() state.factory.forMultifileClass(multifileClassFqName, files).generate()
} }
fun generatePackage( fun generatePackage(
state: GenerationState, state: GenerationState,
packageFqName: FqName, packageFqName: FqName,
jetFiles: Collection<KtFile> ktFiles: Collection<KtFile>
) { ) {
// We do not really generate package class, but use old package fqName to identify package in module-info. // We do not really generate package class, but use old package fqName to identify package in module-info.
//FqName packageClassFqName = PackageClassUtils.getPackageClassFqName(packageFqName); //FqName packageClassFqName = PackageClassUtils.getPackageClassFqName(packageFqName);
state.factory.forPackage(packageFqName, jetFiles).generate() state.factory.forPackage(packageFqName, ktFiles).generate()
} }
} }
@@ -18,21 +18,15 @@ package org.jetbrains.kotlin.backend.jvm
import org.jetbrains.kotlin.backend.common.phaser.PhaseConfig import org.jetbrains.kotlin.backend.common.phaser.PhaseConfig
import org.jetbrains.kotlin.codegen.CodegenFactory import org.jetbrains.kotlin.codegen.CodegenFactory
import org.jetbrains.kotlin.codegen.MultifileClassCodegen
import org.jetbrains.kotlin.codegen.PackageCodegen
import org.jetbrains.kotlin.codegen.PackageCodegenImpl
import org.jetbrains.kotlin.codegen.state.GenerationState import org.jetbrains.kotlin.codegen.state.GenerationState
import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor
import org.jetbrains.kotlin.ir.declarations.IrModuleFragment import org.jetbrains.kotlin.ir.declarations.IrModuleFragment
import org.jetbrains.kotlin.ir.descriptors.IrFunctionFactory import org.jetbrains.kotlin.ir.descriptors.IrFunctionFactory
import org.jetbrains.kotlin.ir.util.SymbolTable import org.jetbrains.kotlin.ir.util.SymbolTable
import org.jetbrains.kotlin.ir.util.generateTypicalIrProviderList import org.jetbrains.kotlin.ir.util.generateTypicalIrProviderList
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.psi2ir.PsiSourceManager import org.jetbrains.kotlin.psi2ir.PsiSourceManager
class JvmIrCodegenFactory(private val phaseConfig: PhaseConfig) : CodegenFactory { class JvmIrCodegenFactory(private val phaseConfig: PhaseConfig) : CodegenFactory {
override fun generateModule(state: GenerationState, files: Collection<KtFile>) { override fun generateModule(state: GenerationState, files: Collection<KtFile>) {
JvmBackendFacade.doGenerateFiles(files, state, phaseConfig) JvmBackendFacade.doGenerateFiles(files, state, phaseConfig)
} }
@@ -54,22 +48,4 @@ class JvmIrCodegenFactory(private val phaseConfig: PhaseConfig) : CodegenFactory
state, irModuleFragment, symbolTable, sourceManager, phaseConfig, irProviders, extensions, serializerFactory state, irModuleFragment, symbolTable, sourceManager, phaseConfig, irProviders, extensions, serializerFactory
) )
} }
override fun createPackageCodegen(state: GenerationState, files: Collection<KtFile>, fqName: FqName): PackageCodegen {
val impl = PackageCodegenImpl(state, files, fqName)
return object : PackageCodegen {
override fun generate() {
JvmBackendFacade.doGenerateFiles(files, state, phaseConfig)
}
override fun getPackageFragment(): PackageFragmentDescriptor {
return impl.packageFragment
}
}
}
override fun createMultifileClassCodegen(state: GenerationState, files: Collection<KtFile>, fqName: FqName): MultifileClassCodegen {
TODO()
}
} }