diff --git a/plugins/gradle/java/src/service/syncContributor/GradleSourceRootSyncContributor.kt b/plugins/gradle/java/src/service/syncContributor/GradleSourceRootSyncContributor.kt index 1c723e9eace50..14c89862cc0d7 100644 --- a/plugins/gradle/java/src/service/syncContributor/GradleSourceRootSyncContributor.kt +++ b/plugins/gradle/java/src/service/syncContributor/GradleSourceRootSyncContributor.kt @@ -5,6 +5,7 @@ import com.intellij.java.workspace.entities.JavaResourceRootPropertiesEntity import com.intellij.java.workspace.entities.JavaSourceRootPropertiesEntity import com.intellij.java.workspace.entities.javaResourceRoots import com.intellij.java.workspace.entities.javaSourceRoots +import com.intellij.openapi.externalSystem.autolink.forEachExtensionSafeAsync import com.intellij.openapi.externalSystem.model.project.ExternalSystemSourceType import com.intellij.openapi.externalSystem.model.project.IExternalSystemSourceType import com.intellij.openapi.progress.checkCanceled @@ -33,6 +34,8 @@ import com.intellij.workspaceModel.ide.legacyBridge.impl.java.JAVA_TEST_RESOURCE import com.intellij.workspaceModel.ide.legacyBridge.impl.java.JAVA_TEST_ROOT_ENTITY_TYPE_ID import org.jetbrains.plugins.gradle.model.ExternalProject import org.jetbrains.plugins.gradle.model.ExternalSourceSet +import org.jetbrains.plugins.gradle.model.GradleLightBuild +import org.jetbrains.plugins.gradle.model.GradleLightProject import org.jetbrains.plugins.gradle.model.GradleSourceSetModel import org.jetbrains.plugins.gradle.service.project.GradleContentRootIndex import org.jetbrains.plugins.gradle.service.project.GradleProjectResolverUtil @@ -88,7 +91,13 @@ internal class GradleSourceRootSyncContributor : GradleSyncContributor { val contentRootPaths = contentRootIndex.resolveContentRoots(externalProject, sourceSet) val sourceSetModuleName = GradleProjectResolverUtil.resolveSourceSetModuleName(context, storage, projectModel, externalProject, sourceSet.name) val sourceRootData = GradleSourceRootData(externalProject, sourceSet, contentRootPaths, sourceSetModuleName, entitySource) - storage addEntity createModuleEntity(context, sourceRootData) + val moduleEntity = createModuleEntity(context, sourceRootData) + GradleSourceRootSyncContributorExtension.EP_NAME.forEachExtensionSafeAsync { + it.configureSourceSetModules(GradleSourceSetSyncContextImpl( + context, buildModel, projectModel, moduleEntity, sourceSet.name + )) + } + storage addEntity moduleEntity } } } @@ -213,4 +222,12 @@ internal class GradleSourceRootSyncContributor : GradleSyncContributor { override val projectPath: String, override val phase: GradleSyncPhase, ) : GradleBridgeEntitySource + + private data class GradleSourceSetSyncContextImpl( + override val resolverContext: ProjectResolverContext, + override val buildModel: GradleLightBuild, + override val projectModel: GradleLightProject, + override val moduleEntity: ModuleEntityBuilder, + override val sourceSetName: String + ) : GradleSourceSetSyncContext } \ No newline at end of file diff --git a/plugins/gradle/java/src/service/syncContributor/GradleSourceRootSyncContributorExtension.kt b/plugins/gradle/java/src/service/syncContributor/GradleSourceRootSyncContributorExtension.kt new file mode 100644 index 0000000000000..ecc252629a092 --- /dev/null +++ b/plugins/gradle/java/src/service/syncContributor/GradleSourceRootSyncContributorExtension.kt @@ -0,0 +1,29 @@ +// Copyright 2000-2026 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +package org.jetbrains.plugins.gradle.service.syncContributor + +import com.intellij.openapi.extensions.ExtensionPointName +import com.intellij.platform.workspace.jps.entities.ModuleEntityBuilder +import com.intellij.platform.workspace.storage.MutableEntityStorage +import org.jetbrains.annotations.ApiStatus +import org.jetbrains.plugins.gradle.model.ExternalSourceSet +import org.jetbrains.plugins.gradle.model.GradleLightBuild +import org.jetbrains.plugins.gradle.model.GradleLightProject +import org.jetbrains.plugins.gradle.service.project.ProjectResolverContext + +@ApiStatus.NonExtendable +interface GradleSourceSetSyncContext { + val resolverContext: ProjectResolverContext + val buildModel: GradleLightBuild + val projectModel: GradleLightProject + val moduleEntity: ModuleEntityBuilder + val sourceSetName: String +} + +interface GradleSourceRootSyncContributorExtension { + suspend fun configureSourceSetModules(context: GradleSourceSetSyncContext) + + companion object { + @JvmField + val EP_NAME: ExtensionPointName = ExtensionPointName.create("org.jetbrains.plugins.gradle.sourceRootSyncContributor") + } +} \ No newline at end of file diff --git a/plugins/gradle/plugin-resources/intellij.gradle.xml b/plugins/gradle/plugin-resources/intellij.gradle.xml index 1c6a0f21ea201..df76eab239990 100644 --- a/plugins/gradle/plugin-resources/intellij.gradle.xml +++ b/plugins/gradle/plugin-resources/intellij.gradle.xml @@ -15,6 +15,9 @@ + diff --git a/plugins/gradle/src/org/jetbrains/plugins/gradle/service/project/CommonGradleProjectResolverExtension.java b/plugins/gradle/src/org/jetbrains/plugins/gradle/service/project/CommonGradleProjectResolverExtension.java index 9f408bddb9fe5..61ad1d4b59745 100644 --- a/plugins/gradle/src/org/jetbrains/plugins/gradle/service/project/CommonGradleProjectResolverExtension.java +++ b/plugins/gradle/src/org/jetbrains/plugins/gradle/service/project/CommonGradleProjectResolverExtension.java @@ -6,6 +6,7 @@ import com.intellij.gradle.toolingExtension.impl.model.buildScriptClasspathModel.GradleBuildScriptClasspathModelProvider; import com.intellij.gradle.toolingExtension.impl.model.projectModel.GradleExternalProjectModelProvider; import com.intellij.gradle.toolingExtension.impl.model.sourceSetDependencyModel.GradleSourceSetDependencyModelProvider; +import com.intellij.gradle.toolingExtension.impl.model.sourceSetDependencyModel.GradleSourceSetDependencyPolicyModelProvider; import com.intellij.gradle.toolingExtension.impl.model.sourceSetModel.GradleSourceSetModelProvider; import com.intellij.gradle.toolingExtension.impl.model.taskModel.GradleTaskModelProvider; import com.intellij.gradle.toolingExtension.util.GradleVersionUtil; @@ -795,6 +796,7 @@ private static boolean isSimpleTaskNameAllowed(@NotNull GradleModuleData gradleM super.getModelProviders(), new GradleSourceSetModelProvider(), new GradleSourceSetDependencyModelProvider(), + new GradleSourceSetDependencyPolicyModelProvider(), new GradleExternalProjectModelProvider(), new GradleTaskModelProvider(), new GradleBuildScriptClasspathModelProvider() diff --git a/plugins/gradle/tooling-extension-api/src/com/intellij/gradle/toolingExtension/modelAction/GradleModelFetchPhase.kt b/plugins/gradle/tooling-extension-api/src/com/intellij/gradle/toolingExtension/modelAction/GradleModelFetchPhase.kt index 818113ae0572c..2cffe7d09efa7 100644 --- a/plugins/gradle/tooling-extension-api/src/com/intellij/gradle/toolingExtension/modelAction/GradleModelFetchPhase.kt +++ b/plugins/gradle/tooling-extension-api/src/com/intellij/gradle/toolingExtension/modelAction/GradleModelFetchPhase.kt @@ -65,6 +65,14 @@ sealed interface GradleModelFetchPhase : Comparable, Seri @JvmField val PROJECT_MODEL_PHASE: GradleModelFetchPhase = BuildFinished(0, "PROJECT_MODEL_PHASE") + /** + * In this phase, Gradle model providers fetch the Gradle dependency download policy. This phase influences the behavior of other model + * builders, but doesn't provide any models itself. + */ + @JvmField + @ApiStatus.Internal + val DEPENDENCY_DOWNLOAD_POLICY_PHASE: GradleModelFetchPhase = BuildFinished(500, "DEPENDENCY_DOWNLOAD_POLICY_PHASE") + /** * In this phase, Gradle model providers fetch a Gradle project source set models. */ diff --git a/plugins/gradle/tooling-extension-impl/src/com/intellij/gradle/toolingExtension/impl/model/sourceSetDependencyModel/GradleSourceSetDependencyModelProvider.java b/plugins/gradle/tooling-extension-impl/src/com/intellij/gradle/toolingExtension/impl/model/sourceSetDependencyModel/GradleSourceSetDependencyModelProvider.java index ab1fc115a5fea..6312913b8d12a 100644 --- a/plugins/gradle/tooling-extension-impl/src/com/intellij/gradle/toolingExtension/impl/model/sourceSetDependencyModel/GradleSourceSetDependencyModelProvider.java +++ b/plugins/gradle/tooling-extension-impl/src/com/intellij/gradle/toolingExtension/impl/model/sourceSetDependencyModel/GradleSourceSetDependencyModelProvider.java @@ -28,7 +28,6 @@ public void populateModels( @NotNull Collection buildModels, @NotNull GradleModelConsumer modelConsumer ) { - GradleModelProviderUtil.buildModelsRecursively(controller, buildModels, GradleDependencyDownloadPolicy.class, GradleModelConsumer.NOOP); GradleModelProviderUtil.buildModels(controller, buildModels, GradleSourceSetArtifactBuildRequest.class, GradleModelConsumer.NOOP); GradleModelProviderUtil.buildModels(controller, buildModels, GradleSourceSetDependencyModel.class, modelConsumer); } diff --git a/plugins/gradle/tooling-extension-impl/src/com/intellij/gradle/toolingExtension/impl/model/sourceSetDependencyModel/GradleSourceSetDependencyPolicyModelProvider.java b/plugins/gradle/tooling-extension-impl/src/com/intellij/gradle/toolingExtension/impl/model/sourceSetDependencyModel/GradleSourceSetDependencyPolicyModelProvider.java new file mode 100644 index 0000000000000..0ebfcf22d1ebc --- /dev/null +++ b/plugins/gradle/tooling-extension-impl/src/com/intellij/gradle/toolingExtension/impl/model/sourceSetDependencyModel/GradleSourceSetDependencyPolicyModelProvider.java @@ -0,0 +1,34 @@ +// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +package com.intellij.gradle.toolingExtension.impl.model.sourceSetDependencyModel; + +import com.intellij.gradle.toolingExtension.impl.model.dependencyDownloadPolicyModel.GradleDependencyDownloadPolicy; +import com.intellij.gradle.toolingExtension.impl.model.sourceSetArtifactIndex.GradleSourceSetArtifactBuildRequest; +import com.intellij.gradle.toolingExtension.impl.util.GradleModelProviderUtil; +import com.intellij.gradle.toolingExtension.modelAction.GradleModelFetchPhase; + +import org.gradle.tooling.BuildController; +import org.gradle.tooling.model.gradle.GradleBuild; +import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.plugins.gradle.model.GradleSourceSetDependencyModel; +import org.jetbrains.plugins.gradle.model.ProjectImportModelProvider; + +import java.util.Collection; + +@ApiStatus.Internal +public class GradleSourceSetDependencyPolicyModelProvider implements ProjectImportModelProvider { + + @Override + public GradleModelFetchPhase getPhase() { + return GradleModelFetchPhase.DEPENDENCY_DOWNLOAD_POLICY_PHASE; + } + + @Override + public void populateModels( + @NotNull BuildController controller, + @NotNull Collection buildModels, + @NotNull GradleModelConsumer modelConsumer + ) { + GradleModelProviderUtil.buildModelsRecursively(controller, buildModels, GradleDependencyDownloadPolicy.class, GradleModelConsumer.NOOP); + } +} diff --git a/plugins/kotlin/base/facet/src/org/jetbrains/kotlin/idea/facet/KotlinFacetUtils.kt b/plugins/kotlin/base/facet/src/org/jetbrains/kotlin/idea/facet/KotlinFacetUtils.kt index 78a0cabfb7d13..c9d6553f5ec9f 100644 --- a/plugins/kotlin/base/facet/src/org/jetbrains/kotlin/idea/facet/KotlinFacetUtils.kt +++ b/plugins/kotlin/base/facet/src/org/jetbrains/kotlin/idea/facet/KotlinFacetUtils.kt @@ -179,8 +179,6 @@ fun applyCompilerArgumentsToFacetSettings( ) { with(kotlinFacetSettings) { updateCompilerArguments { - - val oldPluginOptions = this.pluginOptions val emptyArgs = this::class.java.getDeclaredConstructor().newInstance() @@ -200,73 +198,78 @@ fun applyCompilerArgumentsToFacetSettings( if (modelsProvider != null && module != null) module.configureSdkIfPossible(this, modelsProvider) - val allFacetFields = this.kotlinFacetFields.allFields - - val ignoredFields = hashSetOf( - K2JVMCompilerArguments::noJdk.name, - K2JVMCompilerArguments::jdkHome.name, - ) - - val ignoredAsAdditionalArguments = ignoredFields + hashSetOf( - CommonCompilerArguments::fragments.name, - CommonCompilerArguments::fragmentRefines.name, - CommonCompilerArguments::fragmentSources.name, - - K2JVMCompilerArguments::moduleName.name, - K2JVMCompilerArguments::noReflect.name, - K2JVMCompilerArguments::noStdlib.name, - K2JVMCompilerArguments::allowNoSourceFiles.name, - K2JVMCompilerArguments::jvmDefault.name, - K2JVMCompilerArguments::reportPerf.name, - - K2NativeCompilerArguments::enableAssertions.name, - K2NativeCompilerArguments::debug.name, - K2NativeCompilerArguments::outputName.name, - K2NativeCompilerArguments::linkerArguments.name, - K2NativeCompilerArguments::singleLinkerArguments.name, - K2NativeCompilerArguments::produce.name, - K2NativeCompilerArguments::target.name, - K2NativeCompilerArguments::shortModuleName.name, - K2NativeCompilerArguments::noendorsedlibs.name, - - K2JSCompilerArguments::outputFile.name, - - K2JSCompilerArguments::outputDir.name, - K2JSCompilerArguments::moduleName.name, - ) - - fun exposeAsAdditionalArgument(property: KProperty1) = - /* Handled by facet directly */ - property.name !in allFacetFields && - /* Explicitly not shown to users as 'additional arguments' */ - property.name !in ignoredAsAdditionalArguments && - /* Default value from compiler arguments is used */ - property.get(this) != property.get(emptyArgs) - - - val additionalArgumentsString = with(this::class.java.getDeclaredConstructor().newInstance()) { - copyFieldsSatisfying(this@updateCompilerArguments, this) { exposeAsAdditionalArgument(it) } - val internalArguments = internalArguments.map(ManualLanguageFeatureSetting::stringRepresentation).toSet() - freeArgs = freeArgs.filterNot { it in internalArguments } - toArgumentStrings().joinToString(separator = " ") { - if (StringUtil.containsWhitespaces(it) || it.startsWith('"')) { - StringUtil.wrapWithDoubleQuote(StringUtil.escapeQuotes(it)) - } else it - } - } + updateCompilerSettings(this, emptyArgs) + } + } +} + +fun IKotlinFacetSettings.updateCompilerSettings( + args: CommonCompilerArguments, emptyArgs: CommonCompilerArguments = args::class.java.getDeclaredConstructor().newInstance() +) { - compilerSettings?.additionalArguments = additionalArgumentsString.ifEmpty { CompilerSettings.DEFAULT_ADDITIONAL_ARGUMENTS } + val allFacetFields = args.kotlinFacetFields.allFields - /* 'Reset' ignored fields and arguments that will be exposed as 'additional arguments' to the user */ - with(this::class.java.getDeclaredConstructor().newInstance()) { - copyFieldsSatisfying(this, this@updateCompilerArguments) { exposeAsAdditionalArgument(it) || it.name in ignoredFields } - } + fun exposeAsAdditionalArgument(property: KProperty1) =/* Handled by facet directly */ + property.name !in allFacetFields &&/* Explicitly not shown to users as 'additional arguments' */ + property.name !in ignoredAsAdditionalArguments &&/* Default value from compiler arguments is used */ + property.get(args) != property.get(emptyArgs) - updateMergedArguments() + + val additionalArgumentsString = with(args::class.java.getDeclaredConstructor().newInstance()) { + copyFieldsSatisfying(args, this) { exposeAsAdditionalArgument(it) } + val internalArguments = internalArguments.map(ManualLanguageFeatureSetting::stringRepresentation).toSet() + freeArgs = freeArgs.filterNot { it in internalArguments } + toArgumentStrings().joinToString(separator = " ") { + if (StringUtil.containsWhitespaces(it) || it.startsWith('"')) { + StringUtil.wrapWithDoubleQuote(StringUtil.escapeQuotes(it)) + } else it } } + + if (compilerSettings == null) compilerSettings = CompilerSettings() + compilerSettings?.additionalArguments = additionalArgumentsString.ifEmpty { CompilerSettings.DEFAULT_ADDITIONAL_ARGUMENTS } + + /* 'Reset' ignored fields and arguments that will be exposed as 'additional arguments' to the user */ + with(args::class.java.getDeclaredConstructor().newInstance()) { + copyFieldsSatisfying(this, args) { exposeAsAdditionalArgument(it) || it.name in ignoredFields } + } + + updateMergedArguments() } +private val ignoredFields = hashSetOf( + K2JVMCompilerArguments::noJdk.name, + K2JVMCompilerArguments::jdkHome.name, +) + +private val ignoredAsAdditionalArguments = ignoredFields + hashSetOf( + CommonCompilerArguments::fragments.name, + CommonCompilerArguments::fragmentRefines.name, + CommonCompilerArguments::fragmentSources.name, + + K2JVMCompilerArguments::moduleName.name, + K2JVMCompilerArguments::noReflect.name, + K2JVMCompilerArguments::noStdlib.name, + K2JVMCompilerArguments::allowNoSourceFiles.name, + K2JVMCompilerArguments::jvmDefault.name, + K2JVMCompilerArguments::reportPerf.name, + + K2NativeCompilerArguments::enableAssertions.name, + K2NativeCompilerArguments::debug.name, + K2NativeCompilerArguments::outputName.name, + K2NativeCompilerArguments::linkerArguments.name, + K2NativeCompilerArguments::singleLinkerArguments.name, + K2NativeCompilerArguments::produce.name, + K2NativeCompilerArguments::target.name, + K2NativeCompilerArguments::shortModuleName.name, + K2NativeCompilerArguments::noendorsedlibs.name, + + K2JSCompilerArguments::outputFile.name, + + K2JSCompilerArguments::outputDir.name, + K2JSCompilerArguments::moduleName.name, +) + private fun Module.configureSdkIfPossible(compilerArguments: CommonCompilerArguments, modelsProvider: IdeModifiableModelsProvider) { // SDK for Android module is already configured by Android plugin at this point if (isAndroidModule(modelsProvider) || shouldSkipSdkConfiguration(compilerArguments)) return diff --git a/plugins/kotlin/gradle/gradle-java/k1/test/org/jetbrains/kotlin/idea/codeInsight/gradle/GradleFacetImportTest.kt b/plugins/kotlin/gradle/gradle-java/k1/test/org/jetbrains/kotlin/idea/codeInsight/gradle/GradleFacetImportTest.kt index 64b2fe1ab7104..9e40e7a2db004 100644 --- a/plugins/kotlin/gradle/gradle-java/k1/test/org/jetbrains/kotlin/idea/codeInsight/gradle/GradleFacetImportTest.kt +++ b/plugins/kotlin/gradle/gradle-java/k1/test/org/jetbrains/kotlin/idea/codeInsight/gradle/GradleFacetImportTest.kt @@ -28,6 +28,7 @@ import org.jetbrains.kotlin.config.TestSourceKotlinRootType import org.jetbrains.kotlin.config.additionalArgumentsAsList import org.jetbrains.kotlin.idea.base.platforms.KotlinCommonLibraryKind import org.jetbrains.kotlin.idea.base.platforms.KotlinJavaScriptLibraryKind +import org.jetbrains.kotlin.idea.base.plugin.KotlinPluginMode import org.jetbrains.kotlin.idea.base.projectStructure.ModuleSourceRootMap import org.jetbrains.kotlin.idea.base.projectStructure.languageVersionSettings import org.jetbrains.kotlin.idea.base.projectStructure.productionSourceInfo @@ -61,39 +62,39 @@ val KotlinGradleImportingTestCase.facetSettings: IKotlinFacetSettings val KotlinGradleImportingTestCase.testFacetSettings: IKotlinFacetSettings get() = facetSettings("project.test") -class GradleFacetImportTest8 : KotlinGradleImportingTestCase() { +class GradleFacetImportK1Test8 : KotlinGradleImportingTestCase() { + override val pluginMode: KotlinPluginMode = KotlinPluginMode.K1 + @Test fun testJvmImport() { - configureByFiles() - importProject() - - with(facetSettings) { - assertEquals("1.3", languageLevel!!.versionString) - assertEquals("1.3", apiLevel!!.versionString) - assertFalse(compilerArguments!!.autoAdvanceLanguageVersion) - assertFalse(compilerArguments!!.autoAdvanceApiVersion) - assertEquals(JvmPlatforms.jvm8, targetPlatform) - assertEquals("1.7", (compilerArguments as K2JVMCompilerArguments).jvmTarget) - assertEquals("-Xjava-source-roots=tmp", compilerSettings!!.additionalArguments) - } + runImportTestWithPhasedSyncAssertions { + with(facetSettings) { + assertEquals("1.6", languageLevel!!.versionString) + assertEquals("1.6", apiLevel!!.versionString) + assertFalse(compilerArguments!!.autoAdvanceLanguageVersion) + assertFalse(compilerArguments!!.autoAdvanceApiVersion) + assertEquals(JvmPlatforms.jvm8, targetPlatform) + assertEquals("1.7", (compilerArguments as K2JVMCompilerArguments).jvmTarget) + assertEquals("-Xjava-source-roots=tmp", compilerSettings!!.additionalArguments) + } - with(testFacetSettings) { - assertEquals("1.3", languageLevel!!.versionString) - assertEquals("1.0", apiLevel!!.versionString) - assertFalse(compilerArguments!!.autoAdvanceLanguageVersion) - assertFalse(compilerArguments!!.autoAdvanceApiVersion) - assertEquals(JvmPlatforms.jvm6, targetPlatform) - assertEquals("1.6", (compilerArguments as K2JVMCompilerArguments).jvmTarget) - assertEquals( - "-Xjava-source-roots=tmpTest", - compilerSettings!!.additionalArguments - ) + with(testFacetSettings) { + assertEquals("1.6", languageLevel!!.versionString) + assertEquals("1.0", apiLevel!!.versionString) + assertFalse(compilerArguments!!.autoAdvanceLanguageVersion) + assertFalse(compilerArguments!!.autoAdvanceApiVersion) + assertEquals(JvmPlatforms.jvm6, targetPlatform) + assertEquals("1.6", (compilerArguments as K2JVMCompilerArguments).jvmTarget) + assertEquals( + "-Xjava-source-roots=tmpTest", + compilerSettings!!.additionalArguments + ) + } + assertAllModulesConfigured() } assertEquals(KotlinJpsPluginSettings.fallbackVersionForOutdatedCompiler, KotlinJpsPluginSettings.jpsVersion(myProject)) - assertAllModulesConfigured() - assertEquals( listOf( "file:///src/main/java" to JavaSourceRootType.SOURCE, @@ -113,37 +114,36 @@ class GradleFacetImportTest8 : KotlinGradleImportingTestCase() { ) } + @Test fun testJvmImportWithPlugin() { - configureByFiles() - importProject() - - assertAllModulesConfigured() + runImportTestWithPhasedSyncAssertions { + assertAllModulesConfigured() + } } @Test fun testJvmImportWithCustomSourceSets() { - configureByFiles() - importProject() + runImportTestWithPhasedSyncAssertions { + with(facetSettings("project.myMain")) { + assertEquals("1.6", languageLevel!!.versionString) + assertEquals("1.6", apiLevel!!.versionString) + assertEquals(JvmPlatforms.jvm8, targetPlatform) + assertEquals("1.7", (compilerArguments as K2JVMCompilerArguments).jvmTarget) + assertEquals("-Xjava-source-roots=tmp", compilerSettings!!.additionalArguments) + } - with(facetSettings("project.myMain")) { - assertEquals("1.3", languageLevel!!.versionString) - assertEquals("1.3", apiLevel!!.versionString) - assertEquals(JvmPlatforms.jvm8, targetPlatform) - assertEquals("1.7", (compilerArguments as K2JVMCompilerArguments).jvmTarget) - assertEquals("-Xjava-source-roots=tmp", compilerSettings!!.additionalArguments) - } + with(facetSettings("project.myTest")) { + assertEquals("1.6", languageLevel!!.versionString) + assertEquals("1.0", apiLevel!!.versionString) + assertEquals(JvmPlatforms.jvm6, targetPlatform) + assertEquals("1.6", (compilerArguments as K2JVMCompilerArguments).jvmTarget) + assertEquals("-Xjava-source-roots=tmpTest", compilerSettings!!.additionalArguments) + } - with(facetSettings("project.myTest")) { - assertEquals("1.3", languageLevel!!.versionString) - assertEquals("1.0", apiLevel!!.versionString) - assertEquals(JvmPlatforms.jvm6, targetPlatform) - assertEquals("1.6", (compilerArguments as K2JVMCompilerArguments).jvmTarget) - assertEquals("-Xjava-source-roots=tmpTest", compilerSettings!!.additionalArguments) + assertAllModulesConfigured() } - assertAllModulesConfigured() - assertEquals( listOf( "file:///src/main/java" to JavaSourceRootType.SOURCE, @@ -166,22 +166,21 @@ class GradleFacetImportTest8 : KotlinGradleImportingTestCase() { @Test @TargetVersions("6.0.1") // Gradle 4.9 isn't able to import 1.4 KGP fun testJpsCompilerMultiModule() { - configureByFiles() - importProject() + runImportTestWithPhasedSyncAssertions { - with(facetSettings("project.module1.main")) { - assertEquals("1.3", languageLevel!!.versionString) - assertEquals("1.3", apiLevel!!.versionString) - } + with(facetSettings("project.module1.main")) { + assertEquals("1.6", languageLevel!!.versionString) + assertEquals("1.6", apiLevel!!.versionString) + } - with(facetSettings("project.module2.main")) { - assertEquals("1.4", languageLevel!!.versionString) - assertEquals("1.4", apiLevel!!.versionString) + with(facetSettings("project.module2.main")) { + assertEquals("1.4", languageLevel!!.versionString) + assertEquals("1.4", apiLevel!!.versionString) + } + assertAllModulesConfigured() } assertEquals(KotlinJpsPluginSettings.fallbackVersionForOutdatedCompiler, KotlinJpsPluginSettings.jpsVersion(myProject)) - - assertAllModulesConfigured() } @Test @@ -190,8 +189,8 @@ class GradleFacetImportTest8 : KotlinGradleImportingTestCase() { importProject() with(facetSettings) { - assertEquals("1.3", languageLevel!!.versionString) - assertEquals("1.3", apiLevel!!.versionString) + assertEquals("1.6", languageLevel!!.versionString) + assertEquals("1.6", apiLevel!!.versionString) assertFalse(compilerArguments!!.autoAdvanceLanguageVersion) assertFalse(compilerArguments!!.autoAdvanceApiVersion) assertTrue(targetPlatform.isJs()) @@ -208,7 +207,7 @@ class GradleFacetImportTest8 : KotlinGradleImportingTestCase() { } with(testFacetSettings) { - assertEquals("1.3", languageLevel!!.versionString) + assertEquals("1.6", languageLevel!!.versionString) assertEquals("1.0", apiLevel!!.versionString) assertFalse(compilerArguments!!.autoAdvanceLanguageVersion) assertFalse(compilerArguments!!.autoAdvanceApiVersion) @@ -259,8 +258,8 @@ class GradleFacetImportTest8 : KotlinGradleImportingTestCase() { importProject() with(facetSettings) { - assertEquals("1.3", languageLevel!!.versionString) - assertEquals("1.3", apiLevel!!.versionString) + assertEquals("1.6", languageLevel!!.versionString) + assertEquals("1.6", apiLevel!!.versionString) assertTrue(targetPlatform.isJs()) } @@ -297,8 +296,8 @@ class GradleFacetImportTest8 : KotlinGradleImportingTestCase() { importProject() with(facetSettings("project.myMain")) { - assertEquals("1.3", languageLevel!!.versionString) - assertEquals("1.3", apiLevel!!.versionString) + assertEquals("1.6", languageLevel!!.versionString) + assertEquals("1.6", apiLevel!!.versionString) assertTrue(targetPlatform.isJs()) with(compilerArguments as K2JSCompilerArguments) { @@ -310,7 +309,7 @@ class GradleFacetImportTest8 : KotlinGradleImportingTestCase() { } with(facetSettings("project.myTest")) { - assertEquals("1.3", languageLevel!!.versionString) + assertEquals("1.6", languageLevel!!.versionString) assertEquals("1.0", apiLevel!!.versionString) assertTrue(targetPlatform.isJs()) @@ -352,13 +351,12 @@ class GradleFacetImportTest8 : KotlinGradleImportingTestCase() { @Test fun testJvmImportByPlatformPlugin() { - configureByFiles() - importProject() - - with(facetSettings) { - assertEquals("1.3", languageLevel!!.versionString) - assertEquals("1.3", apiLevel!!.versionString) - assertEquals(JvmPlatforms.jvm6, targetPlatform) + runImportTestWithPhasedSyncAssertions { + with(facetSettings) { + assertEquals("1.6", languageLevel!!.versionString) + assertEquals("1.6", apiLevel!!.versionString) + assertEquals(JvmPlatforms.jvm6, targetPlatform) + } } assertEquals( @@ -385,8 +383,8 @@ class GradleFacetImportTest8 : KotlinGradleImportingTestCase() { importProject() with(facetSettings) { - assertEquals("1.3", languageLevel!!.versionString) - assertEquals("1.3", apiLevel!!.versionString) + assertEquals("1.6", languageLevel!!.versionString) + assertEquals("1.6", apiLevel!!.versionString) assertTrue(targetPlatform.isJs()) } @@ -450,13 +448,12 @@ class GradleFacetImportTest8 : KotlinGradleImportingTestCase() { @Test fun testJvmImportByKotlinPlugin() { - configureByFiles() - importProject() - - with(facetSettings) { - assertEquals("1.3", languageLevel!!.versionString) - assertEquals("1.3", apiLevel!!.versionString) - assertEquals(JvmPlatforms.jvm6, targetPlatform) + runImportTestWithPhasedSyncAssertions { + with(facetSettings) { + assertEquals("1.6", languageLevel!!.versionString) + assertEquals("1.6", apiLevel!!.versionString) + assertEquals(JvmPlatforms.jvm6, targetPlatform) + } } assertEquals(KotlinJpsPluginSettings.fallbackVersionForOutdatedCompiler, KotlinJpsPluginSettings.jpsVersion(myProject)) @@ -486,8 +483,8 @@ class GradleFacetImportTest8 : KotlinGradleImportingTestCase() { importProject() with(facetSettings) { - assertEquals("1.3", languageLevel!!.versionString) - assertEquals("1.3", apiLevel!!.versionString) + assertEquals("1.6", languageLevel!!.versionString) + assertEquals("1.6", apiLevel!!.versionString) assertTrue(targetPlatform.isJs()) } @@ -512,14 +509,13 @@ class GradleFacetImportTest8 : KotlinGradleImportingTestCase() { @Test fun testArgumentEscaping() { - configureByFiles() - importProject() - - with(facetSettings) { - assertEquals( - listOf("-Xbuild-file=module with spaces"), - compilerSettings!!.additionalArgumentsAsList - ) + runImportTestWithPhasedSyncAssertions { + with(facetSettings) { + assertEquals( + listOf("-Xbuild-file=module with spaces"), + compilerSettings!!.additionalArgumentsAsList + ) + } } } @@ -601,33 +597,30 @@ class GradleFacetImportTest8 : KotlinGradleImportingTestCase() { @Test @TargetVersions("<7.6") fun testNoFacetInModuleWithoutKotlinPlugin() { - configureByFiles() - - importProject() + runImportTestWithPhasedSyncAssertions { + assertNotNull(KotlinFacet.get(getModule("gr01.main"))) + assertNotNull(KotlinFacet.get(getModule("gr01.test"))) + assertNull(KotlinFacet.get(getModule("gr01.m1.main"))) + assertNull(KotlinFacet.get(getModule("gr01.m1.test"))) + } - assertNotNull(KotlinFacet.get(getModule("gr01.main"))) - assertNotNull(KotlinFacet.get(getModule("gr01.test"))) - assertNull(KotlinFacet.get(getModule("gr01.m1.main"))) - assertNull(KotlinFacet.get(getModule("gr01.m1.test"))) } @Test fun testClasspathWithDependenciesImport() { - configureByFiles() - importProject() - - with(facetSettings) { - assertEquals("tmp.jar", (compilerArguments as K2JVMCompilerArguments).classpath) + runImportTestWithPhasedSyncAssertions { + with(facetSettings) { + assertEquals("tmp.jar", (compilerArguments as K2JVMCompilerArguments).classpath) + } } } @Test fun testDependenciesClasspathImport() { - configureByFiles() - importProject() - - with(facetSettings) { - assertEquals(null, (compilerArguments as K2JVMCompilerArguments).classpath) + runImportTestWithPhasedSyncAssertions { + with(facetSettings) { + assertEquals(null, (compilerArguments as K2JVMCompilerArguments).classpath) + } } } @@ -666,15 +659,14 @@ class GradleFacetImportTest8 : KotlinGradleImportingTestCase() { @Test fun testApiVersionExceedingLanguageVersion() { - configureByFiles() - importProject() + runImportTestWithPhasedSyncAssertions { + with(facetSettings) { + assertEquals("1.1", languageLevel!!.versionString) + assertEquals("1.2", apiLevel!!.versionString) + } - with(facetSettings) { - assertEquals("1.1", languageLevel!!.versionString) - assertEquals("1.2", apiLevel!!.versionString) + assertAllModulesConfigured() } - - assertAllModulesConfigured() } @Test @@ -684,15 +676,14 @@ class GradleFacetImportTest8 : KotlinGradleImportingTestCase() { apiVersion = "1.0" } - configureByFiles() - importProject() + runImportTestWithPhasedSyncAssertions { + with(facetSettings) { + assertEquals("1.6", languageLevel!!.versionString) + assertEquals("1.6", apiLevel!!.versionString) + } - with(facetSettings) { - assertEquals("1.3", languageLevel!!.versionString) - assertEquals("1.3", apiLevel!!.versionString) + assertAllModulesConfigured() } - - assertAllModulesConfigured() } @Test @@ -748,22 +739,24 @@ class GradleFacetImportTest8 : KotlinGradleImportingTestCase() { @Test fun testInternalArgumentsFacetImporting() { - configureByFiles() - importProject() - - // Version is indeed 1.3 - assertEquals(LanguageVersion.KOTLIN_1_3, facetSettings.languageLevel) - - // We haven't lost internal argument during importing to facet - assertTrue("Argument is missing from compiler settings", "-XXLanguage:+InlineClasses" in facetSettings.compilerSettings!!.additionalArguments) + runImportTestWithPhasedSyncAssertions { + // Version is indeed 1.3 + assertEquals(LanguageVersion.KOTLIN_1_3, facetSettings.languageLevel) + + // We haven't lost internal argument during importing to facet + assertTrue( + "Argument is missing from compiler settings", + "-XXLanguage:+InlineClasses" in facetSettings.compilerSettings!!.additionalArguments + ) - // Inline classes are enabled even though LV = 1.3 - assertEquals( - LanguageFeature.State.ENABLED, - getModule("project.main").languageVersionSettings.getFeatureSupport(LanguageFeature.InlineClasses) - ) + // Inline classes are enabled even though LV = 1.3 + assertEquals( + LanguageFeature.State.ENABLED, + getModule("project.main").languageVersionSettings.getFeatureSupport(LanguageFeature.InlineClasses) + ) - assertAllModulesConfigured() + assertAllModulesConfigured() + } } // kotlin-2js plugin @@ -791,11 +784,10 @@ class GradleFacetImportTest8 : KotlinGradleImportingTestCase() { @Test fun testNoFriendPathsAreShown() { - configureByFiles() - importProject() - - assertEquals("", testFacetSettings.compilerSettings!!.additionalArguments) - assertAllModulesConfigured() + runImportTestWithPhasedSyncAssertions { + assertEquals("", testFacetSettings.compilerSettings!!.additionalArguments) + assertAllModulesConfigured() + } } @Test @@ -807,7 +799,7 @@ class GradleFacetImportTest8 : KotlinGradleImportingTestCase() { importProject() - TestCase.assertEquals("1.3", holder.settings.languageVersion) + TestCase.assertEquals("1.6", holder.settings.languageVersion) } @Test @@ -825,11 +817,10 @@ class GradleFacetImportTest8 : KotlinGradleImportingTestCase() { @Test fun testImportCompilerArgumentsWithInvalidDependencies() { - configureByFiles() - importProject() - - with(facetSettings("project.main")) { - assertEquals("1.8", (mergedCompilerArguments as K2JVMCompilerArguments).jvmTarget) + runImportTestWithPhasedSyncAssertions { + with(facetSettings("project.main")) { + assertEquals("1.8", (mergedCompilerArguments as K2JVMCompilerArguments).jvmTarget) + } } } diff --git a/plugins/kotlin/gradle/gradle-java/k2/intellij.kotlin.gradle.java.iml b/plugins/kotlin/gradle/gradle-java/k2/intellij.kotlin.gradle.java.iml index 64f4f33c8b656..ea1b0b6622548 100644 --- a/plugins/kotlin/gradle/gradle-java/k2/intellij.kotlin.gradle.java.iml +++ b/plugins/kotlin/gradle/gradle-java/k2/intellij.kotlin.gradle.java.iml @@ -13,5 +13,21 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/plugins/kotlin/gradle/gradle-java/k2/test/org/jetbrains/kotlin/idea/k2/codeInsight/gradle/GradleFacetImportK2Test.kt b/plugins/kotlin/gradle/gradle-java/k2/test/org/jetbrains/kotlin/idea/k2/codeInsight/gradle/GradleFacetImportK2Test.kt new file mode 100644 index 0000000000000..56f5e4e52d501 --- /dev/null +++ b/plugins/kotlin/gradle/gradle-java/k2/test/org/jetbrains/kotlin/idea/k2/codeInsight/gradle/GradleFacetImportK2Test.kt @@ -0,0 +1,816 @@ +// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. + +package org.jetbrains.kotlin.idea.codeInsight.gradle + +import com.intellij.openapi.application.runReadAction +import com.intellij.openapi.externalSystem.importing.ImportSpec +import com.intellij.openapi.externalSystem.importing.ImportSpecBuilder +import com.intellij.openapi.projectRoots.JavaSdkVersion +import com.intellij.openapi.roots.LibraryOrderEntry +import com.intellij.openapi.roots.ModuleRootManager +import com.intellij.openapi.roots.OrderRootType +import com.intellij.openapi.roots.impl.libraries.LibraryEx +import junit.framework.TestCase +import org.jetbrains.jps.model.java.JavaResourceRootType +import org.jetbrains.jps.model.java.JavaSourceRootType +import org.jetbrains.jps.model.module.JpsModuleSourceRootType +import org.jetbrains.kotlin.cli.common.arguments.K2JSCompilerArguments +import org.jetbrains.kotlin.cli.common.arguments.K2JVMCompilerArguments +import org.jetbrains.kotlin.cli.common.arguments.K2MetadataCompilerArguments +import org.jetbrains.kotlin.config.* +import org.jetbrains.kotlin.idea.base.platforms.KotlinCommonLibraryKind +import org.jetbrains.kotlin.idea.base.platforms.KotlinJavaScriptLibraryKind +import org.jetbrains.kotlin.idea.base.plugin.KotlinPluginMode +import org.jetbrains.kotlin.idea.base.projectStructure.ModuleSourceRootMap +import org.jetbrains.kotlin.idea.base.projectStructure.languageVersionSettings +import org.jetbrains.kotlin.idea.compiler.configuration.KotlinCommonCompilerArgumentsHolder +import org.jetbrains.kotlin.idea.compiler.configuration.KotlinJpsPluginSettings +import org.jetbrains.kotlin.idea.configuration.ConfigureKotlinStatus +import org.jetbrains.kotlin.idea.configuration.allConfigurators +import org.jetbrains.kotlin.idea.facet.KotlinFacet +import org.jetbrains.kotlin.idea.framework.KotlinSdkType +import org.jetbrains.kotlin.idea.util.projectStructure.allModules +import org.jetbrains.kotlin.idea.util.projectStructure.sdk +import org.jetbrains.kotlin.platform.isCommon +import org.jetbrains.kotlin.platform.isJs +import org.jetbrains.kotlin.platform.jvm.JvmPlatforms +import org.jetbrains.plugins.gradle.tooling.annotation.TargetVersions +import org.junit.Ignore +import org.junit.Test + +fun KotlinGradleImportingTestCase.facetSettings(moduleName: String): IKotlinFacetSettings { + val facet = KotlinFacet.get(getModule(moduleName)) ?: error("Kotlin facet not found in module $moduleName") + return facet.configuration.settings +} + +val KotlinGradleImportingTestCase.facetSettings: IKotlinFacetSettings + get() = facetSettings("project.main") + +val KotlinGradleImportingTestCase.testFacetSettings: IKotlinFacetSettings + get() = facetSettings("project.test") + +class GradleFacetImportK2Test8 : KotlinGradleImportingTestCase() { + override val pluginMode: KotlinPluginMode = KotlinPluginMode.K2 + + @Test + fun testJvmImport() { + runImportTestWithPhasedSyncAssertions { + with(facetSettings) { + assertEquals("1.6", languageLevel!!.versionString) + assertEquals("1.6", apiLevel!!.versionString) + assertFalse(compilerArguments!!.autoAdvanceLanguageVersion) + assertFalse(compilerArguments!!.autoAdvanceApiVersion) + assertEquals(JvmPlatforms.jvm8, targetPlatform) + assertEquals("1.7", (compilerArguments as K2JVMCompilerArguments).jvmTarget) + assertEquals("-Xjava-source-roots=tmp", compilerSettings!!.additionalArguments) + } + + with(testFacetSettings) { + assertEquals("1.6", languageLevel!!.versionString) + assertEquals("1.0", apiLevel!!.versionString) + assertFalse(compilerArguments!!.autoAdvanceLanguageVersion) + assertFalse(compilerArguments!!.autoAdvanceApiVersion) + assertEquals(JvmPlatforms.jvm6, targetPlatform) + assertEquals("1.6", (compilerArguments as K2JVMCompilerArguments).jvmTarget) + assertEquals( + "-Xjava-source-roots=tmpTest", + compilerSettings!!.additionalArguments + ) + } + assertAllModulesConfigured() + } + + assertEquals(KotlinJpsPluginSettings.fallbackVersionForOutdatedCompiler, KotlinJpsPluginSettings.jpsVersion(myProject)) + + assertEquals( + listOf( + "file:///src/main/java" to JavaSourceRootType.SOURCE, + "file:///src/main/kotlin" to JavaSourceRootType.SOURCE, + "file:///src/main/resources" to JavaResourceRootType.RESOURCE + ), + getSourceRootInfos("project.main") + ) + + assertEquals( + listOf( + "file:///src/test/java" to JavaSourceRootType.TEST_SOURCE, + "file:///src/test/kotlin" to JavaSourceRootType.TEST_SOURCE, + "file:///src/test/resources" to JavaResourceRootType.TEST_RESOURCE + ), + getSourceRootInfos("project.test") + ) + } + + + @Test + fun testJvmImportWithPlugin() { + runImportTestWithPhasedSyncAssertions { + assertAllModulesConfigured() + } + } + + @Test + fun testJvmImportWithCustomSourceSets() { + runImportTestWithPhasedSyncAssertions { + with(facetSettings("project.myMain")) { + assertEquals("1.6", languageLevel!!.versionString) + assertEquals("1.6", apiLevel!!.versionString) + assertEquals(JvmPlatforms.jvm8, targetPlatform) + assertEquals("1.7", (compilerArguments as K2JVMCompilerArguments).jvmTarget) + assertEquals("-Xjava-source-roots=tmp", compilerSettings!!.additionalArguments) + } + + with(facetSettings("project.myTest")) { + assertEquals("1.6", languageLevel!!.versionString) + assertEquals("1.0", apiLevel!!.versionString) + assertEquals(JvmPlatforms.jvm6, targetPlatform) + assertEquals("1.6", (compilerArguments as K2JVMCompilerArguments).jvmTarget) + assertEquals("-Xjava-source-roots=tmpTest", compilerSettings!!.additionalArguments) + } + + assertAllModulesConfigured() + } + + assertEquals( + listOf( + "file:///src/main/java" to JavaSourceRootType.SOURCE, + "file:///src/main/kotlin" to JavaSourceRootType.SOURCE, + "file:///src/main/resources" to JavaResourceRootType.RESOURCE + ), + getSourceRootInfos("project.main") + ) + + assertEquals( + listOf( + "file:///src/test/java" to JavaSourceRootType.TEST_SOURCE, + "file:///src/test/kotlin" to JavaSourceRootType.TEST_SOURCE, + "file:///src/test/resources" to JavaResourceRootType.TEST_RESOURCE + ), + getSourceRootInfos("project.test") + ) + } + + @Test + @TargetVersions("6.0.1") // Gradle 4.9 isn't able to import 1.4 KGP + fun testJpsCompilerMultiModule() { + runImportTestWithPhasedSyncAssertions { + + with(facetSettings("project.module1.main")) { + assertEquals("1.6", languageLevel!!.versionString) + assertEquals("1.6", apiLevel!!.versionString) + } + + with(facetSettings("project.module2.main")) { + assertEquals("1.4", languageLevel!!.versionString) + assertEquals("1.4", apiLevel!!.versionString) + } + assertAllModulesConfigured() + } + + assertEquals(KotlinJpsPluginSettings.fallbackVersionForOutdatedCompiler, KotlinJpsPluginSettings.jpsVersion(myProject)) + } + + @Test + fun testJsImport() { + configureByFiles() + importProject() + + with(facetSettings) { + assertEquals("1.6", languageLevel!!.versionString) + assertEquals("1.6", apiLevel!!.versionString) + assertFalse(compilerArguments!!.autoAdvanceLanguageVersion) + assertFalse(compilerArguments!!.autoAdvanceApiVersion) + assertTrue(targetPlatform.isJs()) + + with(compilerArguments as K2JSCompilerArguments) { + assertEquals(true, sourceMap) + assertEquals("plain", moduleKind) + } + + assertEquals( + "-main callMain", + compilerSettings!!.additionalArguments + ) + } + + with(testFacetSettings) { + assertEquals("1.6", languageLevel!!.versionString) + assertEquals("1.0", apiLevel!!.versionString) + assertFalse(compilerArguments!!.autoAdvanceLanguageVersion) + assertFalse(compilerArguments!!.autoAdvanceApiVersion) + assertTrue(targetPlatform.isJs()) + + with(compilerArguments as K2JSCompilerArguments) { + assertEquals(false, sourceMap) + assertEquals("umd", moduleKind) + } + + assertEquals( + "-main callTest", + compilerSettings!!.additionalArguments + ) + } + + val rootManager = ModuleRootManager.getInstance(getModule("project.main")) + val libraryEntries = rootManager.orderEntries.filterIsInstance() + val stdlib = libraryEntries.single { it.libraryName?.contains("js") ?: false }.library + + assertEquals(KotlinJavaScriptLibraryKind, (stdlib as LibraryEx).kind) + assertTrue(stdlib.getFiles(OrderRootType.CLASSES).isNotEmpty()) + + assertSameKotlinSdks("project.main", "project.test") + + assertEquals( + listOf>>( + "file:///src/main/kotlin" to SourceKotlinRootType, + "file:///src/main/resources" to ResourceKotlinRootType + ), + getSourceRootInfos("project.main") + ) + + assertEquals( + listOf>>( + "file:///src/test/kotlin" to TestSourceKotlinRootType, + "file:///src/test/resources" to TestResourceKotlinRootType + ), + getSourceRootInfos("project.test") + ) + + assertAllModulesConfigured() + } + + @Test + fun testJsImportTransitive() { + configureByFiles() + importProject() + + with(facetSettings) { + assertEquals("1.6", languageLevel!!.versionString) + assertEquals("1.6", apiLevel!!.versionString) + assertTrue(targetPlatform.isJs()) + } + + val rootManager = ModuleRootManager.getInstance(getModule("project.main")) + val stdlib = rootManager.orderEntries + .filterIsInstance() + .map { it.library as LibraryEx } + .first { "kotlin-stdlib-js" in it.name!! } + + assertEquals(KotlinJavaScriptLibraryKind, stdlib.kind) + + assertAllModulesConfigured() + + assertEquals( + listOf>>( + "file:///src/main/kotlin" to SourceKotlinRootType, + "file:///src/main/resources" to ResourceKotlinRootType + ), + getSourceRootInfos("project.main") + ) + + assertEquals( + listOf>>( + "file:///src/test/kotlin" to TestSourceKotlinRootType, + "file:///src/test/resources" to TestResourceKotlinRootType + ), + getSourceRootInfos("project.test") + ) + } + + @Test + fun testJsImportWithCustomSourceSets() { + configureByFiles() + importProject() + + with(facetSettings("project.myMain")) { + assertEquals("1.6", languageLevel!!.versionString) + assertEquals("1.6", apiLevel!!.versionString) + assertTrue(targetPlatform.isJs()) + + with(compilerArguments as K2JSCompilerArguments) { + assertEquals(true, sourceMap) + assertEquals("plain", moduleKind) + } + + assertEquals("-main callMain", compilerSettings!!.additionalArguments) + } + + with(facetSettings("project.myTest")) { + assertEquals("1.6", languageLevel!!.versionString) + assertEquals("1.0", apiLevel!!.versionString) + assertTrue(targetPlatform.isJs()) + + with(compilerArguments as K2JSCompilerArguments) { + assertEquals(false, sourceMap) + assertEquals("umd", moduleKind) + } + + assertEquals("-main callTest", compilerSettings!!.additionalArguments) + } + + assertAllModulesConfigured() + + assertEquals( + listOf>>( + "file:///src/main/kotlin" to SourceKotlinRootType, + "file:///src/main/resources" to ResourceKotlinRootType + ), + getSourceRootInfos("project.main") + ) + assertEquals( + listOf>>( + "file:///src/test/kotlin" to TestSourceKotlinRootType, + "file:///src/test/resources" to TestResourceKotlinRootType + ), + getSourceRootInfos("project.test") + ) + } + + @Test + fun testDetectOldJsStdlib() { + configureByFiles() + importProject() + + with(facetSettings) { + assertTrue(targetPlatform.isJs()) + } + } + + @Test + fun testJvmImportByPlatformPlugin() { + runImportTestWithPhasedSyncAssertions { + with(facetSettings) { + assertEquals("1.6", languageLevel!!.versionString) + assertEquals("1.6", apiLevel!!.versionString) + assertEquals(JvmPlatforms.jvm6, targetPlatform) + } + } + + assertEquals( + listOf( + "file:///src/main/java" to JavaSourceRootType.SOURCE, + "file:///src/main/kotlin" to JavaSourceRootType.SOURCE, + "file:///src/main/resources" to JavaResourceRootType.RESOURCE + ), + getSourceRootInfos("project.main") + ) + assertEquals( + listOf( + "file:///src/test/java" to JavaSourceRootType.TEST_SOURCE, + "file:///src/test/kotlin" to JavaSourceRootType.TEST_SOURCE, + "file:///src/test/resources" to JavaResourceRootType.TEST_RESOURCE + ), + getSourceRootInfos("project.test") + ) + } + + @Test + fun testJsImportByPlatformPlugin() { + configureByFiles() + importProject() + + with(facetSettings) { + assertEquals("1.6", languageLevel!!.versionString) + assertEquals("1.6", apiLevel!!.versionString) + assertTrue(targetPlatform.isJs()) + } + + val rootManager = ModuleRootManager.getInstance(getModule("project.main")) + val libraries = rootManager.orderEntries.filterIsInstance().map { it.library as LibraryEx } + assertEquals(KotlinJavaScriptLibraryKind, libraries.single { it.name?.contains("kotlin-stdlib-js") == true }.kind) + assertEquals(KotlinCommonLibraryKind, libraries.single { it.name?.contains("kotlin-stdlib-common") == true }.kind) + + assertEquals( + listOf>>( + "file:///src/main/kotlin" to SourceKotlinRootType, + "file:///src/main/resources" to ResourceKotlinRootType + ), + getSourceRootInfos("project.main") + ) + + assertEquals( + listOf>>( + "file:///src/test/kotlin" to TestSourceKotlinRootType, + "file:///src/test/resources" to TestResourceKotlinRootType + ), + getSourceRootInfos("project.test") + ) + } + + @Ignore + @Test + @TargetVersions("4.9") + fun testCommonImportByPlatformPlugin() { + configureByFiles() + importProject() + + with(facetSettings) { + assertEquals("1.1", languageLevel!!.versionString) + assertEquals("1.1", apiLevel!!.versionString) + assertTrue(targetPlatform.isCommon()) + } + + val rootManager = ModuleRootManager.getInstance(getModule("project.main")) + val stdlib = rootManager.orderEntries.filterIsInstance().single().library + assertEquals(KotlinCommonLibraryKind, (stdlib as LibraryEx).kind) + + assertEquals( + listOf>>( + "file:///src/main/java" to SourceKotlinRootType, + "file:///src/main/kotlin" to SourceKotlinRootType, + "file:///src/main/resources" to ResourceKotlinRootType + ), + getSourceRootInfos("project.main") + ) + + assertEquals( + listOf>>( + "file:///src/test/java" to TestSourceKotlinRootType, + "file:///src/test/kotlin" to TestSourceKotlinRootType, + "file:///src/test/resources" to TestResourceKotlinRootType + ), + getSourceRootInfos("project.test") + ) + } + + @Test + fun testJvmImportByKotlinPlugin() { + runImportTestWithPhasedSyncAssertions { + with(facetSettings) { + assertEquals("1.6", languageLevel!!.versionString) + assertEquals("1.6", apiLevel!!.versionString) + assertEquals(JvmPlatforms.jvm6, targetPlatform) + } + } + + assertEquals(KotlinJpsPluginSettings.fallbackVersionForOutdatedCompiler, KotlinJpsPluginSettings.jpsVersion(myProject)) + + assertEquals( + listOf( + "file:///src/main/java" to JavaSourceRootType.SOURCE, + "file:///src/main/kotlin" to JavaSourceRootType.SOURCE, + "file:///src/main/resources" to JavaResourceRootType.RESOURCE + ), + getSourceRootInfos("project.main") + ) + + assertEquals( + listOf( + "file:///src/test/java" to JavaSourceRootType.TEST_SOURCE, + "file:///src/test/kotlin" to JavaSourceRootType.TEST_SOURCE, + "file:///src/test/resources" to JavaResourceRootType.TEST_RESOURCE + ), + getSourceRootInfos("project.test") + ) + } + + @Test + fun testJsImportByKotlin2JsPlugin() { + configureByFiles() + importProject() + + with(facetSettings) { + assertEquals("1.6", languageLevel!!.versionString) + assertEquals("1.6", apiLevel!!.versionString) + assertTrue(targetPlatform.isJs()) + } + + assertEquals(KotlinJpsPluginSettings.fallbackVersionForOutdatedCompiler, KotlinJpsPluginSettings.jpsVersion(myProject)) + + assertEquals( + listOf>>( + "file:///src/main/kotlin" to SourceKotlinRootType, + "file:///src/main/resources" to ResourceKotlinRootType + ), + getSourceRootInfos("project.main") + ) + + assertEquals( + listOf>>( + "file:///src/test/kotlin" to TestSourceKotlinRootType, + "file:///src/test/resources" to TestResourceKotlinRootType + ), + getSourceRootInfos("project.test") + ) + } + + @Test + fun testArgumentEscaping() { + runImportTestWithPhasedSyncAssertions { + with(facetSettings) { + assertEquals( + listOf("-Xbuild-file=module with spaces"), + compilerSettings!!.additionalArgumentsAsList + ) + } + } + } + + @Test + @Ignore("failing in K2") + fun testNoPluginsInAdditionalArgs() { + configureByFiles() + importProject() + + with(facetSettings) { + assertEquals("", compilerSettings!!.additionalArguments) + assertEquals( + listOf( + "plugin:org.jetbrains.kotlin.allopen:annotation=org.springframework.stereotype.Component", + "plugin:org.jetbrains.kotlin.allopen:annotation=org.springframework.transaction.annotation.Transactional", + "plugin:org.jetbrains.kotlin.allopen:annotation=org.springframework.scheduling.annotation.Async", + "plugin:org.jetbrains.kotlin.allopen:annotation=org.springframework.cache.annotation.Cacheable", + "plugin:org.jetbrains.kotlin.allopen:annotation=org.springframework.boot.test.context.SpringBootTest", + "plugin:org.jetbrains.kotlin.allopen:annotation=org.springframework.validation.annotation.Validated" + ), + compilerArguments!!.pluginOptions!!.toList() + ) + } + } + + @Test + @Ignore("failing in K2") + fun testNoArgInvokeInitializers() { + configureByFiles() + importProject() + + with(facetSettings) { + assertEquals( + "", + compilerSettings!!.additionalArguments + ) + assertEquals( + listOf( + "plugin:org.jetbrains.kotlin.noarg:annotation=NoArg", + "plugin:org.jetbrains.kotlin.noarg:invokeInitializers=true" + ), + compilerArguments!!.pluginOptions!!.toList() + ) + } + } + + @Test + @Ignore // android.sdk needed + fun testAndroidGradleJsDetection() { + configureByFiles() + @Suppress("DEPRECATION_ERROR") + createLocalPropertiesSubFileForAndroid() + importProject() + + with(facetSettings("js-module")) { + assertTrue(targetPlatform.isJs()) + } + + val rootManager = ModuleRootManager.getInstance(getModule("js-module")) + val stdlib = rootManager + .orderEntries + .filterIsInstance() + .first { it.libraryName?.startsWith("Gradle: kotlin-stdlib-js-") ?: false } + .library!! + + assertTrue(stdlib.getFiles(OrderRootType.CLASSES).isNotEmpty()) + assertEquals(KotlinJavaScriptLibraryKind, (stdlib as LibraryEx).kind) + } + + @Test + @Ignore // android.sdk needed + fun testKotlinAndroidPluginDetection() { + configureByFiles() + @Suppress("DEPRECATION_ERROR") + createLocalPropertiesSubFileForAndroid() + importProject() + + assertNotNull(KotlinFacet.get(getModule("project"))) + } + + @Test + @TargetVersions("<7.6") + fun testNoFacetInModuleWithoutKotlinPlugin() { + runImportTestWithPhasedSyncAssertions { + assertNotNull(KotlinFacet.get(getModule("gr01.main"))) + assertNotNull(KotlinFacet.get(getModule("gr01.test"))) + assertNull(KotlinFacet.get(getModule("gr01.m1.main"))) + assertNull(KotlinFacet.get(getModule("gr01.m1.test"))) + } + + } + + @Test + fun testClasspathWithDependenciesImport() { + runImportTestWithPhasedSyncAssertions { + with(facetSettings) { + assertEquals("tmp.jar", (compilerArguments as K2JVMCompilerArguments).classpath) + } + } + } + + @Test + fun testDependenciesClasspathImport() { + runImportTestWithPhasedSyncAssertions { + with(facetSettings) { + assertEquals(null, (compilerArguments as K2JVMCompilerArguments).classpath) + } + } + } + + @Test + fun testJDKImport() { + configureByFiles() + importProject() + + assertModuleSdk("project", JavaSdkVersion.JDK_17) + assertModuleSdk("project.main", JavaSdkVersion.JDK_17) + assertModuleSdk("project.test", JavaSdkVersion.JDK_17) + } + + @Test + fun testImplementsDependency() { + configureByFiles() + importProject() + + assertEquals(listOf("MultiTest.main"), facetSettings("MultiTest.MultiTest-jvm.main").implementedModuleNames) + assertEquals(listOf("MultiTest.test"), facetSettings("MultiTest.MultiTest-jvm.test").implementedModuleNames) + assertEquals(listOf("MultiTest.main"), facetSettings("MultiTest.MultiTest-js.main").implementedModuleNames) + assertEquals(listOf("MultiTest.test"), facetSettings("MultiTest.MultiTest-js.test").implementedModuleNames) + } + + @Test + fun testImplementsDependencyWithCustomSourceSets() { + configureByFiles() + + importProject() + + assertEquals(listOf("MultiTest.myMain"), facetSettings("MultiTest.MultiTest-jvm.myMain").implementedModuleNames) + assertEquals(listOf("MultiTest.myTest"), facetSettings("MultiTest.MultiTest-jvm.myTest").implementedModuleNames) + assertEquals(listOf("MultiTest.myMain"), facetSettings("MultiTest.MultiTest-js.myMain").implementedModuleNames) + assertEquals(listOf("MultiTest.myTest"), facetSettings("MultiTest.MultiTest-js.myTest").implementedModuleNames) + } + + @Test + fun testApiVersionExceedingLanguageVersion() { + runImportTestWithPhasedSyncAssertions { + with(facetSettings) { + assertEquals("1.1", languageLevel!!.versionString) + assertEquals("1.2", apiLevel!!.versionString) + } + + assertAllModulesConfigured() + } + } + + @Test + fun testIgnoreProjectLanguageAndAPIVersion() { + KotlinCommonCompilerArgumentsHolder.getInstance(myProject).update { + languageVersion = "1.0" + apiVersion = "1.0" + } + + runImportTestWithPhasedSyncAssertions { + with(facetSettings) { + assertEquals("1.6", languageLevel!!.versionString) + assertEquals("1.6", apiLevel!!.versionString) + } + + assertAllModulesConfigured() + } + } + + @Test + fun testCommonArgumentsImport() { + configureByFiles() + importProject() + + with(facetSettings) { + assertEquals("1.1", languageLevel!!.versionString) + assertEquals("1.0", apiLevel!!.versionString) + assertFalse(compilerArguments!!.autoAdvanceLanguageVersion) + assertFalse(compilerArguments!!.autoAdvanceApiVersion) + assertTrue(targetPlatform.isCommon()) + assertEquals("my/classpath", (compilerArguments as K2MetadataCompilerArguments).classpath) + assertEquals("my/destination", (compilerArguments as K2MetadataCompilerArguments).destination) + } + + with(facetSettings("project.test")) { + assertEquals("1.1", languageLevel!!.versionString) + assertEquals("1.0", apiLevel!!.versionString) + assertFalse(compilerArguments!!.autoAdvanceLanguageVersion) + assertFalse(compilerArguments!!.autoAdvanceApiVersion) + assertTrue(targetPlatform.isCommon()) + assertEquals("my/test/classpath", (compilerArguments as K2MetadataCompilerArguments).classpath) + assertEquals("my/test/destination", (compilerArguments as K2MetadataCompilerArguments).destination) + } + + assertEquals(KotlinJpsPluginSettings.fallbackVersionForOutdatedCompiler, KotlinJpsPluginSettings.jpsVersion(myProject)) + + val rootManager = ModuleRootManager.getInstance(getModule("project.main")) + val stdlib = rootManager.orderEntries.filterIsInstance().single().library + assertEquals(KotlinCommonLibraryKind, (stdlib as LibraryEx).kind) + + assertSameKotlinSdks("project.main", "project.test") + + assertEquals( + listOf>>( + "file:///src/main/java" to SourceKotlinRootType, + "file:///src/main/kotlin" to SourceKotlinRootType, + "file:///src/main/resources" to ResourceKotlinRootType + ), + getSourceRootInfos("project.main") + ) + assertEquals( + listOf>>( + "file:///src/test/java" to TestSourceKotlinRootType, + "file:///src/test/kotlin" to TestSourceKotlinRootType, + "file:///src/test/resources" to TestResourceKotlinRootType + ), + getSourceRootInfos("project.test") + ) + } + + @Test + fun testInternalArgumentsFacetImporting() { + runImportTestWithPhasedSyncAssertions { + // Version is indeed 1.3 + assertEquals(LanguageVersion.KOTLIN_1_3, facetSettings.languageLevel) + + // We haven't lost internal argument during importing to facet + assertTrue( + "Argument is missing from compiler settings", + "-XXLanguage:+InlineClasses" in facetSettings.compilerSettings!!.additionalArguments + ) + + // Inline classes are enabled even though LV = 1.3 + assertEquals( + LanguageFeature.State.ENABLED, + getModule("project.main").languageVersionSettings.getFeatureSupport(LanguageFeature.InlineClasses) + ) + + assertAllModulesConfigured() + } + } + + @Test + fun testNoFriendPathsAreShown() { + runImportTestWithPhasedSyncAssertions { + assertEquals("", testFacetSettings.compilerSettings!!.additionalArguments) + assertAllModulesConfigured() + } + } + + @Test + fun testSharedLanguageVersion() { + configureByFiles() + + val holder = KotlinCommonCompilerArgumentsHolder.getInstance(myProject) + holder.update { languageVersion = "1.1" } + + importProject() + + TestCase.assertEquals("1.6", holder.settings.languageVersion) + } + + @Test + fun testNonSharedLanguageVersion() { + configureByFiles() + + val holder = KotlinCommonCompilerArgumentsHolder.getInstance(myProject) + holder.update { languageVersion = "1.1" } + + importProject() + + // Different language versions -> there is no common language version + TestCase.assertNull(holder.settings.languageVersion) + } + + @Test + fun testImportCompilerArgumentsWithInvalidDependencies() { + configureByFiles() + importProject() + + with(facetSettings("project.main")) { + assertEquals("1.8", (mergedCompilerArguments as K2JVMCompilerArguments).jvmTarget) + } + } + + private fun assertAllModulesConfigured() { + runReadAction { + for (moduleGroup in ModuleSourceRootMap(myProject).groupByBaseModules(myProject.allModules())) { + val configurator = allConfigurators().find { + it.getStatus(moduleGroup) == ConfigureKotlinStatus.CAN_BE_CONFIGURED + } + assertNull("Configurator $configurator tells that ${moduleGroup.baseModule} can be configured", configurator) + } + } + } + + private fun assertSameKotlinSdks(vararg moduleNames: String) { + val sdks = moduleNames.map { getModule(it).sdk!! } + val refSdk = sdks.firstOrNull() ?: return + assertTrue(refSdk.sdkType is KotlinSdkType) + assertTrue(sdks.all { it === refSdk }) + } + + override fun createImportSpec(): ImportSpec = + ImportSpecBuilder(super.createImportSpec()).createDirectoriesForEmptyContentRoots().build() + + override fun testDataDirName(): String = "gradleFacetImportTest" +} diff --git a/plugins/kotlin/gradle/gradle-java/kotlin.gradle.gradle-java.iml b/plugins/kotlin/gradle/gradle-java/kotlin.gradle.gradle-java.iml index 356a1c5e7e305..e99a5782d5b57 100644 --- a/plugins/kotlin/gradle/gradle-java/kotlin.gradle.gradle-java.iml +++ b/plugins/kotlin/gradle/gradle-java/kotlin.gradle.gradle-java.iml @@ -96,5 +96,7 @@ + + \ No newline at end of file diff --git a/plugins/kotlin/gradle/gradle-java/resources/kotlin.gradle.gradle-java.xml b/plugins/kotlin/gradle/gradle-java/resources/kotlin.gradle.gradle-java.xml index fca056d095f18..0dd89990913b1 100644 --- a/plugins/kotlin/gradle/gradle-java/resources/kotlin.gradle.gradle-java.xml +++ b/plugins/kotlin/gradle/gradle-java/resources/kotlin.gradle.gradle-java.xml @@ -59,6 +59,8 @@ + + diff --git a/plugins/kotlin/gradle/gradle-java/src/org/jetbrains/kotlin/idea/gradleJava/configuration/syncContributor/JvmKotlinSettingsEntityContributor.kt b/plugins/kotlin/gradle/gradle-java/src/org/jetbrains/kotlin/idea/gradleJava/configuration/syncContributor/JvmKotlinSettingsEntityContributor.kt new file mode 100644 index 0000000000000..23bdea6977a70 --- /dev/null +++ b/plugins/kotlin/gradle/gradle-java/src/org/jetbrains/kotlin/idea/gradleJava/configuration/syncContributor/JvmKotlinSettingsEntityContributor.kt @@ -0,0 +1,111 @@ +// Copyright 2000-2026 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +package org.jetbrains.kotlin.idea.gradleJava.configuration.syncContributor + +import com.intellij.platform.workspace.jps.entities.ModuleEntityBuilder +import com.intellij.platform.workspace.jps.entities.ModuleId +import com.intellij.platform.workspace.storage.MutableEntityStorage +import org.jetbrains.kotlin.cli.common.arguments.K2JVMCompilerArguments +import org.jetbrains.kotlin.cli.common.arguments.parseCommandLineArguments +import org.jetbrains.kotlin.config.KotlinFacetSettings +import org.jetbrains.kotlin.config.KotlinModuleKind +import org.jetbrains.kotlin.config.LanguageVersion +import org.jetbrains.kotlin.config.convertPathsToSystemIndependent +import org.jetbrains.kotlin.idea.base.codeInsight.tooling.tooling +import org.jetbrains.kotlin.idea.facet.KotlinFacetType +import org.jetbrains.kotlin.idea.facet.noVersionAutoAdvance +import org.jetbrains.kotlin.idea.facet.updateCompilerSettings +import org.jetbrains.kotlin.idea.gradleTooling.KotlinGradleModel +import org.jetbrains.kotlin.idea.serialization.KotlinFacetSettingsWorkspaceModel +import org.jetbrains.kotlin.idea.serialization.updateCompilerArguments +import org.jetbrains.kotlin.idea.workspaceModel.KotlinSettingsEntity +import org.jetbrains.kotlin.idea.workspaceModel.KotlinSettingsEntityBuilder +import org.jetbrains.kotlin.idea.workspaceModel.kotlinSettings +import org.jetbrains.kotlin.platform.impl.JvmIdePlatformKind +import org.jetbrains.plugins.gradle.model.ExternalSourceSet +import org.jetbrains.plugins.gradle.model.GradleLightBuild +import org.jetbrains.plugins.gradle.model.GradleLightProject +import org.jetbrains.plugins.gradle.service.project.ProjectResolverContext +import org.jetbrains.plugins.gradle.service.syncContributor.GradleSourceRootSyncContributorExtension +import org.jetbrains.plugins.gradle.service.syncContributor.GradleSourceSetSyncContext + +/** + * Configures a facet only if the platform kind is JVM. + */ +class JvmKotlinSettingsEntityContributor: GradleSourceRootSyncContributorExtension { + override suspend fun configureSourceSetModules(context: GradleSourceSetSyncContext) { + val kotlinGradleModel = context.resolverContext.getProjectModel(context.projectModel, KotlinGradleModel::class.java) ?: return + if (kotlinGradleModel.platformPluginId != JvmIdePlatformKind.tooling.gradlePluginId) { + return // only configure jvm platform kind + } + configureJvmKotlinSettingsEntity(context.resolverContext, context.projectModel, context.moduleEntity, context.sourceSetName) + } +} + +/** + * Configures a facet assuming the platform kind is JVM. + * + * Exposed to other plugins explicitly, as the contributor above only configures Java modules. + * This is expected to be called by other plugins (namely Android) to configure the Kotlin JVM facet. + */ +fun configureJvmKotlinSettingsEntity( + context: ProjectResolverContext, + projectModel: GradleLightProject, + moduleEntity: ModuleEntityBuilder, + sourceSetName: String +) { + val kotlinGradleModel = context.getProjectModel(projectModel, KotlinGradleModel::class.java) ?: return + val arguments: List = kotlinGradleModel.compilerArgumentsBySourceSet[sourceSetName] ?: return + val pluginVersion = kotlinGradleModel.kotlinGradlePluginVersion?.versionString + + val jvmArguments = K2JVMCompilerArguments().apply { + parseCommandLineArguments(arguments, this) + convertPathsToSystemIndependent() + } + moduleEntity.kotlinSettings += createEmptyKotlinSettingsEntity(moduleEntity) { + with(KotlinFacetSettingsWorkspaceModel(this)) { + targetPlatform = JvmIdePlatformKind.defaultPlatform + updateCompilerSettings(jvmArguments) + // Updating compiler settings might mutate jvm arguments, need to be done after that + compilerArguments = jvmArguments + + // Setting defaults. + updateCompilerArguments { + if (apiVersion == null) apiVersion = pluginVersion + if (languageVersion == null) languageVersion = pluginVersion + + if (pluginOptions == null) pluginOptions = emptyArray() + if (pluginClasspaths == null) pluginClasspaths = emptyArray() + + autoAdvanceApiVersion = false + autoAdvanceLanguageVersion = false + } + } + } +} + +private fun createEmptyKotlinSettingsEntity( + moduleEntity: ModuleEntityBuilder, + init: (KotlinSettingsEntityBuilder.() -> Unit) +) = KotlinSettingsEntity( + name = KotlinFacetType.INSTANCE.presentableName, + moduleId = ModuleId(moduleEntity.name), + entitySource = moduleEntity.entitySource, + version = KotlinFacetSettings.CURRENT_VERSION, + kind = KotlinModuleKind.DEFAULT, + externalProjectId = "", + useProjectSettings = false, + isHmppEnabled = false, + flushNeeded = false, + isTestModule = false, + sourceRoots = emptyList(), + configFileItems = emptyList(), + implementedModuleNames = emptyList(), + dependsOnModuleNames = emptyList(), + additionalVisibleModuleNames = emptySet(), + sourceSetNames = emptyList(), + pureKotlinSourceFolders = emptyList(), + externalSystemRunTasks = emptyList(), + init = init +) + + diff --git a/plugins/kotlin/gradle/gradle-java/tests.shared/test/org/jetbrains/kotlin/idea/codeInsight/gradle/KotlinGradleImportingTestCase.kt b/plugins/kotlin/gradle/gradle-java/tests.shared/test/org/jetbrains/kotlin/idea/codeInsight/gradle/KotlinGradleImportingTestCase.kt index 823a433f25a58..a6d6683cea2e2 100644 --- a/plugins/kotlin/gradle/gradle-java/tests.shared/test/org/jetbrains/kotlin/idea/codeInsight/gradle/KotlinGradleImportingTestCase.kt +++ b/plugins/kotlin/gradle/gradle-java/tests.shared/test/org/jetbrains/kotlin/idea/codeInsight/gradle/KotlinGradleImportingTestCase.kt @@ -3,6 +3,7 @@ package org.jetbrains.kotlin.idea.codeInsight.gradle import com.intellij.execution.executors.DefaultRunExecutor import com.intellij.execution.process.ProcessOutputType +import com.intellij.openapi.Disposable import com.intellij.openapi.externalSystem.model.execution.ExternalSystemTaskExecutionSettings import com.intellij.openapi.externalSystem.model.task.ExternalSystemTaskId import com.intellij.openapi.externalSystem.model.task.ExternalSystemTaskNotificationListener @@ -22,7 +23,9 @@ import com.intellij.openapi.roots.OrderEntry import com.intellij.openapi.util.io.FileUtil import com.intellij.openapi.vfs.LocalFileSystem import com.intellij.openapi.vfs.VirtualFile +import com.intellij.platform.testFramework.assertion.listenerAssertion.ListenerAssertion import com.intellij.testFramework.VfsTestUtil +import com.intellij.util.application import org.gradle.util.GradleVersion import org.jetbrains.jps.model.module.JpsModuleSourceRootType import org.jetbrains.kotlin.idea.base.plugin.KotlinPluginMode @@ -38,7 +41,10 @@ import org.jetbrains.kotlin.idea.test.TestMetadataUtil.getTestData import org.jetbrains.kotlin.idea.test.setUpWithKotlinPlugin import org.jetbrains.kotlin.utils.addToStdlib.filterIsInstanceWithChecker import org.jetbrains.plugins.gradle.importing.GradleImportingTestCase +import org.jetbrains.plugins.gradle.service.project.ProjectResolverContext import org.jetbrains.plugins.gradle.service.project.open.createLinkSettings +import org.jetbrains.plugins.gradle.service.syncAction.GradleSyncListener +import org.jetbrains.plugins.gradle.service.syncAction.GradleSyncPhase import org.jetbrains.plugins.gradle.util.GradleConstants import org.junit.Assume import org.junit.runners.Parameterized @@ -119,7 +125,7 @@ abstract class KotlinGradleImportingTestCase : GradleImportingTestCase(), } override val pluginMode: KotlinPluginMode - get() = KotlinPluginMode.K1 + get() = KotlinPluginMode.K2 protected open fun setUpImportStatusCollector() { ExternalSystemProgressNotificationManager @@ -335,6 +341,47 @@ abstract class KotlinGradleImportingTestCase : GradleImportingTestCase(), return getRootManager(moduleName).orderEntries.asList().filterIsInstanceWithChecker { it.presentableName == depName } } + private fun whenModelFetchCompletedOrSourceSetPhaseFinished(parentDisposable: Disposable, action: (ProjectResolverContext) -> Unit) { + application.messageBus.connect(parentDisposable) + .subscribe(GradleSyncListener.TOPIC, object : GradleSyncListener { + override fun onSyncPhaseCompleted( + context: ProjectResolverContext, + phase: GradleSyncPhase + ) { + if (phase == GradleSyncPhase.SOURCE_SET_MODEL_PHASE) { + action(context) + } + } + + override fun onModelFetchCompleted(context: ProjectResolverContext) { + action(context) + } + }) + } + + + protected fun runImportTestWithPhasedSyncAssertions(facetSettingsAssertions: () -> Unit) { + val modelFetchCompletionAssertion = ListenerAssertion() + + whenModelFetchCompletedOrSourceSetPhaseFinished(testRootDisposable) { + modelFetchCompletionAssertion.trace { + facetSettingsAssertions() + } + } + + + configureByFiles() + importProject() + + modelFetchCompletionAssertion.assertListenerState(2) { + "Model fetch should have completed" + } + modelFetchCompletionAssertion.assertListenerFailures() + facetSettingsAssertions() + + } + + protected fun linkProject(projectFilePath: String = projectPath) { val localFileSystem = LocalFileSystem.getInstance() val projectFile = localFileSystem.refreshAndFindFileByPath(projectFilePath) @@ -400,7 +447,7 @@ abstract class KotlinGradleImportingTestCase : GradleImportingTestCase(), const val LATEST_STABLE_GRADLE_PLUGIN_VERSION = "2.0.0" - val SUPPORTED_GRADLE_VERSIONS = arrayOf("6.8.3", "7.6.5")//, "9.0.0", "9.1.0") // To support them in KTIJ-36754 + val SUPPORTED_GRADLE_VERSIONS = arrayOf("6.8.3", "7.6.5", "8.6")//, "9.0.0", "9.1.0") // To support them in KTIJ-36754 // https://kotlinlang.org/docs/gradle-configure-project.html#targeting-the-jvm val GRADLE_TO_KGP_VERSION = mapOf( diff --git a/plugins/kotlin/gradle/gradle-tooling/impl/src/org/jetbrains/kotlin/idea/gradleTooling/KotlinGradleModelBuilder.kt b/plugins/kotlin/gradle/gradle-tooling/impl/src/org/jetbrains/kotlin/idea/gradleTooling/KotlinGradleModelBuilder.kt index ad3b8d1e517ee..07a9bf629335b 100644 --- a/plugins/kotlin/gradle/gradle-tooling/impl/src/org/jetbrains/kotlin/idea/gradleTooling/KotlinGradleModelBuilder.kt +++ b/plugins/kotlin/gradle/gradle-tooling/impl/src/org/jetbrains/kotlin/idea/gradleTooling/KotlinGradleModelBuilder.kt @@ -8,6 +8,7 @@ import com.intellij.gradle.toolingExtension.impl.model.dependencyModel.GradleDep import com.intellij.gradle.toolingExtension.impl.telemetry.GradleOpenTelemetry import com.intellij.gradle.toolingExtension.impl.util.GradleModelProviderUtil import com.intellij.gradle.toolingExtension.impl.util.javaPluginUtil.JavaPluginUtil +import com.intellij.gradle.toolingExtension.modelAction.GradleModelFetchPhase import com.intellij.gradle.toolingExtension.util.GradleReflectionUtil import com.intellij.gradle.toolingExtension.util.GradleVersionUtil import org.gradle.api.Project @@ -109,6 +110,8 @@ private const val REQUEST_FOR_NON_ANDROID_MODULES_ONLY = "*" class AndroidAwareGradleModelProvider( private val androidPluginIsRequestingVariantSpecificModels: Boolean ) : ProjectImportModelProvider { + override fun getPhase() = GradleModelFetchPhase.PROJECT_SOURCE_SET_PHASE + private val modelClass = KotlinGradleModel::class.java override fun populateModels(controller: BuildController, buildModels: Collection, modelConsumer: GradleModelConsumer) { if (androidPluginIsRequestingVariantSpecificModels) { diff --git a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/androidGradleJsDetection/build.gradle b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/androidGradleJsDetection/build.gradle index 2aa989e1b7438..364010ead0c19 100644 --- a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/androidGradleJsDetection/build.gradle +++ b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/androidGradleJsDetection/build.gradle @@ -9,7 +9,7 @@ buildscript { } dependencies { classpath "com.android.tools.build:gradle:3.1.2" - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.50" + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.20" } } diff --git a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/androidGradleJsDetection/js-module/build.gradle b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/androidGradleJsDetection/js-module/build.gradle index 7799a31a264e1..8d7e2043ea63c 100644 --- a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/androidGradleJsDetection/js-module/build.gradle +++ b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/androidGradleJsDetection/js-module/build.gradle @@ -7,12 +7,12 @@ buildscript { } dependencies { - classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.50") + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.20") } } apply plugin: 'kotlin2js' dependencies { - compile "org.jetbrains.kotlin:kotlin-stdlib-js:1.3.50" + implementation "org.jetbrains.kotlin:kotlin-stdlib-js:1.3.50" } diff --git a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/apiVersionExceedingLanguageVersion/build.gradle b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/apiVersionExceedingLanguageVersion/build.gradle index a8ae3518f2ceb..b5b575a77907a 100644 --- a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/apiVersionExceedingLanguageVersion/build.gradle +++ b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/apiVersionExceedingLanguageVersion/build.gradle @@ -4,7 +4,7 @@ buildscript { } dependencies { - classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.72") + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.20") } } @@ -15,7 +15,7 @@ repositories { apply plugin: 'kotlin' dependencies { - compile "org.jetbrains.kotlin:kotlin-stdlib" + implementation "org.jetbrains.kotlin:kotlin-stdlib" } compileKotlin { diff --git a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/argumentEscaping/build.gradle b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/argumentEscaping/build.gradle index 6f8fdef0db25e..d5094ab213ecb 100644 --- a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/argumentEscaping/build.gradle +++ b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/argumentEscaping/build.gradle @@ -7,7 +7,7 @@ buildscript { } dependencies { - classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.72") + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.20") } } diff --git a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/classpathWithDependenciesImport/build.gradle b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/classpathWithDependenciesImport/build.gradle index 0bff8e2f5f4d7..65d3987c9e51a 100644 --- a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/classpathWithDependenciesImport/build.gradle +++ b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/classpathWithDependenciesImport/build.gradle @@ -7,7 +7,7 @@ buildscript { } dependencies { - classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.72") + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.20") } } @@ -18,8 +18,8 @@ repositories { apply plugin: 'kotlin' dependencies { - compile "org.jetbrains.kotlin:kotlin-stdlib" - compile "org.apache.logging.log4j:log4j-core:2.7" + implementation "org.jetbrains.kotlin:kotlin-stdlib" + implementation "org.apache.logging.log4j:log4j-core:2.7" } compileKotlin { diff --git a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/commonArgumentsImport/build.gradle b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/commonArgumentsImport/build.gradle index 94b45617b1993..c49e9b08a5277 100644 --- a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/commonArgumentsImport/build.gradle +++ b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/commonArgumentsImport/build.gradle @@ -7,7 +7,7 @@ buildscript { } dependencies { - classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.72") + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.20") } } @@ -18,7 +18,7 @@ repositories { } dependencies { - compile "org.jetbrains.kotlin:kotlin-stdlib-common:1.3.72" + implementation "org.jetbrains.kotlin:kotlin-stdlib-common:1.3.72" } compileKotlinCommon{ diff --git a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/commonImportByPlatformPlugin/build.gradle b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/commonImportByPlatformPlugin/build.gradle index 3c9becfd0f1a7..dbda7a6ed8280 100644 --- a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/commonImportByPlatformPlugin/build.gradle +++ b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/commonImportByPlatformPlugin/build.gradle @@ -7,7 +7,7 @@ buildscript { } dependencies { - classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.1.0") + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.20") } } @@ -18,5 +18,5 @@ repositories { } dependencies { - compile "org.jetbrains.kotlin:kotlin-stdlib-common:1.1.0" + implementation "org.jetbrains.kotlin:kotlin-stdlib-common:1.1.0" } diff --git a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/commonImportByPlatformPlugin_SingleModule/build.gradle b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/commonImportByPlatformPlugin_SingleModule/build.gradle index 2121fe81d2713..0fc848ef8d8ed 100644 --- a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/commonImportByPlatformPlugin_SingleModule/build.gradle +++ b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/commonImportByPlatformPlugin_SingleModule/build.gradle @@ -8,7 +8,7 @@ buildscript { } dependencies { - classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.1.0") + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.20") } } @@ -20,5 +20,5 @@ repositories { } dependencies { - compile "org.jetbrains.kotlin:kotlin-stdlib-common:1.1.0" + implementation "org.jetbrains.kotlin:kotlin-stdlib-common:1.1.0" } diff --git a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/coroutineImportByOptions/build.gradle b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/coroutineImportByOptions/build.gradle index 2d8c5a5cbf90c..b27ae0b44fa38 100644 --- a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/coroutineImportByOptions/build.gradle +++ b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/coroutineImportByOptions/build.gradle @@ -7,7 +7,7 @@ buildscript { } dependencies { - classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.72") + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.20") } } @@ -18,7 +18,7 @@ repositories { apply plugin: 'kotlin' dependencies { - compile "org.jetbrains.kotlin:kotlin-stdlib:1.3.72" + implementation "org.jetbrains.kotlin:kotlin-stdlib:1.6.20" } kotlin { diff --git a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/coroutineImportByProperties/build.gradle b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/coroutineImportByProperties/build.gradle index 4dc3764ec3a07..ac527770a64ba 100644 --- a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/coroutineImportByProperties/build.gradle +++ b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/coroutineImportByProperties/build.gradle @@ -7,7 +7,7 @@ buildscript { } dependencies { - classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.72") + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.20") } } @@ -18,5 +18,5 @@ repositories { apply plugin: 'kotlin' dependencies { - compile "org.jetbrains.kotlin:kotlin-stdlib" + implementation "org.jetbrains.kotlin:kotlin-stdlib" } diff --git a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/dependenciesClasspathImport/build.gradle b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/dependenciesClasspathImport/build.gradle index 87e1084de06c9..eed9a3a17b88e 100644 --- a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/dependenciesClasspathImport/build.gradle +++ b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/dependenciesClasspathImport/build.gradle @@ -7,13 +7,13 @@ buildscript { } dependencies { - classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.72") + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.20") } } apply plugin: 'kotlin' dependencies { - compile "org.jetbrains.kotlin:kotlin-stdlib" - compile "org.apache.logging.log4j:log4j-core:2.7" + implementation "org.jetbrains.kotlin:kotlin-stdlib" + implementation "org.apache.logging.log4j:log4j-core:2.7" } diff --git a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/detectOldJsStdlib/build.gradle b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/detectOldJsStdlib/build.gradle index a7d5e2193ca32..a6264ae9f8696 100644 --- a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/detectOldJsStdlib/build.gradle +++ b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/detectOldJsStdlib/build.gradle @@ -7,12 +7,12 @@ buildscript { } dependencies { - classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.50") + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.20") } } apply plugin: 'kotlin2js' dependencies { - compile "org.jetbrains.kotlin:kotlin-js-library:1.3.50" + implementation "org.jetbrains.kotlin:kotlin-js-library:1.3.50" } diff --git a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/ignoreProjectLanguageAndAPIVersion/build.gradle b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/ignoreProjectLanguageAndAPIVersion/build.gradle index 016ccea515b48..deb73c3fca15b 100644 --- a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/ignoreProjectLanguageAndAPIVersion/build.gradle +++ b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/ignoreProjectLanguageAndAPIVersion/build.gradle @@ -4,12 +4,12 @@ buildscript { } dependencies { - classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.72") + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.20") } } apply plugin: 'kotlin' dependencies { - compile "org.jetbrains.kotlin:kotlin-stdlib" + implementation "org.jetbrains.kotlin:kotlin-stdlib" } diff --git a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/implementsDependency/MultiTest-js/build.gradle b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/implementsDependency/MultiTest-js/build.gradle index d53e0c3b3b2cf..17b4aa22b7d54 100644 --- a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/implementsDependency/MultiTest-js/build.gradle +++ b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/implementsDependency/MultiTest-js/build.gradle @@ -3,7 +3,7 @@ buildscript { mavenCentral() } dependencies { - classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.1.0") + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.20") } } @@ -14,6 +14,6 @@ repositories { } dependencies { - compile "org.jetbrains.kotlin:kotlin-stdlib-js:1.1.0" + implementation "org.jetbrains.kotlin:kotlin-stdlib-js:1.1.0" implement project(":") } diff --git a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/implementsDependency/MultiTest-jvm/build.gradle b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/implementsDependency/MultiTest-jvm/build.gradle index eb64991113e2f..b3320130f9cc5 100644 --- a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/implementsDependency/MultiTest-jvm/build.gradle +++ b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/implementsDependency/MultiTest-jvm/build.gradle @@ -3,7 +3,7 @@ buildscript { mavenCentral() } dependencies { - classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.1.0") + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.20") } } @@ -14,6 +14,6 @@ repositories { } dependencies { - compile "org.jetbrains.kotlin:kotlin-stdlib:1.1.0" + implementation "org.jetbrains.kotlin:kotlin-stdlib:1.6.20" implement project(":") } diff --git a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/implementsDependency/build.gradle b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/implementsDependency/build.gradle index 2bda3a675686e..b68dcdbe3017e 100644 --- a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/implementsDependency/build.gradle +++ b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/implementsDependency/build.gradle @@ -3,7 +3,7 @@ buildscript { mavenCentral() } dependencies { - classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.50") + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.20") } } @@ -14,5 +14,5 @@ repositories { } dependencies { - compile "org.jetbrains.kotlin:kotlin-stdlib-common:1.3.50" + implementation "org.jetbrains.kotlin:kotlin-stdlib-common:1.3.50" } diff --git a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/implementsDependencyWithCustomSourceSets/MultiTest-js/build.gradle b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/implementsDependencyWithCustomSourceSets/MultiTest-js/build.gradle index dcca1ed10b192..2116432131d53 100644 --- a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/implementsDependencyWithCustomSourceSets/MultiTest-js/build.gradle +++ b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/implementsDependencyWithCustomSourceSets/MultiTest-js/build.gradle @@ -3,7 +3,7 @@ buildscript { mavenCentral() } dependencies { - classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.1.0") + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.20") } } @@ -27,6 +27,6 @@ repositories { } dependencies { - compile "org.jetbrains.kotlin:kotlin-stdlib-js:1.1.0" + implementation "org.jetbrains.kotlin:kotlin-stdlib-js:1.1.0" implement project(":") } diff --git a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/implementsDependencyWithCustomSourceSets/MultiTest-jvm/build.gradle b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/implementsDependencyWithCustomSourceSets/MultiTest-jvm/build.gradle index 9c764f03e3109..ffc348f38c6b5 100644 --- a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/implementsDependencyWithCustomSourceSets/MultiTest-jvm/build.gradle +++ b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/implementsDependencyWithCustomSourceSets/MultiTest-jvm/build.gradle @@ -3,7 +3,7 @@ buildscript { mavenCentral() } dependencies { - classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.1.0") + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.20") } } @@ -27,6 +27,6 @@ repositories { } dependencies { - compile "org.jetbrains.kotlin:kotlin-stdlib:1.1.0" + implementation "org.jetbrains.kotlin:kotlin-stdlib:1.6.20" implement project(":") } diff --git a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/implementsDependencyWithCustomSourceSets/build.gradle b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/implementsDependencyWithCustomSourceSets/build.gradle index 161a9ed64ad49..7a911195d912c 100644 --- a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/implementsDependencyWithCustomSourceSets/build.gradle +++ b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/implementsDependencyWithCustomSourceSets/build.gradle @@ -3,7 +3,7 @@ buildscript { mavenCentral() } dependencies { - classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.50") + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.20") } } @@ -27,5 +27,5 @@ repositories { } dependencies { - compile "org.jetbrains.kotlin:kotlin-stdlib-common:1.3.50" + implementation "org.jetbrains.kotlin:kotlin-stdlib-common:1.3.50" } diff --git a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/importCompilerArgumentsWithInvalidDependencies/build.gradle b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/importCompilerArgumentsWithInvalidDependencies/build.gradle index c3e8798e3257c..cf3a29e3baf6a 100644 --- a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/importCompilerArgumentsWithInvalidDependencies/build.gradle +++ b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/importCompilerArgumentsWithInvalidDependencies/build.gradle @@ -8,7 +8,7 @@ buildscript { } dependencies { - classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.50") + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.20") } } @@ -20,8 +20,8 @@ repositories { } dependencies { - compile "org.jetbrains.kotlin:kotlin-stdlib:1.1.2-5" - compile "some_invalid:dependency:1.0.0" + implementation "org.jetbrains.kotlin:kotlin-stdlib:1.6.20" + implementation "some_invalid:dependency:1.0.0" } compileKotlin { diff --git a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/internalArgumentsFacetImporting/build.gradle b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/internalArgumentsFacetImporting/build.gradle index 543be08c6206f..7113f11419d56 100644 --- a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/internalArgumentsFacetImporting/build.gradle +++ b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/internalArgumentsFacetImporting/build.gradle @@ -4,7 +4,7 @@ buildscript { } dependencies { - classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.72") + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.20") } } @@ -15,7 +15,7 @@ repositories { } dependencies { - compile "org.jetbrains.kotlin:kotlin-stdlib:1.3.72" + implementation "org.jetbrains.kotlin:kotlin-stdlib:1.6.20" } compileKotlin { diff --git a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/jpsCompilerMultiModule/module1/build.gradle b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/jpsCompilerMultiModule/module1/build.gradle index 06c201792812d..c7ccd0cf3a5c6 100644 --- a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/jpsCompilerMultiModule/module1/build.gradle +++ b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/jpsCompilerMultiModule/module1/build.gradle @@ -4,7 +4,7 @@ buildscript { } dependencies { - classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.72") + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.20") } } @@ -15,5 +15,5 @@ repositories { apply plugin: 'kotlin' dependencies { - compile "org.jetbrains.kotlin:kotlin-stdlib:1.3.72" + implementation "org.jetbrains.kotlin:kotlin-stdlib:1.6.20" } diff --git a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/jpsCompilerMultiModule/module2/build.gradle b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/jpsCompilerMultiModule/module2/build.gradle index f69ec4bde9c2d..c7ccd0cf3a5c6 100644 --- a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/jpsCompilerMultiModule/module2/build.gradle +++ b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/jpsCompilerMultiModule/module2/build.gradle @@ -4,7 +4,7 @@ buildscript { } dependencies { - classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.20") + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.20") } } @@ -15,5 +15,5 @@ repositories { apply plugin: 'kotlin' dependencies { - compile "org.jetbrains.kotlin:kotlin-stdlib:1.4.20" + implementation "org.jetbrains.kotlin:kotlin-stdlib:1.6.20" } diff --git a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/jsImport/build.gradle b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/jsImport/build.gradle index 6a9c8319e3b94..abc4bc0de8d6a 100644 --- a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/jsImport/build.gradle +++ b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/jsImport/build.gradle @@ -7,7 +7,7 @@ buildscript { } dependencies { - classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.50") + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.20") } } @@ -18,7 +18,7 @@ repositories { } dependencies { - compile "org.jetbrains.kotlin:kotlin-stdlib-js:1.3.50" + implementation "org.jetbrains.kotlin:kotlin-stdlib-js:1.3.50" } compileKotlin2Js { diff --git a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/jsImportByKotlin2JsPlugin/build.gradle b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/jsImportByKotlin2JsPlugin/build.gradle index a7021c61b8713..784756ee5adff 100644 --- a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/jsImportByKotlin2JsPlugin/build.gradle +++ b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/jsImportByKotlin2JsPlugin/build.gradle @@ -7,7 +7,7 @@ buildscript { } dependencies { - classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.50") + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.20") } } diff --git a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/jsImportByPlatformPlugin/build.gradle b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/jsImportByPlatformPlugin/build.gradle index b5df2b8596952..86cf063c1017a 100644 --- a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/jsImportByPlatformPlugin/build.gradle +++ b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/jsImportByPlatformPlugin/build.gradle @@ -7,7 +7,7 @@ buildscript { } dependencies { - classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.50") + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.20") } } @@ -18,6 +18,6 @@ repositories { } dependencies { - compile "org.jetbrains.kotlin:kotlin-stdlib-common:1.3.50" - compile "org.jetbrains.kotlin:kotlin-stdlib-js:1.3.50" + implementation "org.jetbrains.kotlin:kotlin-stdlib-common:1.3.50" + implementation "org.jetbrains.kotlin:kotlin-stdlib-js:1.3.50" } diff --git a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/jsImportTransitive/build.gradle b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/jsImportTransitive/build.gradle index 8dc44772f3beb..954ee5e212292 100644 --- a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/jsImportTransitive/build.gradle +++ b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/jsImportTransitive/build.gradle @@ -7,7 +7,7 @@ buildscript { } dependencies { - classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.50") + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.20") } } @@ -18,5 +18,5 @@ repositories { } dependencies { - compile "org.jetbrains.kotlin:kotlin-test-js:1.3.50" + implementation "org.jetbrains.kotlin:kotlin-test-js:1.3.50" } diff --git a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/jsImportWithCustomSourceSets/build.gradle b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/jsImportWithCustomSourceSets/build.gradle index 71f160debac75..0eb2107d70687 100644 --- a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/jsImportWithCustomSourceSets/build.gradle +++ b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/jsImportWithCustomSourceSets/build.gradle @@ -7,7 +7,7 @@ buildscript { } dependencies { - classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.50") + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.20") } } @@ -27,7 +27,7 @@ srcDir 'test' } dependencies { - compile "org.jetbrains.kotlin:kotlin-stdlib-js:1.3.50" + implementation "org.jetbrains.kotlin:kotlin-stdlib-js:1.3.50" } compileMyMainKotlin2Js { diff --git a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/jvmImport/build.gradle b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/jvmImport/build.gradle index 7e12ffa75a9cb..040bc60cd57ef 100644 --- a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/jvmImport/build.gradle +++ b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/jvmImport/build.gradle @@ -4,7 +4,7 @@ buildscript { } dependencies { - classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.72") + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.20") } } @@ -15,7 +15,7 @@ repositories { apply plugin: 'kotlin' dependencies { - compile "org.jetbrains.kotlin:kotlin-stdlib:1.3.72" + implementation "org.jetbrains.kotlin:kotlin-stdlib:1.6.20" } compileKotlin { diff --git a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/jvmImportByKotlinPlugin/build.gradle b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/jvmImportByKotlinPlugin/build.gradle index 16ebefc739458..f2c157f371a34 100644 --- a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/jvmImportByKotlinPlugin/build.gradle +++ b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/jvmImportByKotlinPlugin/build.gradle @@ -7,7 +7,7 @@ buildscript { } dependencies { - classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.72") + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.20") } } diff --git a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/jvmImportByPlatformPlugin/build.gradle b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/jvmImportByPlatformPlugin/build.gradle index 00174297584a9..7383f2902e140 100644 --- a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/jvmImportByPlatformPlugin/build.gradle +++ b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/jvmImportByPlatformPlugin/build.gradle @@ -7,7 +7,7 @@ buildscript { } dependencies { - classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.72") + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.20") } } diff --git a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/jvmImportWithCustomSourceSets/build.gradle b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/jvmImportWithCustomSourceSets/build.gradle index 3db0ff05f20fa..fbb7fadc8a053 100644 --- a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/jvmImportWithCustomSourceSets/build.gradle +++ b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/jvmImportWithCustomSourceSets/build.gradle @@ -7,7 +7,7 @@ buildscript { } dependencies { - classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.72") + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.20") } } @@ -31,7 +31,7 @@ srcDir 'test' } dependencies { - compile "org.jetbrains.kotlin:kotlin-stdlib" + implementation "org.jetbrains.kotlin:kotlin-stdlib" } compileMyMainKotlin { diff --git a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/jvmImportWithPlugin/build.gradle b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/jvmImportWithPlugin/build.gradle index f6b3623a16e20..5d1f72c8866aa 100644 --- a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/jvmImportWithPlugin/build.gradle +++ b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/jvmImportWithPlugin/build.gradle @@ -5,7 +5,7 @@ buildscript { } plugins { - id "org.jetbrains.kotlin.jvm" version "1.3.50" + id "org.jetbrains.kotlin.jvm" version "1.6.20" } version '1.0-SNAPSHOT' @@ -19,8 +19,8 @@ repositories { } dependencies { - compile "org.jetbrains.kotlin:kotlin-stdlib-jre8:1.3.50" - testCompile group: 'junit', name: 'junit', version: '4.12' + implementation "org.jetbrains.kotlin:kotlin-stdlib-jre8:1.3.50" + testImplementation group: 'junit', name: 'junit', version: '4.12' } compileKotlin { diff --git a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/kotlinAndroidPluginDetection/build.gradle b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/kotlinAndroidPluginDetection/build.gradle index 8dc252385ddd2..ae5ff455d5647 100644 --- a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/kotlinAndroidPluginDetection/build.gradle +++ b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/kotlinAndroidPluginDetection/build.gradle @@ -9,7 +9,7 @@ buildscript { } dependencies { classpath "com.android.tools.build:gradle:3.1.2" - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.72" + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.20" } } diff --git a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/noArgInvokeInitializers/build.gradle b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/noArgInvokeInitializers/build.gradle index 59b10a28ecc4e..af180857c3255 100644 --- a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/noArgInvokeInitializers/build.gradle +++ b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/noArgInvokeInitializers/build.gradle @@ -7,7 +7,7 @@ buildscript { } dependencies { - classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.50") + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.20") classpath("org.jetbrains.kotlin:kotlin-noarg:1.3.50") } } diff --git a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/noFacetInModuleWithoutKotlinPlugin/build.gradle b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/noFacetInModuleWithoutKotlinPlugin/build.gradle index b7f4ab8ef85a5..398ba4af9bfab 100644 --- a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/noFacetInModuleWithoutKotlinPlugin/build.gradle +++ b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/noFacetInModuleWithoutKotlinPlugin/build.gradle @@ -15,9 +15,9 @@ buildscript { mavenCentral() } dependencies { - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.72" + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.20" } } dependencies { - compile "org.jetbrains.kotlin:kotlin-stdlib-jre8" + implementation "org.jetbrains.kotlin:kotlin-stdlib-jre8" } diff --git a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/noFacetInModuleWithoutKotlinPlugin/m1/build.gradle b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/noFacetInModuleWithoutKotlinPlugin/m1/build.gradle index 140dc3020336c..ea123a883ed8c 100644 --- a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/noFacetInModuleWithoutKotlinPlugin/m1/build.gradle +++ b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/noFacetInModuleWithoutKotlinPlugin/m1/build.gradle @@ -15,5 +15,5 @@ buildscript { } } dependencies { - testCompile group: 'junit', name: 'junit', version: '4.11' + testImplementation group: 'junit', name: 'junit', version: '4.11' } diff --git a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/noFriendPathsAreShown/build.gradle b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/noFriendPathsAreShown/build.gradle index 8813414b01941..7d80b1df9179a 100644 --- a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/noFriendPathsAreShown/build.gradle +++ b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/noFriendPathsAreShown/build.gradle @@ -4,7 +4,7 @@ buildscript { } dependencies { - classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.72") + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.20") } } @@ -19,5 +19,5 @@ repositories { } dependencies { - compile "org.jetbrains.kotlin:kotlin-stdlib" + implementation "org.jetbrains.kotlin:kotlin-stdlib" } diff --git a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/noPluginsInAdditionalArgs/build.gradle b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/noPluginsInAdditionalArgs/build.gradle index e996c6ea09dd1..71fde2042ec67 100644 --- a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/noPluginsInAdditionalArgs/build.gradle +++ b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/noPluginsInAdditionalArgs/build.gradle @@ -7,7 +7,7 @@ buildscript { } dependencies { - classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.50") + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.20") classpath("org.jetbrains.kotlin:kotlin-allopen:1.3.50") } } diff --git a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/nonSharedLanguageVersion/MultiTest-js/build.gradle b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/nonSharedLanguageVersion/MultiTest-js/build.gradle index b52446c5aea3c..b97b9a1dfcad1 100644 --- a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/nonSharedLanguageVersion/MultiTest-js/build.gradle +++ b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/nonSharedLanguageVersion/MultiTest-js/build.gradle @@ -3,7 +3,7 @@ buildscript { mavenCentral() } dependencies { - classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.72") + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.20") } } @@ -14,6 +14,6 @@ repositories { } dependencies { - compile "org.jetbrains.kotlin:kotlin-stdlib-js" + implementation "org.jetbrains.kotlin:kotlin-stdlib-js" implement project(":") } diff --git a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/nonSharedLanguageVersion/MultiTest-jvm/build.gradle b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/nonSharedLanguageVersion/MultiTest-jvm/build.gradle index 7b4474ae3215d..d75b60b1b3773 100644 --- a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/nonSharedLanguageVersion/MultiTest-jvm/build.gradle +++ b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/nonSharedLanguageVersion/MultiTest-jvm/build.gradle @@ -3,7 +3,7 @@ buildscript { mavenCentral() } dependencies { - classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.72") + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.20") } } @@ -27,6 +27,6 @@ repositories { } dependencies { - compile "org.jetbrains.kotlin:kotlin-stdlib" + implementation "org.jetbrains.kotlin:kotlin-stdlib" implement project(":") } diff --git a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/nonSharedLanguageVersion/build.gradle b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/nonSharedLanguageVersion/build.gradle index fb98f1f178e88..56f037373306d 100644 --- a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/nonSharedLanguageVersion/build.gradle +++ b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/nonSharedLanguageVersion/build.gradle @@ -3,7 +3,7 @@ buildscript { mavenCentral() } dependencies { - classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.72") + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.20") } } @@ -14,7 +14,7 @@ repositories { } dependencies { - compile "org.jetbrains.kotlin:kotlin-stdlib-common:1.3.72" + implementation "org.jetbrains.kotlin:kotlin-stdlib-common:1.3.72" } compileKotlinCommon { diff --git a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/sharedLanguageVersion/MultiTest-js/build.gradle b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/sharedLanguageVersion/MultiTest-js/build.gradle index 121ee58ec9678..d0c069e8e4195 100644 --- a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/sharedLanguageVersion/MultiTest-js/build.gradle +++ b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/sharedLanguageVersion/MultiTest-js/build.gradle @@ -3,7 +3,7 @@ buildscript { mavenCentral() } dependencies { - classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.72") + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.20") } } @@ -27,6 +27,6 @@ repositories { } dependencies { - compile "org.jetbrains.kotlin:kotlin-stdlib-js" + implementation "org.jetbrains.kotlin:kotlin-stdlib-js" implement project(":") } diff --git a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/sharedLanguageVersion/MultiTest-jvm/build.gradle b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/sharedLanguageVersion/MultiTest-jvm/build.gradle index 6fbd639f45427..ef7f26fa7699b 100644 --- a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/sharedLanguageVersion/MultiTest-jvm/build.gradle +++ b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/sharedLanguageVersion/MultiTest-jvm/build.gradle @@ -3,7 +3,7 @@ buildscript { mavenCentral() } dependencies { - classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.72") + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.20") } } @@ -14,6 +14,6 @@ repositories { } dependencies { - compile "org.jetbrains.kotlin:kotlin-stdlib" + implementation "org.jetbrains.kotlin:kotlin-stdlib" implement project(":") } diff --git a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/sharedLanguageVersion/build.gradle b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/sharedLanguageVersion/build.gradle index c20f3b50fa72b..2cd25d9b33d02 100644 --- a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/sharedLanguageVersion/build.gradle +++ b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/sharedLanguageVersion/build.gradle @@ -3,7 +3,7 @@ buildscript { mavenCentral() } dependencies { - classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.72") + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.20") } } @@ -14,5 +14,5 @@ repositories { } dependencies { - compile "org.jetbrains.kotlin:kotlin-stdlib-common" + implementation "org.jetbrains.kotlin:kotlin-stdlib-common" } diff --git a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/stableModuleNameWhileUsingGradleJS/build.gradle b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/stableModuleNameWhileUsingGradleJS/build.gradle index 90690753cd6c2..0e03ab0421495 100644 --- a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/stableModuleNameWhileUsingGradleJS/build.gradle +++ b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/stableModuleNameWhileUsingGradleJS/build.gradle @@ -4,7 +4,7 @@ buildscript { } dependencies { - classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.72") + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.20") } } @@ -15,5 +15,5 @@ repositories { } dependencies { - compile "org.jetbrains.kotlin:kotlin-stdlib" + implementation "org.jetbrains.kotlin:kotlin-stdlib" } diff --git a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/stableModuleNameWhileUsingGradleJVM/build.gradle b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/stableModuleNameWhileUsingGradleJVM/build.gradle index ea11d41aac8b2..d0dc8eec54171 100644 --- a/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/stableModuleNameWhileUsingGradleJVM/build.gradle +++ b/plugins/kotlin/idea/tests/testData/gradle/gradleFacetImportTest/stableModuleNameWhileUsingGradleJVM/build.gradle @@ -4,7 +4,7 @@ buildscript { } dependencies { - classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.72") + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.20") } } @@ -15,7 +15,7 @@ repositories { } dependencies { - compile "org.jetbrains.kotlin:kotlin-stdlib" + implementation "org.jetbrains.kotlin:kotlin-stdlib" } compileKotlin {