FIR: Switch to FIR-based IrBuiltIns in FIR compilation
get rid of using old FE for builtins on FIR compilation
This commit is contained in:
committed by
TeamCityServer
parent
3b20ec46ef
commit
01f26ec699
+11
-9
@@ -31,6 +31,7 @@ import org.jetbrains.kotlin.config.CommonConfigurationKeys
|
|||||||
import org.jetbrains.kotlin.config.JVMConfigurationKeys
|
import org.jetbrains.kotlin.config.JVMConfigurationKeys
|
||||||
import org.jetbrains.kotlin.config.languageVersionSettings
|
import org.jetbrains.kotlin.config.languageVersionSettings
|
||||||
import org.jetbrains.kotlin.container.get
|
import org.jetbrains.kotlin.container.get
|
||||||
|
import org.jetbrains.kotlin.diagnostics.Severity
|
||||||
import org.jetbrains.kotlin.fir.analysis.FirAnalyzerFacade
|
import org.jetbrains.kotlin.fir.analysis.FirAnalyzerFacade
|
||||||
import org.jetbrains.kotlin.fir.backend.jvm.FirJvmBackendClassResolver
|
import org.jetbrains.kotlin.fir.backend.jvm.FirJvmBackendClassResolver
|
||||||
import org.jetbrains.kotlin.fir.backend.jvm.FirJvmBackendExtension
|
import org.jetbrains.kotlin.fir.backend.jvm.FirJvmBackendExtension
|
||||||
@@ -46,10 +47,18 @@ import org.jetbrains.kotlin.name.Name
|
|||||||
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
|
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
|
||||||
import org.jetbrains.kotlin.progress.ProgressIndicatorAndCompilationCanceledStatus
|
import org.jetbrains.kotlin.progress.ProgressIndicatorAndCompilationCanceledStatus
|
||||||
import org.jetbrains.kotlin.resolve.CompilerEnvironment
|
import org.jetbrains.kotlin.resolve.CompilerEnvironment
|
||||||
|
import org.jetbrains.kotlin.resolve.diagnostics.SimpleGenericDiagnostics
|
||||||
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatformAnalyzerServices
|
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatformAnalyzerServices
|
||||||
import org.jetbrains.kotlin.resolve.lazy.declarations.FileBasedDeclarationProviderFactory
|
|
||||||
import org.jetbrains.kotlin.utils.newLinkedHashMapWithExpectedSize
|
import org.jetbrains.kotlin.utils.newLinkedHashMapWithExpectedSize
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
import kotlin.collections.List
|
||||||
|
import kotlin.collections.any
|
||||||
|
import kotlin.collections.emptyList
|
||||||
|
import kotlin.collections.flatten
|
||||||
|
import kotlin.collections.fold
|
||||||
|
import kotlin.collections.isNotEmpty
|
||||||
|
import kotlin.collections.map
|
||||||
|
import kotlin.collections.set
|
||||||
|
|
||||||
object FirKotlinToJvmBytecodeCompiler {
|
object FirKotlinToJvmBytecodeCompiler {
|
||||||
fun compileModulesUsingFrontendIR(
|
fun compileModulesUsingFrontendIR(
|
||||||
@@ -171,16 +180,9 @@ object FirKotlinToJvmBytecodeCompiler {
|
|||||||
jvmGeneratorExtensions = extensions
|
jvmGeneratorExtensions = extensions
|
||||||
)
|
)
|
||||||
|
|
||||||
// Create and initialize the module and its dependencies
|
|
||||||
val container = TopDownAnalyzerFacadeForJVM.createContainer(
|
|
||||||
project, ktFiles, NoScopeRecordCliBindingTrace(), environment.configuration, environment::createPackagePartProvider,
|
|
||||||
::FileBasedDeclarationProviderFactory, CompilerEnvironment,
|
|
||||||
TopDownAnalyzerFacadeForJVM.newModuleSearchScope(project, ktFiles), emptyList()
|
|
||||||
)
|
|
||||||
|
|
||||||
val generationState = GenerationState.Builder(
|
val generationState = GenerationState.Builder(
|
||||||
environment.project, ClassBuilderFactories.BINARIES,
|
environment.project, ClassBuilderFactories.BINARIES,
|
||||||
container.get(), dummyBindingContext, ktFiles,
|
moduleFragment.descriptor, dummyBindingContext, ktFiles,
|
||||||
moduleConfiguration
|
moduleConfiguration
|
||||||
).codegenFactory(
|
).codegenFactory(
|
||||||
codegenFactory
|
codegenFactory
|
||||||
|
|||||||
+3
-13
@@ -30,8 +30,6 @@ import org.jetbrains.kotlin.config.CommonConfigurationKeys
|
|||||||
import org.jetbrains.kotlin.config.CompilerConfiguration
|
import org.jetbrains.kotlin.config.CompilerConfiguration
|
||||||
import org.jetbrains.kotlin.config.JVMConfigurationKeys
|
import org.jetbrains.kotlin.config.JVMConfigurationKeys
|
||||||
import org.jetbrains.kotlin.config.languageVersionSettings
|
import org.jetbrains.kotlin.config.languageVersionSettings
|
||||||
import org.jetbrains.kotlin.container.get
|
|
||||||
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
|
||||||
import org.jetbrains.kotlin.fir.analysis.FirAnalyzerFacade
|
import org.jetbrains.kotlin.fir.analysis.FirAnalyzerFacade
|
||||||
import org.jetbrains.kotlin.fir.backend.jvm.FirJvmBackendClassResolver
|
import org.jetbrains.kotlin.fir.backend.jvm.FirJvmBackendClassResolver
|
||||||
import org.jetbrains.kotlin.fir.backend.jvm.FirJvmBackendExtension
|
import org.jetbrains.kotlin.fir.backend.jvm.FirJvmBackendExtension
|
||||||
@@ -41,9 +39,7 @@ import org.jetbrains.kotlin.load.kotlin.PackagePartProvider
|
|||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
import org.jetbrains.kotlin.resolve.AnalyzingUtils
|
import org.jetbrains.kotlin.resolve.AnalyzingUtils
|
||||||
import org.jetbrains.kotlin.resolve.BindingTrace
|
import org.jetbrains.kotlin.resolve.BindingTrace
|
||||||
import org.jetbrains.kotlin.resolve.CompilerEnvironment
|
|
||||||
import org.jetbrains.kotlin.resolve.lazy.JvmResolveUtil
|
import org.jetbrains.kotlin.resolve.lazy.JvmResolveUtil
|
||||||
import org.jetbrains.kotlin.resolve.lazy.declarations.FileBasedDeclarationProviderFactory
|
|
||||||
import org.jetbrains.kotlin.util.DummyLogger
|
import org.jetbrains.kotlin.util.DummyLogger
|
||||||
import org.jetbrains.kotlin.util.Logger
|
import org.jetbrains.kotlin.util.Logger
|
||||||
import java.io.File
|
import java.io.File
|
||||||
@@ -80,7 +76,7 @@ object GenerationUtils {
|
|||||||
): GenerationState {
|
): GenerationState {
|
||||||
val project = files.first().project
|
val project = files.first().project
|
||||||
val state = if (configuration.getBoolean(CommonConfigurationKeys.USE_FIR)) {
|
val state = if (configuration.getBoolean(CommonConfigurationKeys.USE_FIR)) {
|
||||||
compileFilesUsingFrontendIR(project, files, configuration, classBuilderFactory, packagePartProvider, trace)
|
compileFilesUsingFrontendIR(project, files, configuration, classBuilderFactory, packagePartProvider)
|
||||||
} else {
|
} else {
|
||||||
compileFilesUsingStandardMode(project, files, configuration, classBuilderFactory, packagePartProvider, trace)
|
compileFilesUsingStandardMode(project, files, configuration, classBuilderFactory, packagePartProvider, trace)
|
||||||
}
|
}
|
||||||
@@ -101,8 +97,7 @@ object GenerationUtils {
|
|||||||
files: List<KtFile>,
|
files: List<KtFile>,
|
||||||
configuration: CompilerConfiguration,
|
configuration: CompilerConfiguration,
|
||||||
classBuilderFactory: ClassBuilderFactory,
|
classBuilderFactory: ClassBuilderFactory,
|
||||||
packagePartProvider: (GlobalSearchScope) -> PackagePartProvider,
|
packagePartProvider: (GlobalSearchScope) -> PackagePartProvider
|
||||||
trace: BindingTrace
|
|
||||||
): GenerationState {
|
): GenerationState {
|
||||||
PsiElementFinder.EP.getPoint(project).unregisterExtension(JavaElementFinder::class.java)
|
PsiElementFinder.EP.getPoint(project).unregisterExtension(JavaElementFinder::class.java)
|
||||||
|
|
||||||
@@ -123,13 +118,8 @@ object GenerationUtils {
|
|||||||
jvmGeneratorExtensions = extensions
|
jvmGeneratorExtensions = extensions
|
||||||
)
|
)
|
||||||
|
|
||||||
// Create and initialize the test module and its dependencies
|
|
||||||
val container = TopDownAnalyzerFacadeForJVM.createContainer(
|
|
||||||
project, files, trace, configuration, packagePartProvider, ::FileBasedDeclarationProviderFactory, CompilerEnvironment,
|
|
||||||
TopDownAnalyzerFacadeForJVM.newModuleSearchScope(project, files), emptyList()
|
|
||||||
)
|
|
||||||
val generationState = GenerationState.Builder(
|
val generationState = GenerationState.Builder(
|
||||||
project, classBuilderFactory, container.get<ModuleDescriptor>(), dummyBindingContext, files, configuration
|
project, classBuilderFactory, moduleFragment.descriptor, dummyBindingContext, files, configuration
|
||||||
).codegenFactory(
|
).codegenFactory(
|
||||||
codegenFactory
|
codegenFactory
|
||||||
).isIrBackend(
|
).isIrBackend(
|
||||||
|
|||||||
Reference in New Issue
Block a user