diff --git a/idea/idea-gradle/tests/org/jetbrains/kotlin/idea/codeInsight/gradle/GradleConfiguratorTest.kt b/idea/idea-gradle/tests/org/jetbrains/kotlin/idea/codeInsight/gradle/GradleConfiguratorTest.kt index c455de5c839..ee0820be00d 100644 --- a/idea/idea-gradle/tests/org/jetbrains/kotlin/idea/codeInsight/gradle/GradleConfiguratorTest.kt +++ b/idea/idea-gradle/tests/org/jetbrains/kotlin/idea/codeInsight/gradle/GradleConfiguratorTest.kt @@ -594,6 +594,21 @@ class GradleConfiguratorTest : GradleImportingTestCase() { } } + @Test + fun testEnableFeatureSupportGSKWithoutFoundKotlinVersion() { + val files = importProjectFromTestData() + + runInEdtAndWait { + myTestFixture.project.executeWriteCommand("") { + KotlinWithGradleConfigurator.changeFeatureConfiguration( + myTestFixture.module, LanguageFeature.InlineClasses, LanguageFeature.State.ENABLED, false + ) + } + + checkFiles(files) + } + } + @TargetVersions("4.7+") @Test fun testEnableFeatureSupportToExistentArgumentsWithXFlag() = testEnableFeatureSupportToExistentArguments() diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/cli/common/arguments/CliArgumentStringBuilder.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/cli/common/arguments/CliArgumentStringBuilder.kt index 41485cd59f6..563b7af6cfc 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/cli/common/arguments/CliArgumentStringBuilder.kt +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/cli/common/arguments/CliArgumentStringBuilder.kt @@ -41,12 +41,12 @@ object CliArgumentStringBuilder { val dedicatedFlag = dedicatedFlagInfo?.run { val (xFlag, xFlagSinceVersion) = this - // TODO: replace to returning xFlag in 1.4 (behaviour for fallback) - if (kotlinVersion == null) return@run null + if (kotlinVersion == null) return@run xFlag - val isAtLeastSpecifiedVersion = versionRegex.find(kotlinVersion)?.destructured?.let { (major, minor, patch) -> + val parsedVersion = versionRegex.find(kotlinVersion) ?: return@run xFlag + val isAtLeastSpecifiedVersion = parsedVersion.destructured.let { (major, minor, patch) -> KotlinVersion(major.toInt(), minor.toInt(), patch.toInt()) >= xFlagSinceVersion - } == true + } if (isAtLeastSpecifiedVersion) xFlag else null } diff --git a/idea/idea-maven/testData/languageFeature/enableInlineClasses/pom.xml.after b/idea/idea-maven/testData/languageFeature/enableInlineClasses/pom.xml.after index 8643092295f..de4556667b8 100644 --- a/idea/idea-maven/testData/languageFeature/enableInlineClasses/pom.xml.after +++ b/idea/idea-maven/testData/languageFeature/enableInlineClasses/pom.xml.after @@ -50,7 +50,7 @@ - -XXLanguage:+InlineClasses + -Xinline-classes diff --git a/idea/testData/gradle/configurator/enableFeatureSupportGSKWithoutFoundKotlinVersion/build.gradle.kts b/idea/testData/gradle/configurator/enableFeatureSupportGSKWithoutFoundKotlinVersion/build.gradle.kts new file mode 100644 index 00000000000..c26e8ff7959 --- /dev/null +++ b/idea/testData/gradle/configurator/enableFeatureSupportGSKWithoutFoundKotlinVersion/build.gradle.kts @@ -0,0 +1,8 @@ +buildscript { + repositories { + jcenter() + mavenCentral() + } +} + +apply(plugin ="kotlin") diff --git a/idea/testData/gradle/configurator/enableFeatureSupportGSKWithoutFoundKotlinVersion/build.gradle.kts.after b/idea/testData/gradle/configurator/enableFeatureSupportGSKWithoutFoundKotlinVersion/build.gradle.kts.after new file mode 100644 index 00000000000..a9ec561dca5 --- /dev/null +++ b/idea/testData/gradle/configurator/enableFeatureSupportGSKWithoutFoundKotlinVersion/build.gradle.kts.after @@ -0,0 +1,14 @@ +import org.jetbrains.kotlin.gradle.tasks.KotlinCompile + +buildscript { + repositories { + jcenter() + mavenCentral() + } +} + +apply(plugin ="kotlin") +val compileKotlin: KotlinCompile by tasks +compileKotlin.kotlinOptions { + freeCompilerArgs = listOf("-Xinline-classes") +} \ No newline at end of file