FIR CLI: initialize module and dependencies
#KT-42624 Fixed
This commit is contained in:
committed by
Mikhail Glukhikh
parent
01ba1cded7
commit
4d28463f1a
+13
-1
@@ -50,6 +50,8 @@ import org.jetbrains.kotlin.codegen.KotlinCodegenFacade
|
||||
import org.jetbrains.kotlin.codegen.state.GenerationState
|
||||
import org.jetbrains.kotlin.codegen.state.GenerationStateEventCallback
|
||||
import org.jetbrains.kotlin.config.*
|
||||
import org.jetbrains.kotlin.container.get
|
||||
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
||||
import org.jetbrains.kotlin.diagnostics.*
|
||||
import org.jetbrains.kotlin.fileClasses.JvmFileClassUtil
|
||||
import org.jetbrains.kotlin.fir.FirPsiSourceElement
|
||||
@@ -73,10 +75,12 @@ import org.jetbrains.kotlin.platform.TargetPlatform
|
||||
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
|
||||
import org.jetbrains.kotlin.progress.ProgressIndicatorAndCompilationCanceledStatus
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
import org.jetbrains.kotlin.resolve.CompilerEnvironment
|
||||
import org.jetbrains.kotlin.resolve.PlatformDependentAnalyzerServices
|
||||
import org.jetbrains.kotlin.resolve.diagnostics.SimpleDiagnostics
|
||||
import org.jetbrains.kotlin.resolve.jvm.KotlinJavaPsiFacade
|
||||
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatformAnalyzerServices
|
||||
import org.jetbrains.kotlin.resolve.lazy.declarations.FileBasedDeclarationProviderFactory
|
||||
import org.jetbrains.kotlin.utils.newLinkedHashMapWithExpectedSize
|
||||
import java.io.File
|
||||
|
||||
@@ -377,9 +381,17 @@ object KotlinToJVMBytecodeCompiler {
|
||||
val dummyBindingContext = NoScopeRecordCliBindingTrace().bindingContext
|
||||
|
||||
val codegenFactory = JvmIrCodegenFactory(moduleConfiguration.get(CLIConfigurationKeys.PHASE_CONFIG) ?: PhaseConfig(jvmPhases))
|
||||
|
||||
// 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(
|
||||
environment.project, ClassBuilderFactories.BINARIES,
|
||||
moduleFragment.descriptor, dummyBindingContext, ktFiles,
|
||||
container.get<ModuleDescriptor>(), dummyBindingContext, ktFiles,
|
||||
moduleConfiguration
|
||||
).codegenFactory(
|
||||
codegenFactory
|
||||
|
||||
+21
-1
@@ -1,7 +1,7 @@
|
||||
// WITH_RUNTIME
|
||||
// KJS_WITH_FULL_RUNTIME
|
||||
|
||||
fun box(): String {
|
||||
fun foo(): String {
|
||||
val a = ArrayList<String>()
|
||||
a.add("OK")
|
||||
for (i in a.indices) {
|
||||
@@ -9,3 +9,23 @@ fun box(): String {
|
||||
}
|
||||
return "Fail"
|
||||
}
|
||||
|
||||
// KT-42642
|
||||
fun bar(): String {
|
||||
val a = ArrayList<String>()
|
||||
a.add("O")
|
||||
a.add("K")
|
||||
val map = mutableMapOf<String, String>().apply {
|
||||
for (i in a.indices step 2) {
|
||||
put(a[i].toLowerCase(), a[i])
|
||||
put(a[i + 1].toLowerCase(), a[i + 1])
|
||||
}
|
||||
}
|
||||
return map.values.joinToString(separator = "")
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
val r = foo()
|
||||
if (r != "OK") return r
|
||||
return bar()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user