From 94469827ba68160d57b4fefb78508702ba7309b6 Mon Sep 17 00:00:00 2001 From: "victor.petukhov" Date: Wed, 24 Jul 2019 11:15:47 +0300 Subject: [PATCH] Use new `-Xinline-classes` compiler flag in the corresponding IDEA intention --- .../GroovyBuildScriptManipulator.kt | 12 +++- .../KotlinBuildScriptManipulator.kt | 63 ++++++++++++++++++- .../GradleConfiguratorPlatformSpecificTest.kt | 4 ++ .../gradle/GradleConfiguratorTest.kt | 37 +++++++++++ .../arguments/CliArgumentStringBuilder.kt | 52 ++++++++++++--- .../KotlinWithLibraryConfigurator.kt | 9 ++- .../ChangeGeneralLanguageFeatureSupportFix.kt | 10 ++- .../jetbrains/kotlin/idea/maven/PomFile.kt | 2 +- .../MavenUpdateConfigurationQuickFixTest.kt | 5 ++ .../enableInlineClassesWithXFlag/pom.xml | 56 +++++++++++++++++ .../pom.xml.after | 61 ++++++++++++++++++ .../enableInlineClassesWithXFlag/src.kt | 1 + .../build.gradle.kts | 15 +++++ .../build.gradle.kts.after | 15 +++++ .../settings.gradle.kts | 8 +++ .../build.gradle | 24 +++++++ .../build.gradle.after | 24 +++++++ .../build.gradle.kts | 7 +++ .../build.gradle.kts.after | 13 ++++ .../settings.gradle.kts | 8 +++ .../build.gradle.kts | 15 +++++ .../build.gradle.kts.after | 21 +++++++ .../build.gradle | 19 ++++++ .../build.gradle.after | 24 +++++++ .../build.gradle.kts | 8 +++ .../build.gradle.kts.after | 14 +++++ .../settings.gradle.kts | 8 +++ .../build.gradle.kts | 8 +++ .../build.gradle.kts.after | 14 +++++ .../settings.gradle.kts | 8 +++ .../build.gradle.kts | 12 ++++ .../build.gradle.kts.after | 18 ++++++ .../build.gradle | 29 +++++++++ .../build.gradle.after | 36 +++++++++++ .../build.gradle | 32 ++++++++++ .../build.gradle.after | 35 +++++++++++ .../settings.gradle | 7 +++ .../build.gradle | 24 +++++++ .../build.gradle.after | 25 ++++++++ .../build.gradle | 19 ++++++ .../build.gradle.after | 24 +++++++ 41 files changed, 811 insertions(+), 15 deletions(-) create mode 100644 idea/idea-maven/testData/languageFeature/enableInlineClassesWithXFlag/pom.xml create mode 100644 idea/idea-maven/testData/languageFeature/enableInlineClassesWithXFlag/pom.xml.after create mode 100644 idea/idea-maven/testData/languageFeature/enableInlineClassesWithXFlag/src.kt create mode 100644 idea/testData/gradle/configurator/changeFeatureSupportGSKWithXFlag/build.gradle.kts create mode 100644 idea/testData/gradle/configurator/changeFeatureSupportGSKWithXFlag/build.gradle.kts.after create mode 100644 idea/testData/gradle/configurator/changeFeatureSupportGSKWithXFlag/settings.gradle.kts create mode 100644 idea/testData/gradle/configurator/changeFeatureSupportWithXFlag/build.gradle create mode 100644 idea/testData/gradle/configurator/changeFeatureSupportWithXFlag/build.gradle.after create mode 100644 idea/testData/gradle/configurator/disableFeatureSupportGSKWithXFlag/build.gradle.kts create mode 100644 idea/testData/gradle/configurator/disableFeatureSupportGSKWithXFlag/build.gradle.kts.after create mode 100644 idea/testData/gradle/configurator/disableFeatureSupportGSKWithXFlag/settings.gradle.kts create mode 100644 idea/testData/gradle/configurator/disableFeatureSupportMultiplatformWithXFlag/build.gradle.kts create mode 100644 idea/testData/gradle/configurator/disableFeatureSupportMultiplatformWithXFlag/build.gradle.kts.after create mode 100644 idea/testData/gradle/configurator/disableFeatureSupportWithXFlag/build.gradle create mode 100644 idea/testData/gradle/configurator/disableFeatureSupportWithXFlag/build.gradle.after create mode 100644 idea/testData/gradle/configurator/enableFeatureSupportGSKWithNotInfixVersionCallAndXFlag/build.gradle.kts create mode 100644 idea/testData/gradle/configurator/enableFeatureSupportGSKWithNotInfixVersionCallAndXFlag/build.gradle.kts.after create mode 100644 idea/testData/gradle/configurator/enableFeatureSupportGSKWithNotInfixVersionCallAndXFlag/settings.gradle.kts create mode 100644 idea/testData/gradle/configurator/enableFeatureSupportGSKWithSpecifyingPluginThroughIdAndXFlag/build.gradle.kts create mode 100644 idea/testData/gradle/configurator/enableFeatureSupportGSKWithSpecifyingPluginThroughIdAndXFlag/build.gradle.kts.after create mode 100644 idea/testData/gradle/configurator/enableFeatureSupportGSKWithSpecifyingPluginThroughIdAndXFlag/settings.gradle.kts create mode 100644 idea/testData/gradle/configurator/enableFeatureSupportGSKWithXFlag/build.gradle.kts create mode 100644 idea/testData/gradle/configurator/enableFeatureSupportGSKWithXFlag/build.gradle.kts.after create mode 100644 idea/testData/gradle/configurator/enableFeatureSupportMultiplatformWithDotsAndXFlag/build.gradle create mode 100644 idea/testData/gradle/configurator/enableFeatureSupportMultiplatformWithDotsAndXFlag/build.gradle.after create mode 100644 idea/testData/gradle/configurator/enableFeatureSupportMultiplatformWithXFlag/build.gradle create mode 100644 idea/testData/gradle/configurator/enableFeatureSupportMultiplatformWithXFlag/build.gradle.after create mode 100644 idea/testData/gradle/configurator/enableFeatureSupportMultiplatformWithXFlag/settings.gradle create mode 100644 idea/testData/gradle/configurator/enableFeatureSupportToExistentArgumentsWithXFlag/build.gradle create mode 100644 idea/testData/gradle/configurator/enableFeatureSupportToExistentArgumentsWithXFlag/build.gradle.after create mode 100644 idea/testData/gradle/configurator/enableFeatureSupportWithXFlag/build.gradle create mode 100644 idea/testData/gradle/configurator/enableFeatureSupportWithXFlag/build.gradle.after diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/GroovyBuildScriptManipulator.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/GroovyBuildScriptManipulator.kt index 556a9e98503..709a9dcd9c5 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/GroovyBuildScriptManipulator.kt +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/GroovyBuildScriptManipulator.kt @@ -16,6 +16,7 @@ import org.jetbrains.kotlin.cli.common.arguments.CliArgumentStringBuilder.buildA import org.jetbrains.kotlin.cli.common.arguments.CliArgumentStringBuilder.replaceLanguageFeature import org.jetbrains.kotlin.config.LanguageFeature import org.jetbrains.kotlin.idea.configuration.KotlinWithGradleConfigurator.Companion.getBuildScriptSettingsPsiFile +import org.jetbrains.kotlin.idea.inspections.gradle.DifferentKotlinGradleVersionInspection import org.jetbrains.kotlin.idea.util.application.runReadAction import org.jetbrains.kotlin.idea.util.module import org.jetbrains.kotlin.psi.psiUtil.getChildrenOfType @@ -164,7 +165,8 @@ class GroovyBuildScriptManipulator( return allBlock.statements.lastOrNull() } - val featureArgumentString = feature.buildArgumentString(state) + val kotlinVersion = DifferentKotlinGradleVersionInspection.getKotlinPluginVersion(scriptFile) + val featureArgumentString = feature.buildArgumentString(state, kotlinVersion) val parameterName = "freeCompilerArgs" return addOrReplaceKotlinTaskParameter( scriptFile, @@ -173,7 +175,13 @@ class GroovyBuildScriptManipulator( forTests ) { insideKotlinOptions -> val prefix = if (insideKotlinOptions) "kotlinOptions." else "" - val newText = text.replaceLanguageFeature(feature, state, prefix = "$prefix$parameterName = [", postfix = "]") + val newText = text.replaceLanguageFeature( + feature, + state, + kotlinVersion, + prefix = "$prefix$parameterName = [", + postfix = "]" + ) replaceWithStatementFromText(newText) } } diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinBuildScriptManipulator.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinBuildScriptManipulator.kt index b6e93034ac1..32a636a84ce 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinBuildScriptManipulator.kt +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinBuildScriptManipulator.kt @@ -229,6 +229,55 @@ class KotlinBuildScriptManipulator( } } + private fun KtBlockExpression.findClassPathDependencyVersion(pluginName: String): String? { + return PsiTreeUtil.getChildrenOfAnyType(this, KtCallExpression::class.java).mapNotNull { + if (it?.calleeExpression?.text == "classpath") { + val dependencyName = it.valueArguments.firstOrNull()?.text?.removeSurrounding("\"") + if (dependencyName?.startsWith(pluginName) == true) dependencyName.substringAfter("$pluginName:") else null + } else null + }.singleOrNull() + } + + private fun getPluginInfoFromBuildScript( + operatorName: String?, + pluginVersion: KtExpression?, + receiverCalleeExpression: KtCallExpression? + ): Pair? { + val receiverCalleeExpressionText = receiverCalleeExpression?.calleeExpression?.text?.trim() + val receivedPluginName = when { + receiverCalleeExpressionText == "id" -> + receiverCalleeExpression.valueArguments.firstOrNull()?.text?.trim()?.removeSurrounding("\"") + operatorName == "version" -> receiverCalleeExpressionText + else -> null + } + val pluginVersionText = pluginVersion?.text?.trim()?.removeSurrounding("\"") ?: return null + + return receivedPluginName?.to(pluginVersionText) + } + + private fun KtBlockExpression.findPluginVersionInPluginGroup(pluginName: String): String? { + val versionsToPluginNames = + PsiTreeUtil.getChildrenOfAnyType(this, KtBinaryExpression::class.java, KtDotQualifiedExpression::class.java).mapNotNull { + when (it) { + is KtBinaryExpression -> getPluginInfoFromBuildScript( + it.operationReference.text, + it.right, + it.left as? KtCallExpression + ) + is KtDotQualifiedExpression -> + (it.selectorExpression as? KtCallExpression)?.run { + getPluginInfoFromBuildScript( + calleeExpression?.text, + valueArguments.firstOrNull()?.getArgumentExpression(), + it.receiverExpression as? KtCallExpression + ) + } + else -> null + } + }.toMap() + return versionsToPluginNames.getOrDefault(pluginName, null) + } + private fun KtBlockExpression.findPluginInPluginsGroup(pluginName: String): KtCallExpression? { return PsiTreeUtil.getChildrenOfAnyType( this, @@ -354,14 +403,24 @@ class KotlinBuildScriptManipulator( ?.addExpressionIfMissing("languageSettings.enableLanguageFeature(\"${feature.name}\")") } - val featureArgumentString = feature.buildArgumentString(state) + val pluginsBlock = findScriptInitializer("plugins")?.getBlock() + val kotlinVersion = pluginsBlock?.findPluginVersionInPluginGroup("kotlin") + ?: pluginsBlock?.findPluginVersionInPluginGroup("org.jetbrains.kotlin.jvm") + ?: findScriptInitializer("buildscript")?.getBlock()?.findBlock("dependencies")?.findClassPathDependencyVersion("org.jetbrains.kotlin:kotlin-gradle-plugin") + val featureArgumentString = feature.buildArgumentString(state, kotlinVersion) val parameterName = "freeCompilerArgs" return addOrReplaceKotlinTaskParameter( parameterName, "listOf(\"$featureArgumentString\")", forTests ) { - val newText = text.replaceLanguageFeature(feature, state, prefix = "$parameterName = listOf(", postfix = ")") + val newText = text.replaceLanguageFeature( + feature, + state, + kotlinVersion, + prefix = "$parameterName = listOf(", + postfix = ")" + ) replace(psiFactory.createExpression(newText)) } } diff --git a/idea/idea-gradle/tests/org/jetbrains/kotlin/idea/codeInsight/gradle/GradleConfiguratorPlatformSpecificTest.kt b/idea/idea-gradle/tests/org/jetbrains/kotlin/idea/codeInsight/gradle/GradleConfiguratorPlatformSpecificTest.kt index cab6d30ae6d..906155fad20 100644 --- a/idea/idea-gradle/tests/org/jetbrains/kotlin/idea/codeInsight/gradle/GradleConfiguratorPlatformSpecificTest.kt +++ b/idea/idea-gradle/tests/org/jetbrains/kotlin/idea/codeInsight/gradle/GradleConfiguratorPlatformSpecificTest.kt @@ -32,6 +32,10 @@ class GradleConfiguratorPlatformSpecificTest : GradleImportingTestCase() { } } + @TargetVersions("4.7+") + @Test + fun testEnableFeatureSupportMultiplatformWithXFlag() = testEnableFeatureSupportMultiplatform() + @TargetVersions("4.7+") @Test fun testEnableFeatureSupportMultiplatform2() { 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 d2e0f8c00ff..ea8b4cac85e 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 @@ -569,6 +569,10 @@ class GradleConfiguratorTest : GradleImportingTestCase() { } } + @TargetVersions("4.7+") + @Test + fun testChangeFeatureSupportWithXFlag() = testChangeFeatureSupport() + @Test fun testDisableFeatureSupport() { val files = importProjectFromTestData() @@ -584,6 +588,10 @@ class GradleConfiguratorTest : GradleImportingTestCase() { } } + @TargetVersions("4.7+") + @Test + fun testDisableFeatureSupportWithXFlag() = testDisableFeatureSupport() + @Test fun testEnableFeatureSupport() { val files = importProjectFromTestData() @@ -599,6 +607,11 @@ class GradleConfiguratorTest : GradleImportingTestCase() { } } + @TargetVersions("4.7+") + @Test + @JvmName("testEnableFeatureSupportWithXFlag") + fun testEnableFeatureSupportWithXFlag() = testEnableFeatureSupport() + @Test fun testEnableFeatureSupportToExistentArguments() { val files = importProjectFromTestData() @@ -614,6 +627,10 @@ class GradleConfiguratorTest : GradleImportingTestCase() { } } + @TargetVersions("4.7+") + @Test + fun testEnableFeatureSupportToExistentArgumentsWithXFlag() = testEnableFeatureSupportToExistentArguments() + @Test fun testChangeFeatureSupportGSK() { val files = importProjectFromTestData() @@ -629,6 +646,10 @@ class GradleConfiguratorTest : GradleImportingTestCase() { } } + @TargetVersions("4.7+") + @Test + fun testChangeFeatureSupportGSKWithXFlag() = testChangeFeatureSupportGSK() + @Test fun testDisableFeatureSupportGSK() { val files = importProjectFromTestData() @@ -644,6 +665,10 @@ class GradleConfiguratorTest : GradleImportingTestCase() { } } + @TargetVersions("4.7+") + @Test + fun testDisableFeatureSupportGSKWithXFlag() = testDisableFeatureSupportGSK() + @Test fun testEnableFeatureSupportGSK() { val files = importProjectFromTestData() @@ -659,6 +684,18 @@ class GradleConfiguratorTest : GradleImportingTestCase() { } } + @TargetVersions("4.7+") + @Test + fun testEnableFeatureSupportGSKWithXFlag() = testEnableFeatureSupportGSK() + + @TargetVersions("4.7+") + @Test + fun testEnableFeatureSupportGSKWithNotInfixVersionCallAndXFlag() = testEnableFeatureSupportGSK() + + @TargetVersions("4.7+") + @Test + fun testEnableFeatureSupportGSKWithSpecifyingPluginThroughIdAndXFlag() = testEnableFeatureSupportGSK() + override fun testDataDirName(): String { return "configurator" } 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 fcf98d7a788..41485cd59f6 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 @@ -5,10 +5,20 @@ package org.jetbrains.kotlin.cli.common.arguments +import com.intellij.openapi.util.text.StringUtil.compareVersionNumbers import org.jetbrains.kotlin.config.LanguageFeature object CliArgumentStringBuilder { - private const val languagePrefix = "-XXLanguage:" + private const val LANGUAGE_FEATURE_FLAG_PREFIX = "-XXLanguage:" + private const val LANGUAGE_FEATURE_DEDICATED_FLAG_PREFIX = "-X" + + private val versionRegex = Regex("""^(\d+)\.(\d+)\.(\d+)""") + + private val LanguageFeature.dedicatedFlagInfo + get() = when (this) { + LanguageFeature.InlineClasses -> Pair("inline-classes", KotlinVersion(1, 3, 50)) + else -> null + } private val LanguageFeature.State.sign: String get() = when (this) { @@ -18,24 +28,50 @@ object CliArgumentStringBuilder { LanguageFeature.State.ENABLED_WITH_ERROR -> "-" // not supported normally } - fun LanguageFeature.buildArgumentString(state: LanguageFeature.State): String { - return "$languagePrefix${state.sign}$name" + private fun LanguageFeature.getFeatureMentionInCompilerArgsRegex(): Regex { + val basePattern = "$LANGUAGE_FEATURE_FLAG_PREFIX(?:-|\\+)$name" + val fullPattern = + if (dedicatedFlagInfo != null) "(?:$basePattern)|$LANGUAGE_FEATURE_DEDICATED_FLAG_PREFIX${dedicatedFlagInfo!!.first}" else basePattern + + return Regex(fullPattern) + } + + fun LanguageFeature.buildArgumentString(state: LanguageFeature.State, kotlinVersion: String?): String { + val shouldBeFeatureEnabled = state == LanguageFeature.State.ENABLED || state == LanguageFeature.State.ENABLED_WITH_WARNING + 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 + + val isAtLeastSpecifiedVersion = versionRegex.find(kotlinVersion)?.destructured?.let { (major, minor, patch) -> + KotlinVersion(major.toInt(), minor.toInt(), patch.toInt()) >= xFlagSinceVersion + } == true + if (isAtLeastSpecifiedVersion) xFlag else null + } + + return if (shouldBeFeatureEnabled && dedicatedFlag != null) { + LANGUAGE_FEATURE_DEDICATED_FLAG_PREFIX + dedicatedFlag + } else { + "$LANGUAGE_FEATURE_FLAG_PREFIX${state.sign}$name" + } } fun String.replaceLanguageFeature( feature: LanguageFeature, state: LanguageFeature.State, + kotlinVersion: String?, prefix: String = "", postfix: String = "", separator: String = ", ", quoted: Boolean = true ): String { - val existingFeatureIndex = indexOf(feature.name) - val languagePrefixIndex = lastIndexOf(languagePrefix, existingFeatureIndex) - val featureArgumentString = feature.buildArgumentString(state) val quote = if (quoted) "\"" else "" - return if (languagePrefixIndex != -1) { - replaceRange(languagePrefixIndex, existingFeatureIndex + feature.name.length, featureArgumentString) + val featureArgumentString = feature.buildArgumentString(state, kotlinVersion) + val existingFeatureMatchResult = feature.getFeatureMentionInCompilerArgsRegex().find(this) + + return if (existingFeatureMatchResult != null) { + replace(existingFeatureMatchResult.value, featureArgumentString) } else { val splitText = if (postfix.isNotEmpty()) split(postfix) else listOf(this, "") if (splitText.size != 2) { diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/configuration/KotlinWithLibraryConfigurator.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/configuration/KotlinWithLibraryConfigurator.kt index f6407b570bf..4c958593131 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/configuration/KotlinWithLibraryConfigurator.kt +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/configuration/KotlinWithLibraryConfigurator.kt @@ -23,6 +23,7 @@ import org.jetbrains.kotlin.config.ApiVersion import org.jetbrains.kotlin.config.KotlinFacetSettingsProvider import org.jetbrains.kotlin.config.LanguageFeature import org.jetbrains.kotlin.config.LanguageVersion +import org.jetbrains.kotlin.idea.facet.getCleanRuntimeLibraryVersion import org.jetbrains.kotlin.idea.facet.getRuntimeLibraryVersion import org.jetbrains.kotlin.idea.facet.toApiVersion import org.jetbrains.kotlin.idea.framework.ui.CreateLibraryDialogWithModules @@ -371,7 +372,13 @@ abstract class KotlinWithLibraryConfigurator protected constructor() : KotlinPro facetSettings.apiLevel = feature.sinceVersion facetSettings.languageLevel = feature.sinceVersion facetSettings.compilerSettings?.apply { - additionalArguments = additionalArguments.replaceLanguageFeature(feature, state, separator = " ", quoted = false) + additionalArguments = additionalArguments.replaceLanguageFeature( + feature, + state, + getCleanRuntimeLibraryVersion(module), + separator = " ", + quoted = false + ) } } } diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/quickfix/ChangeGeneralLanguageFeatureSupportFix.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/quickfix/ChangeGeneralLanguageFeatureSupportFix.kt index eea69a95840..c915203c35b 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/quickfix/ChangeGeneralLanguageFeatureSupportFix.kt +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/quickfix/ChangeGeneralLanguageFeatureSupportFix.kt @@ -20,7 +20,9 @@ import org.jetbrains.kotlin.idea.configuration.findApplicableConfigurator import org.jetbrains.kotlin.idea.configuration.getBuildSystemType import org.jetbrains.kotlin.idea.core.isInTestSourceContentKotlinAware import org.jetbrains.kotlin.idea.facet.KotlinFacet +import org.jetbrains.kotlin.idea.facet.getCleanRuntimeLibraryVersion import org.jetbrains.kotlin.idea.roots.invalidateProjectRoots +import org.jetbrains.kotlin.idea.util.module import org.jetbrains.kotlin.psi.KtFile sealed class ChangeGeneralLanguageFeatureSupportFix( @@ -56,7 +58,13 @@ sealed class ChangeGeneralLanguageFeatureSupportFix( if (!checkUpdateRuntime(project, feature.sinceApiVersion)) return } KotlinCompilerSettings.getInstance(project).update { - additionalArguments = additionalArguments.replaceLanguageFeature(feature, featureSupport, separator = " ", quoted = false) + additionalArguments = additionalArguments.replaceLanguageFeature( + feature, + featureSupport, + file.module?.let { getCleanRuntimeLibraryVersion(it) }, + separator = " ", + quoted = false + ) } project.invalidateProjectRoots() } diff --git a/idea/idea-maven/src/org/jetbrains/kotlin/idea/maven/PomFile.kt b/idea/idea-maven/src/org/jetbrains/kotlin/idea/maven/PomFile.kt index 0e612462584..9b91179d9b1 100644 --- a/idea/idea-maven/src/org/jetbrains/kotlin/idea/maven/PomFile.kt +++ b/idea/idea-maven/src/org/jetbrains/kotlin/idea/maven/PomFile.kt @@ -711,7 +711,7 @@ fun PomFile.changeFeatureConfiguration( } argsSubTag.findSubTags("arg").filter { feature.name in it.value.text }.forEach { it.deleteCascade() } - val featureArgumentString = feature.buildArgumentString(state) + val featureArgumentString = feature.buildArgumentString(state, kotlinPlugin.version.stringValue) val childTag = argsSubTag.createChildTag("arg", featureArgumentString) return argsSubTag.add(childTag) } diff --git a/idea/idea-maven/test/org/jetbrains/kotlin/idea/maven/MavenUpdateConfigurationQuickFixTest.kt b/idea/idea-maven/test/org/jetbrains/kotlin/idea/maven/MavenUpdateConfigurationQuickFixTest.kt index cdd2cf497dd..66ae4454f19 100644 --- a/idea/idea-maven/test/org/jetbrains/kotlin/idea/maven/MavenUpdateConfigurationQuickFixTest.kt +++ b/idea/idea-maven/test/org/jetbrains/kotlin/idea/maven/MavenUpdateConfigurationQuickFixTest.kt @@ -82,6 +82,11 @@ class MavenUpdateConfigurationQuickFixTest : MavenImportingTestCase() { doTest("Enable inline classes support in the current module") } + @Test + fun testEnableInlineClassesWithXFlag() { + doTest("Enable inline classes support in the current module") + } + @Test fun testAddKotlinReflect() { doTest("Add kotlin-reflect.jar to the classpath") diff --git a/idea/idea-maven/testData/languageFeature/enableInlineClassesWithXFlag/pom.xml b/idea/idea-maven/testData/languageFeature/enableInlineClassesWithXFlag/pom.xml new file mode 100644 index 00000000000..5fcd2b3bbaa --- /dev/null +++ b/idea/idea-maven/testData/languageFeature/enableInlineClassesWithXFlag/pom.xml @@ -0,0 +1,56 @@ + + + 4.0.0 + + maventest + maventest + 1.0-SNAPSHOT + + 1.3.50 + + + + org.jetbrains.kotlin + kotlin-stdlib-jre8 + ${kotlin.version} + + + org.jetbrains.kotlin + kotlin-test + ${kotlin.version} + test + + + + + ${project.basedir}/src/main/kotlin + + + org.jetbrains.kotlin + kotlin-maven-plugin + ${kotlin.version} + + + compile + compile + + wrong-goal + compile + + + + test-compile + test-compile + + test-compile + + + + + + + + + \ No newline at end of file diff --git a/idea/idea-maven/testData/languageFeature/enableInlineClassesWithXFlag/pom.xml.after b/idea/idea-maven/testData/languageFeature/enableInlineClassesWithXFlag/pom.xml.after new file mode 100644 index 00000000000..7763a60a7a7 --- /dev/null +++ b/idea/idea-maven/testData/languageFeature/enableInlineClassesWithXFlag/pom.xml.after @@ -0,0 +1,61 @@ + + + 4.0.0 + + maventest + maventest + 1.0-SNAPSHOT + + 1.3.50 + + + + org.jetbrains.kotlin + kotlin-stdlib-jre8 + ${kotlin.version} + + + org.jetbrains.kotlin + kotlin-test + ${kotlin.version} + test + + + + + ${project.basedir}/src/main/kotlin + + + org.jetbrains.kotlin + kotlin-maven-plugin + ${kotlin.version} + + + compile + compile + + wrong-goal + compile + + + + test-compile + test-compile + + test-compile + + + + + + -Xinline-classes + + + + + + + + \ No newline at end of file diff --git a/idea/idea-maven/testData/languageFeature/enableInlineClassesWithXFlag/src.kt b/idea/idea-maven/testData/languageFeature/enableInlineClassesWithXFlag/src.kt new file mode 100644 index 00000000000..046aa8d2172 --- /dev/null +++ b/idea/idea-maven/testData/languageFeature/enableInlineClassesWithXFlag/src.kt @@ -0,0 +1 @@ +inline class My(val x: Int) diff --git a/idea/testData/gradle/configurator/changeFeatureSupportGSKWithXFlag/build.gradle.kts b/idea/testData/gradle/configurator/changeFeatureSupportGSKWithXFlag/build.gradle.kts new file mode 100644 index 00000000000..f4a642ac3d7 --- /dev/null +++ b/idea/testData/gradle/configurator/changeFeatureSupportGSKWithXFlag/build.gradle.kts @@ -0,0 +1,15 @@ +import org.jetbrains.kotlin.gradle.tasks.KotlinCompile + +plugins { + id("org.jetbrains.kotlin.jvm") version "1.3.50" +} + +repositories { + mavenCentral() + maven { setUrl("https://dl.bintray.com/kotlin/kotlin-eap") } +} + +val compileKotlin: KotlinCompile by tasks +compileKotlin.kotlinOptions { + freeCompilerArgs = listOf("-Xinline-classes") +} \ No newline at end of file diff --git a/idea/testData/gradle/configurator/changeFeatureSupportGSKWithXFlag/build.gradle.kts.after b/idea/testData/gradle/configurator/changeFeatureSupportGSKWithXFlag/build.gradle.kts.after new file mode 100644 index 00000000000..4333608d158 --- /dev/null +++ b/idea/testData/gradle/configurator/changeFeatureSupportGSKWithXFlag/build.gradle.kts.after @@ -0,0 +1,15 @@ +import org.jetbrains.kotlin.gradle.tasks.KotlinCompile + +plugins { + id("org.jetbrains.kotlin.jvm") version "1.3.50" +} + +repositories { + mavenCentral() + maven { setUrl("https://dl.bintray.com/kotlin/kotlin-eap") } +} + +val compileKotlin: KotlinCompile by tasks +compileKotlin.kotlinOptions { + freeCompilerArgs = listOf("-XXLanguage:-InlineClasses") +} \ No newline at end of file diff --git a/idea/testData/gradle/configurator/changeFeatureSupportGSKWithXFlag/settings.gradle.kts b/idea/testData/gradle/configurator/changeFeatureSupportGSKWithXFlag/settings.gradle.kts new file mode 100644 index 00000000000..e2c4b2c2efd --- /dev/null +++ b/idea/testData/gradle/configurator/changeFeatureSupportGSKWithXFlag/settings.gradle.kts @@ -0,0 +1,8 @@ +pluginManagement { + repositories { + maven("https://dl.bintray.com/kotlin/kotlin-dev") + gradlePluginPortal() + } +} + +rootProject.name = "my-app" diff --git a/idea/testData/gradle/configurator/changeFeatureSupportWithXFlag/build.gradle b/idea/testData/gradle/configurator/changeFeatureSupportWithXFlag/build.gradle new file mode 100644 index 00000000000..7d27fbf8be5 --- /dev/null +++ b/idea/testData/gradle/configurator/changeFeatureSupportWithXFlag/build.gradle @@ -0,0 +1,24 @@ +buildscript { + repositories { + jcenter() + mavenCentral() + maven { url 'https://dl.bintray.com/kotlin/kotlin-dev' } + } + dependencies { + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.60-dev-1951" + } +} +apply plugin: "kotlin" +repositories { + jcenter() + mavenCentral() + maven { url 'https://dl.bintray.com/kotlin/kotlin-dev' } +} +dependencies { + compile "org.jetbrains.kotlin:kotlin-stdlib" +} +compileKotlin { + kotlinOptions { + freeCompilerArgs = ["-XXLanguage:-InlineClasses"] + } +} diff --git a/idea/testData/gradle/configurator/changeFeatureSupportWithXFlag/build.gradle.after b/idea/testData/gradle/configurator/changeFeatureSupportWithXFlag/build.gradle.after new file mode 100644 index 00000000000..a386d882f35 --- /dev/null +++ b/idea/testData/gradle/configurator/changeFeatureSupportWithXFlag/build.gradle.after @@ -0,0 +1,24 @@ +buildscript { + repositories { + jcenter() + mavenCentral() + maven { url 'https://dl.bintray.com/kotlin/kotlin-dev' } + } + dependencies { + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.60-dev-1951" + } +} +apply plugin: "kotlin" +repositories { + jcenter() + mavenCentral() + maven { url 'https://dl.bintray.com/kotlin/kotlin-dev' } +} +dependencies { + compile "org.jetbrains.kotlin:kotlin-stdlib" +} +compileKotlin { + kotlinOptions { + freeCompilerArgs = ["-Xinline-classes"] + } +} diff --git a/idea/testData/gradle/configurator/disableFeatureSupportGSKWithXFlag/build.gradle.kts b/idea/testData/gradle/configurator/disableFeatureSupportGSKWithXFlag/build.gradle.kts new file mode 100644 index 00000000000..c74559a0a3c --- /dev/null +++ b/idea/testData/gradle/configurator/disableFeatureSupportGSKWithXFlag/build.gradle.kts @@ -0,0 +1,7 @@ +plugins { + kotlin("jvm") version "1.3.50" +} + +repositories { + maven { setUrl("https://dl.bintray.com/kotlin/kotlin-eap") } +} diff --git a/idea/testData/gradle/configurator/disableFeatureSupportGSKWithXFlag/build.gradle.kts.after b/idea/testData/gradle/configurator/disableFeatureSupportGSKWithXFlag/build.gradle.kts.after new file mode 100644 index 00000000000..a0b2a29481f --- /dev/null +++ b/idea/testData/gradle/configurator/disableFeatureSupportGSKWithXFlag/build.gradle.kts.after @@ -0,0 +1,13 @@ +import org.jetbrains.kotlin.gradle.tasks.KotlinCompile + +plugins { + kotlin("jvm") version "1.3.50" +} + +repositories { + maven { setUrl("https://dl.bintray.com/kotlin/kotlin-eap") } +} +val compileKotlin: KotlinCompile by tasks +compileKotlin.kotlinOptions { + freeCompilerArgs = listOf("-XXLanguage:-InlineClasses") +} \ No newline at end of file diff --git a/idea/testData/gradle/configurator/disableFeatureSupportGSKWithXFlag/settings.gradle.kts b/idea/testData/gradle/configurator/disableFeatureSupportGSKWithXFlag/settings.gradle.kts new file mode 100644 index 00000000000..e2c4b2c2efd --- /dev/null +++ b/idea/testData/gradle/configurator/disableFeatureSupportGSKWithXFlag/settings.gradle.kts @@ -0,0 +1,8 @@ +pluginManagement { + repositories { + maven("https://dl.bintray.com/kotlin/kotlin-dev") + gradlePluginPortal() + } +} + +rootProject.name = "my-app" diff --git a/idea/testData/gradle/configurator/disableFeatureSupportMultiplatformWithXFlag/build.gradle.kts b/idea/testData/gradle/configurator/disableFeatureSupportMultiplatformWithXFlag/build.gradle.kts new file mode 100644 index 00000000000..e5e9e3c1b4f --- /dev/null +++ b/idea/testData/gradle/configurator/disableFeatureSupportMultiplatformWithXFlag/build.gradle.kts @@ -0,0 +1,15 @@ +buildscript { + repositories { + jcenter() + mavenCentral() + maven { setUrl("https://dl.bintray.com/kotlin/kotlin-dev") } + } + dependencies { + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.60-dev-1951") + } +} +apply(plugin="kotlin-multiplatform") +repositories { + jcenter() + mavenCentral() +} \ No newline at end of file diff --git a/idea/testData/gradle/configurator/disableFeatureSupportMultiplatformWithXFlag/build.gradle.kts.after b/idea/testData/gradle/configurator/disableFeatureSupportMultiplatformWithXFlag/build.gradle.kts.after new file mode 100644 index 00000000000..211b9a8fc0f --- /dev/null +++ b/idea/testData/gradle/configurator/disableFeatureSupportMultiplatformWithXFlag/build.gradle.kts.after @@ -0,0 +1,21 @@ +import org.jetbrains.kotlin.gradle.tasks.KotlinCompile + +buildscript { + repositories { + jcenter() + mavenCentral() + maven { setUrl("https://dl.bintray.com/kotlin/kotlin-dev") } + } + dependencies { + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.50-eap-2") + } +} +apply(plugin="kotlin-multiplatform") +repositories { + jcenter() + mavenCentral() +} +val compileKotlin: KotlinCompile by tasks +compileKotlin.kotlinOptions { + freeCompilerArgs = listOf("-XXLanguage:-InlineClasses") +} \ No newline at end of file diff --git a/idea/testData/gradle/configurator/disableFeatureSupportWithXFlag/build.gradle b/idea/testData/gradle/configurator/disableFeatureSupportWithXFlag/build.gradle new file mode 100644 index 00000000000..50d19244c33 --- /dev/null +++ b/idea/testData/gradle/configurator/disableFeatureSupportWithXFlag/build.gradle @@ -0,0 +1,19 @@ +buildscript { + repositories { + jcenter() + mavenCentral() + maven { url 'https://dl.bintray.com/kotlin/kotlin-dev' } + } + dependencies { + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.50" + } +} +apply plugin: "kotlin" +repositories { + jcenter() + mavenCentral() + maven { url 'https://dl.bintray.com/kotlin/kotlin-dev' } +} +dependencies { + compile "org.jetbrains.kotlin:kotlin-stdlib" +} diff --git a/idea/testData/gradle/configurator/disableFeatureSupportWithXFlag/build.gradle.after b/idea/testData/gradle/configurator/disableFeatureSupportWithXFlag/build.gradle.after new file mode 100644 index 00000000000..c559f9c6eb8 --- /dev/null +++ b/idea/testData/gradle/configurator/disableFeatureSupportWithXFlag/build.gradle.after @@ -0,0 +1,24 @@ +buildscript { + repositories { + jcenter() + mavenCentral() + maven { url 'https://dl.bintray.com/kotlin/kotlin-dev' } + } + dependencies { + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.50" + } +} +apply plugin: "kotlin" +repositories { + jcenter() + mavenCentral() + maven { url 'https://dl.bintray.com/kotlin/kotlin-dev' } +} +dependencies { + compile "org.jetbrains.kotlin:kotlin-stdlib" +} +compileKotlin { + kotlinOptions { + freeCompilerArgs = ["-XXLanguage:-InlineClasses"] + } +} diff --git a/idea/testData/gradle/configurator/enableFeatureSupportGSKWithNotInfixVersionCallAndXFlag/build.gradle.kts b/idea/testData/gradle/configurator/enableFeatureSupportGSKWithNotInfixVersionCallAndXFlag/build.gradle.kts new file mode 100644 index 00000000000..c860f97babc --- /dev/null +++ b/idea/testData/gradle/configurator/enableFeatureSupportGSKWithNotInfixVersionCallAndXFlag/build.gradle.kts @@ -0,0 +1,8 @@ +plugins { + id("org.jetbrains.kotlin.jvm").version("1.3.50") +} + +repositories { + mavenCentral() + maven { setUrl("https://dl.bintray.com/kotlin/kotlin-eap") } +} diff --git a/idea/testData/gradle/configurator/enableFeatureSupportGSKWithNotInfixVersionCallAndXFlag/build.gradle.kts.after b/idea/testData/gradle/configurator/enableFeatureSupportGSKWithNotInfixVersionCallAndXFlag/build.gradle.kts.after new file mode 100644 index 00000000000..63c56eb46ff --- /dev/null +++ b/idea/testData/gradle/configurator/enableFeatureSupportGSKWithNotInfixVersionCallAndXFlag/build.gradle.kts.after @@ -0,0 +1,14 @@ +import org.jetbrains.kotlin.gradle.tasks.KotlinCompile + +plugins { + id("org.jetbrains.kotlin.jvm").version("1.3.50") +} + +repositories { + mavenCentral() + maven { setUrl("https://dl.bintray.com/kotlin/kotlin-eap") } +} +val compileKotlin: KotlinCompile by tasks +compileKotlin.kotlinOptions { + freeCompilerArgs = listOf("-Xinline-classes") +} \ No newline at end of file diff --git a/idea/testData/gradle/configurator/enableFeatureSupportGSKWithNotInfixVersionCallAndXFlag/settings.gradle.kts b/idea/testData/gradle/configurator/enableFeatureSupportGSKWithNotInfixVersionCallAndXFlag/settings.gradle.kts new file mode 100644 index 00000000000..e2c4b2c2efd --- /dev/null +++ b/idea/testData/gradle/configurator/enableFeatureSupportGSKWithNotInfixVersionCallAndXFlag/settings.gradle.kts @@ -0,0 +1,8 @@ +pluginManagement { + repositories { + maven("https://dl.bintray.com/kotlin/kotlin-dev") + gradlePluginPortal() + } +} + +rootProject.name = "my-app" diff --git a/idea/testData/gradle/configurator/enableFeatureSupportGSKWithSpecifyingPluginThroughIdAndXFlag/build.gradle.kts b/idea/testData/gradle/configurator/enableFeatureSupportGSKWithSpecifyingPluginThroughIdAndXFlag/build.gradle.kts new file mode 100644 index 00000000000..3b7a8d3c58c --- /dev/null +++ b/idea/testData/gradle/configurator/enableFeatureSupportGSKWithSpecifyingPluginThroughIdAndXFlag/build.gradle.kts @@ -0,0 +1,8 @@ +plugins { + id("org.jetbrains.kotlin.jvm") version "1.3.50" +} + +repositories { + mavenCentral() + maven { setUrl("https://dl.bintray.com/kotlin/kotlin-eap") } +} diff --git a/idea/testData/gradle/configurator/enableFeatureSupportGSKWithSpecifyingPluginThroughIdAndXFlag/build.gradle.kts.after b/idea/testData/gradle/configurator/enableFeatureSupportGSKWithSpecifyingPluginThroughIdAndXFlag/build.gradle.kts.after new file mode 100644 index 00000000000..13c43832c20 --- /dev/null +++ b/idea/testData/gradle/configurator/enableFeatureSupportGSKWithSpecifyingPluginThroughIdAndXFlag/build.gradle.kts.after @@ -0,0 +1,14 @@ +import org.jetbrains.kotlin.gradle.tasks.KotlinCompile + +plugins { + id("org.jetbrains.kotlin.jvm") version "1.3.50" +} + +repositories { + mavenCentral() + maven { setUrl("https://dl.bintray.com/kotlin/kotlin-eap") } +} +val compileKotlin: KotlinCompile by tasks +compileKotlin.kotlinOptions { + freeCompilerArgs = listOf("-Xinline-classes") +} \ No newline at end of file diff --git a/idea/testData/gradle/configurator/enableFeatureSupportGSKWithSpecifyingPluginThroughIdAndXFlag/settings.gradle.kts b/idea/testData/gradle/configurator/enableFeatureSupportGSKWithSpecifyingPluginThroughIdAndXFlag/settings.gradle.kts new file mode 100644 index 00000000000..e2c4b2c2efd --- /dev/null +++ b/idea/testData/gradle/configurator/enableFeatureSupportGSKWithSpecifyingPluginThroughIdAndXFlag/settings.gradle.kts @@ -0,0 +1,8 @@ +pluginManagement { + repositories { + maven("https://dl.bintray.com/kotlin/kotlin-dev") + gradlePluginPortal() + } +} + +rootProject.name = "my-app" diff --git a/idea/testData/gradle/configurator/enableFeatureSupportGSKWithXFlag/build.gradle.kts b/idea/testData/gradle/configurator/enableFeatureSupportGSKWithXFlag/build.gradle.kts new file mode 100644 index 00000000000..3206d038b1c --- /dev/null +++ b/idea/testData/gradle/configurator/enableFeatureSupportGSKWithXFlag/build.gradle.kts @@ -0,0 +1,12 @@ +buildscript { + repositories { + jcenter() + mavenCentral() + maven { setUrl("https://dl.bintray.com/kotlin/kotlin-dev") } + } + dependencies { + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.60-dev-1951") + } +} + +apply(plugin ="kotlin") diff --git a/idea/testData/gradle/configurator/enableFeatureSupportGSKWithXFlag/build.gradle.kts.after b/idea/testData/gradle/configurator/enableFeatureSupportGSKWithXFlag/build.gradle.kts.after new file mode 100644 index 00000000000..f5e1e6ff4e3 --- /dev/null +++ b/idea/testData/gradle/configurator/enableFeatureSupportGSKWithXFlag/build.gradle.kts.after @@ -0,0 +1,18 @@ +import org.jetbrains.kotlin.gradle.tasks.KotlinCompile + +buildscript { + repositories { + jcenter() + mavenCentral() + maven { setUrl("https://dl.bintray.com/kotlin/kotlin-dev") } + } + dependencies { + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.60-dev-1951") + } +} + +apply(plugin ="kotlin") +val compileKotlin: KotlinCompile by tasks +compileKotlin.kotlinOptions { + freeCompilerArgs = listOf("-Xinline-classes") +} \ No newline at end of file diff --git a/idea/testData/gradle/configurator/enableFeatureSupportMultiplatformWithDotsAndXFlag/build.gradle b/idea/testData/gradle/configurator/enableFeatureSupportMultiplatformWithDotsAndXFlag/build.gradle new file mode 100644 index 00000000000..634c0ea617b --- /dev/null +++ b/idea/testData/gradle/configurator/enableFeatureSupportMultiplatformWithDotsAndXFlag/build.gradle @@ -0,0 +1,29 @@ +buildscript { + repositories { + jcenter() + mavenCentral() + } + dependencies { + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.50" + } +} +apply plugin: "kotlin-multiplatform" +repositories { + jcenter() + mavenCentral() +} +kotlin { + targets.fromPreset(presets.jvm, 'jvm') + sourceSets { + commonMain { + dependencies { + implementation 'org.jetbrains.kotlin:kotlin-stdlib-common' + } + } + jvmMain { + dependencies { + implementation 'org.jetbrains.kotlin:kotlin-stdlib' + } + } + } +} diff --git a/idea/testData/gradle/configurator/enableFeatureSupportMultiplatformWithDotsAndXFlag/build.gradle.after b/idea/testData/gradle/configurator/enableFeatureSupportMultiplatformWithDotsAndXFlag/build.gradle.after new file mode 100644 index 00000000000..dd23d60e546 --- /dev/null +++ b/idea/testData/gradle/configurator/enableFeatureSupportMultiplatformWithDotsAndXFlag/build.gradle.after @@ -0,0 +1,36 @@ +buildscript { + repositories { + jcenter() + mavenCentral() + } + dependencies { + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.50-eap-2" + } +} +apply plugin: "kotlin-multiplatform" +repositories { + jcenter() + mavenCentral() +} +kotlin { + targets.fromPreset(presets.jvm, 'jvm') + sourceSets { + commonMain { + dependencies { + implementation 'org.jetbrains.kotlin:kotlin-stdlib-common' + } + } + jvmMain { + dependencies { + implementation 'org.jetbrains.kotlin:kotlin-stdlib' + } + } + } + targets { + configure([jvm]) { + tasks.getByName(compilations.main.compileKotlinTaskName).kotlinOptions { + freeCompilerArgs = ["-Xinline-classes"] + } + } + } +} diff --git a/idea/testData/gradle/configurator/enableFeatureSupportMultiplatformWithXFlag/build.gradle b/idea/testData/gradle/configurator/enableFeatureSupportMultiplatformWithXFlag/build.gradle new file mode 100644 index 00000000000..a9aafa322fc --- /dev/null +++ b/idea/testData/gradle/configurator/enableFeatureSupportMultiplatformWithXFlag/build.gradle @@ -0,0 +1,32 @@ +buildscript { + repositories { + jcenter() + mavenCentral() + maven { url "https://dl.bintray.com/kotlin/kotlin-eap" } + } + dependencies { + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.50-eap-5" + } +} +apply plugin: "kotlin-multiplatform" +repositories { + jcenter() + mavenCentral() +} +kotlin { + targets { + fromPreset(presets.jvm, 'jvm') + } + sourceSets { + commonMain { + dependencies { + implementation 'org.jetbrains.kotlin:kotlin-stdlib-common' + } + } + jvmMain { + dependencies { + implementation 'org.jetbrains.kotlin:kotlin-stdlib' + } + } + } +} diff --git a/idea/testData/gradle/configurator/enableFeatureSupportMultiplatformWithXFlag/build.gradle.after b/idea/testData/gradle/configurator/enableFeatureSupportMultiplatformWithXFlag/build.gradle.after new file mode 100644 index 00000000000..027674f58d9 --- /dev/null +++ b/idea/testData/gradle/configurator/enableFeatureSupportMultiplatformWithXFlag/build.gradle.after @@ -0,0 +1,35 @@ +buildscript { + repositories { + jcenter() + mavenCentral() + maven { url "https://dl.bintray.com/kotlin/kotlin-eap" } + } + dependencies { + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.50-eap-5" + } +} +apply plugin: "kotlin-multiplatform" +repositories { + jcenter() + mavenCentral() +} +kotlin { + targets { + fromPreset(presets.jvm, 'jvm') + } + sourceSets { + commonMain { + dependencies { + implementation 'org.jetbrains.kotlin:kotlin-stdlib-common' + } + } + jvmMain { + dependencies { + implementation 'org.jetbrains.kotlin:kotlin-stdlib' + } + } + all { + languageSettings.enableLanguageFeature("InlineClasses") + } + } +} diff --git a/idea/testData/gradle/configurator/enableFeatureSupportMultiplatformWithXFlag/settings.gradle b/idea/testData/gradle/configurator/enableFeatureSupportMultiplatformWithXFlag/settings.gradle new file mode 100644 index 00000000000..87618c203be --- /dev/null +++ b/idea/testData/gradle/configurator/enableFeatureSupportMultiplatformWithXFlag/settings.gradle @@ -0,0 +1,7 @@ +pluginManagement { + repositories { + maven { + url 'http://dl.bintray.com/kotlin/kotlin-eap' + } + } +} \ No newline at end of file diff --git a/idea/testData/gradle/configurator/enableFeatureSupportToExistentArgumentsWithXFlag/build.gradle b/idea/testData/gradle/configurator/enableFeatureSupportToExistentArgumentsWithXFlag/build.gradle new file mode 100644 index 00000000000..962ab7b42ca --- /dev/null +++ b/idea/testData/gradle/configurator/enableFeatureSupportToExistentArgumentsWithXFlag/build.gradle @@ -0,0 +1,24 @@ +buildscript { + repositories { + jcenter() + mavenCentral() + maven { url 'https://dl.bintray.com/kotlin/kotlin-dev' } + } + dependencies { + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.60-dev-1951" + } +} +apply plugin: "kotlin" +repositories { + jcenter() + mavenCentral() + maven { url 'https://dl.bintray.com/kotlin/kotlin-dev' } +} +dependencies { + compile "org.jetbrains.kotlin:kotlin-stdlib" +} +compileKotlin { + kotlinOptions { + freeCompilerArgs = ["-XXLanguage:+SamConversionForKotlinFunctions"] // Free compiler arguments + } +} diff --git a/idea/testData/gradle/configurator/enableFeatureSupportToExistentArgumentsWithXFlag/build.gradle.after b/idea/testData/gradle/configurator/enableFeatureSupportToExistentArgumentsWithXFlag/build.gradle.after new file mode 100644 index 00000000000..764c52e54ad --- /dev/null +++ b/idea/testData/gradle/configurator/enableFeatureSupportToExistentArgumentsWithXFlag/build.gradle.after @@ -0,0 +1,25 @@ +buildscript { + repositories { + jcenter() + mavenCentral() + maven { url 'https://dl.bintray.com/kotlin/kotlin-dev' } + } + dependencies { + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.60-dev-1951" + } +} +apply plugin: "kotlin" +repositories { + jcenter() + mavenCentral() + maven { url 'https://dl.bintray.com/kotlin/kotlin-dev' } +} +dependencies { + compile "org.jetbrains.kotlin:kotlin-stdlib" +} +compileKotlin { + kotlinOptions { + freeCompilerArgs = ["-XXLanguage:+SamConversionForKotlinFunctions", "-Xinline-classes"] + // Free compiler arguments + } +} diff --git a/idea/testData/gradle/configurator/enableFeatureSupportWithXFlag/build.gradle b/idea/testData/gradle/configurator/enableFeatureSupportWithXFlag/build.gradle new file mode 100644 index 00000000000..9553419c833 --- /dev/null +++ b/idea/testData/gradle/configurator/enableFeatureSupportWithXFlag/build.gradle @@ -0,0 +1,19 @@ +buildscript { + repositories { + jcenter() + mavenCentral() + maven { url 'https://dl.bintray.com/kotlin/kotlin-dev' } + } + dependencies { + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.60-dev-1951" + } +} +apply plugin: "kotlin" +repositories { + jcenter() + mavenCentral() + maven { url 'https://dl.bintray.com/kotlin/kotlin-dev' } +} +dependencies { + compile "org.jetbrains.kotlin:kotlin-stdlib" +} diff --git a/idea/testData/gradle/configurator/enableFeatureSupportWithXFlag/build.gradle.after b/idea/testData/gradle/configurator/enableFeatureSupportWithXFlag/build.gradle.after new file mode 100644 index 00000000000..a386d882f35 --- /dev/null +++ b/idea/testData/gradle/configurator/enableFeatureSupportWithXFlag/build.gradle.after @@ -0,0 +1,24 @@ +buildscript { + repositories { + jcenter() + mavenCentral() + maven { url 'https://dl.bintray.com/kotlin/kotlin-dev' } + } + dependencies { + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.60-dev-1951" + } +} +apply plugin: "kotlin" +repositories { + jcenter() + mavenCentral() + maven { url 'https://dl.bintray.com/kotlin/kotlin-dev' } +} +dependencies { + compile "org.jetbrains.kotlin:kotlin-stdlib" +} +compileKotlin { + kotlinOptions { + freeCompilerArgs = ["-Xinline-classes"] + } +}