From bf23b39d76f9b0be0e239eea2a86b5c19eda7d8b Mon Sep 17 00:00:00 2001 From: Victor Petukhov Date: Mon, 17 Feb 2020 18:17:11 +0300 Subject: [PATCH] Add using `-Xinline-classes` by default in IDE intentions ^KT-34209 Fixed --- .../codeInsight/gradle/GradleConfiguratorTest.kt | 15 +++++++++++++++ .../common/arguments/CliArgumentStringBuilder.kt | 8 ++++---- .../enableInlineClasses/pom.xml.after | 2 +- .../build.gradle.kts | 8 ++++++++ .../build.gradle.kts.after | 14 ++++++++++++++ 5 files changed, 42 insertions(+), 5 deletions(-) create mode 100644 idea/testData/gradle/configurator/enableFeatureSupportGSKWithoutFoundKotlinVersion/build.gradle.kts create mode 100644 idea/testData/gradle/configurator/enableFeatureSupportGSKWithoutFoundKotlinVersion/build.gradle.kts.after 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