Use language version settings to enable K2
useFIR flag is deprecated, and K2 is currently controlled by language settings instead. (https://kotlinlang.org/docs/whatsnew1820.html#how-to-enable-the-kotlin-k2-compiler)
This CL updates our test infra and IR lowering to rely on that parameter instead.
Test: existing tests
Change-Id: Ifda652ca3d812f141ea2a65018263ffb6fcdb3f8
diff --git a/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/AbstractCompilerTest.kt b/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/AbstractCompilerTest.kt
index 69c3faf..af87416 100644
--- a/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/AbstractCompilerTest.kt
+++ b/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/AbstractCompilerTest.kt
@@ -29,9 +29,12 @@
import org.jetbrains.kotlin.codegen.GeneratedClassLoader
import org.jetbrains.kotlin.compiler.plugin.ExperimentalCompilerApi
import org.jetbrains.kotlin.compiler.plugin.registerExtensionsForTest
-import org.jetbrains.kotlin.config.CommonConfigurationKeys
+import org.jetbrains.kotlin.config.ApiVersion
import org.jetbrains.kotlin.config.CompilerConfiguration
import org.jetbrains.kotlin.config.JVMConfigurationKeys
+import org.jetbrains.kotlin.config.LanguageVersion
+import org.jetbrains.kotlin.config.LanguageVersionSettingsImpl
+import org.jetbrains.kotlin.config.languageVersionSettings
import org.jetbrains.kotlin.ir.declarations.IrModuleFragment
import org.junit.After
import org.junit.BeforeClass
@@ -112,8 +115,13 @@
) = KotlinCompilerFacade.create(
testRootDisposable,
updateConfiguration = {
+ val languageVersion =
+ if (useFir) LanguageVersion.KOTLIN_2_0 else LanguageVersion.KOTLIN_1_9
+ languageVersionSettings = LanguageVersionSettingsImpl(
+ languageVersion,
+ ApiVersion.createByLanguageVersion(languageVersion),
+ )
updateConfiguration()
- put(CommonConfigurationKeys.USE_FIR, useFir)
addJvmClasspathRoots(additionalPaths)
addJvmClasspathRoots(defaultClassPathRoots)
if (!getBoolean(JVMConfigurationKeys.NO_JDK) &&
diff --git a/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/analysis/ComposeMultiplatformCheckerTests.kt b/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/analysis/ComposeMultiplatformCheckerTests.kt
index 8b1083e..b8fae4d 100644
--- a/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/analysis/ComposeMultiplatformCheckerTests.kt
+++ b/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/analysis/ComposeMultiplatformCheckerTests.kt
@@ -17,17 +17,21 @@
package androidx.compose.compiler.plugins.kotlin.analysis
import androidx.compose.compiler.plugins.kotlin.AbstractComposeDiagnosticsTest
-import org.jetbrains.kotlin.cli.common.arguments.K2JVMCompilerArguments
-import org.jetbrains.kotlin.cli.common.setupLanguageVersionSettings
import org.jetbrains.kotlin.config.CompilerConfiguration
+import org.jetbrains.kotlin.config.LanguageFeature
+import org.jetbrains.kotlin.config.LanguageVersionSettingsImpl
+import org.jetbrains.kotlin.config.languageVersionSettings
import org.junit.Test
class ComposeMultiplatformCheckerTests(useFir: Boolean) : AbstractComposeDiagnosticsTest(useFir) {
override fun CompilerConfiguration.updateConfiguration() {
- setupLanguageVersionSettings(K2JVMCompilerArguments().apply {
- // enabling multiPlatform to use expect/actual declarations
- multiPlatform = true
- })
+ languageVersionSettings = LanguageVersionSettingsImpl(
+ languageVersionSettings.languageVersion,
+ languageVersionSettings.apiVersion,
+ specificFeatures = hashMapOf(
+ LanguageFeature.MultiPlatformProjects to LanguageFeature.State.ENABLED
+ )
+ )
}
@Test
diff --git a/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/facade/KotlinCompilerFacade.kt b/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/facade/KotlinCompilerFacade.kt
index 9d52ad0..a09b001 100644
--- a/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/facade/KotlinCompilerFacade.kt
+++ b/compose/compiler/compiler-hosted/integration-tests/src/test/java/androidx/compose/compiler/plugins/kotlin/facade/KotlinCompilerFacade.kt
@@ -38,6 +38,7 @@
import org.jetbrains.kotlin.config.CompilerConfiguration
import org.jetbrains.kotlin.config.JVMConfigurationKeys
import org.jetbrains.kotlin.config.JvmTarget
+import org.jetbrains.kotlin.config.languageVersionSettings
import org.jetbrains.kotlin.idea.KotlinLanguage
import org.jetbrains.kotlin.ir.declarations.IrModuleFragment
import org.jetbrains.kotlin.ir.util.IrMessageLogger
@@ -126,7 +127,7 @@
environment.project.registerExtensions(configuration)
- return if (configuration.getBoolean(CommonConfigurationKeys.USE_FIR)) {
+ return if (configuration.languageVersionSettings.languageVersion.usesK2) {
K2CompilerFacade(environment)
} else {
K1CompilerFacade(environment)
diff --git a/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/ComposePlugin.kt b/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/ComposePlugin.kt
index 00be1dc..07ea0ae 100644
--- a/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/ComposePlugin.kt
+++ b/compose/compiler/compiler-hosted/src/main/java/androidx/compose/compiler/plugins/kotlin/ComposePlugin.kt
@@ -32,11 +32,11 @@
import org.jetbrains.kotlin.compiler.plugin.CommandLineProcessor
import org.jetbrains.kotlin.compiler.plugin.CompilerPluginRegistrar
import org.jetbrains.kotlin.compiler.plugin.ExperimentalCompilerApi
-import org.jetbrains.kotlin.config.CommonConfigurationKeys
import org.jetbrains.kotlin.config.CompilerConfiguration
import org.jetbrains.kotlin.config.CompilerConfigurationKey
import org.jetbrains.kotlin.config.JVMConfigurationKeys
import org.jetbrains.kotlin.config.KotlinCompilerVersion
+import org.jetbrains.kotlin.config.languageVersionSettings
import org.jetbrains.kotlin.extensions.StorageComponentContainerContributor
import org.jetbrains.kotlin.extensions.internal.TypeResolutionInterceptor
import org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrarAdapter
@@ -337,9 +337,7 @@
val validateIr = configuration.getBoolean(
JVMConfigurationKeys.VALIDATE_IR
)
- val useK2 = configuration.getBoolean(
- CommonConfigurationKeys.USE_FIR
- )
+ val useK2 = configuration.languageVersionSettings.languageVersion.usesK2
return ComposeIrGenerationExtension(
liveLiteralsEnabled = liveLiteralsEnabled,