From 79bf8f7c983ccc04fe7a52a62a6571b85680a6df Mon Sep 17 00:00:00 2001 From: Sergey Rostov Date: Wed, 23 May 2018 14:39:00 +0300 Subject: [PATCH] jps: support dev kit module types (and all other ModuleBasedBuildTargetType) #KT-24500 fixed Original commit: ec5110e1f433f36a0b687229ed41ff0cb7c1c0f9 --- jps/jps-plugin/build.gradle.kts | 1 + jps/jps-plugin/build.gradle.kts.173 | 1 + jps/jps-plugin/build.gradle.kts.as31 | 1 + jps/jps-plugin/build.gradle.kts.as32 | 1 + .../kotlin/jps/build/KotlinJpsBuildTest.kt | 7 ++++ .../jps/build/KotlinJpsBuildTest.kt.172 | 6 ++++ .../kotlin/jps/platforms/TargetPlatform.kt | 3 +- .../general/DevKitProject/kotlinProject.iml | 13 +++++++ .../general/DevKitProject/kotlinProject.ipr | 19 ++++++++++ .../resources/META-INF/plugin.xml | 35 +++++++++++++++++++ .../general/DevKitProject/src/test.kt | 3 ++ 11 files changed, 89 insertions(+), 1 deletion(-) create mode 100644 jps/jps-plugin/testData/general/DevKitProject/kotlinProject.iml create mode 100644 jps/jps-plugin/testData/general/DevKitProject/kotlinProject.ipr create mode 100644 jps/jps-plugin/testData/general/DevKitProject/resources/META-INF/plugin.xml create mode 100644 jps/jps-plugin/testData/general/DevKitProject/src/test.kt diff --git a/jps/jps-plugin/build.gradle.kts b/jps/jps-plugin/build.gradle.kts index c1b73d11bfc..1ef61071065 100644 --- a/jps/jps-plugin/build.gradle.kts +++ b/jps/jps-plugin/build.gradle.kts @@ -27,6 +27,7 @@ dependencies { testCompile(projectTests(":kotlin-build-common")) testCompileOnly(intellijDep("jps-standalone")) { includeJars("jps-builders", "jps-builders-6") } testCompileOnly(intellijDep()) { includeJars("openapi", "idea", "platform-api", "log4j") } + testCompile(intellijDep("devkit")) testCompile(intellijDep("jps-build-test")) compilerModules.forEach { testRuntime(project(it)) diff --git a/jps/jps-plugin/build.gradle.kts.173 b/jps/jps-plugin/build.gradle.kts.173 index 01d8ffabb1d..d4ff8f3f456 100644 --- a/jps/jps-plugin/build.gradle.kts.173 +++ b/jps/jps-plugin/build.gradle.kts.173 @@ -27,6 +27,7 @@ dependencies { testCompile(projectTests(":kotlin-build-common")) testCompileOnly(intellijDep("jps-standalone")) { includeJars("jps-builders", "jps-builders-6") } testCompileOnly(intellijDep()) { includeJars("openapi", "idea", "log4j") } + testCompile(intellijDep("devkit")) testCompile(intellijDep("jps-build-test")) compilerModules.forEach { testRuntime(project(it)) diff --git a/jps/jps-plugin/build.gradle.kts.as31 b/jps/jps-plugin/build.gradle.kts.as31 index 90688be0dcf..5edfc059557 100644 --- a/jps/jps-plugin/build.gradle.kts.as31 +++ b/jps/jps-plugin/build.gradle.kts.as31 @@ -27,6 +27,7 @@ dependencies { testCompile(projectTests(":kotlin-build-common")) testCompileOnly(intellijDep("jps-standalone")) { includeJars("jps-builders", "jps-builders-6") } testCompileOnly(intellijDep()) { includeJars("openapi", "idea", "log4j") } + testCompile(intellijDep("devkit")) testCompile(intellijDep("jps-build-test")) compilerModules.forEach { testRuntime(project(it)) diff --git a/jps/jps-plugin/build.gradle.kts.as32 b/jps/jps-plugin/build.gradle.kts.as32 index cda3049efd3..06df796d5d8 100644 --- a/jps/jps-plugin/build.gradle.kts.as32 +++ b/jps/jps-plugin/build.gradle.kts.as32 @@ -27,6 +27,7 @@ dependencies { testCompile(projectTests(":kotlin-build-common")) testCompileOnly(intellijDep("jps-standalone")) { includeJars("jps-builders", "jps-builders-6") } testCompileOnly(intellijDep()) { includeJars("openapi", "idea", "platform-api", "log4j") } + testCompile(intellijDep("devkit")) testCompile(intellijDep("jps-build-test")) compilerModules.forEach { testRuntime(project(it)) diff --git a/jps/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/KotlinJpsBuildTest.kt b/jps/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/KotlinJpsBuildTest.kt index dd5f0f392a1..640942dc42f 100644 --- a/jps/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/KotlinJpsBuildTest.kt +++ b/jps/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/KotlinJpsBuildTest.kt @@ -35,6 +35,7 @@ import org.jetbrains.jps.builders.TestProjectBuilderLogger import org.jetbrains.jps.builders.impl.BuildDataPathsImpl import org.jetbrains.jps.builders.logging.BuildLoggingManager import org.jetbrains.jps.cmdline.ProjectDescriptor +import org.jetbrains.jps.devkit.model.JpsPluginModuleType import org.jetbrains.jps.incremental.BuilderRegistry import org.jetbrains.jps.incremental.CompileContext import org.jetbrains.jps.incremental.IncProjectBuilder @@ -677,6 +678,12 @@ open class KotlinJpsBuildTest : AbstractKotlinJpsBuildTestCase() { result.assertSuccessful() } + fun testDevKitProject() { + initProject(JVM_MOCK_RUNTIME) + assertEquals(myProject.modules.single().moduleType, JpsPluginModuleType.INSTANCE) + buildAllModules().assertSuccessful() + } + fun testAccessToInternalInProductionFromTests() { initProject(JVM_MOCK_RUNTIME) val result = buildAllModules() diff --git a/jps/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/KotlinJpsBuildTest.kt.172 b/jps/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/KotlinJpsBuildTest.kt.172 index 70815053022..8dccc1a0246 100644 --- a/jps/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/KotlinJpsBuildTest.kt.172 +++ b/jps/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/KotlinJpsBuildTest.kt.172 @@ -676,6 +676,12 @@ open class KotlinJpsBuildTest : AbstractKotlinJpsBuildTestCase() { result.assertSuccessful() } + fun testDevKitProject() { + initProject(JVM_MOCK_RUNTIME) + assertEquals(myProject.modules.single().moduleType, JpsPluginModuleType.INSTANCE) + buildAllModules().assertSuccessful() + } + fun testAccessToInternalInProductionFromTests() { initProject(JVM_MOCK_RUNTIME) val result = buildAllModules() diff --git a/jps/jps-plugin/src/org/jetbrains/kotlin/jps/platforms/TargetPlatform.kt b/jps/jps-plugin/src/org/jetbrains/kotlin/jps/platforms/TargetPlatform.kt index 9eccc19eb99..5db26796c95 100644 --- a/jps/jps-plugin/src/org/jetbrains/kotlin/jps/platforms/TargetPlatform.kt +++ b/jps/jps-plugin/src/org/jetbrains/kotlin/jps/platforms/TargetPlatform.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.jps.platforms import com.intellij.openapi.util.Key +import org.jetbrains.jps.builders.ModuleBasedBuildTargetType import org.jetbrains.jps.builders.java.JavaModuleBuildTargetType import org.jetbrains.jps.incremental.CompileContext import org.jetbrains.jps.incremental.ModuleBuildTarget @@ -55,7 +56,7 @@ class KotlinBuildTargets internal constructor(val compileContext: CompileContext } operator fun get(target: ModuleBuildTarget): KotlinModuleBuilderTarget? { - if (target.module.moduleType != JpsJavaModuleType.INSTANCE) return null + if (target.targetType !is ModuleBasedBuildTargetType) return null return byJpsModuleBuildTarget.computeIfAbsent(target) { when (target.module.targetPlatform ?: detectTargetPlatform(target)) { diff --git a/jps/jps-plugin/testData/general/DevKitProject/kotlinProject.iml b/jps/jps-plugin/testData/general/DevKitProject/kotlinProject.iml new file mode 100644 index 00000000000..e025b203cd5 --- /dev/null +++ b/jps/jps-plugin/testData/general/DevKitProject/kotlinProject.iml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/jps/jps-plugin/testData/general/DevKitProject/kotlinProject.ipr b/jps/jps-plugin/testData/general/DevKitProject/kotlinProject.ipr new file mode 100644 index 00000000000..cacdb365adc --- /dev/null +++ b/jps/jps-plugin/testData/general/DevKitProject/kotlinProject.ipr @@ -0,0 +1,19 @@ + + + + + + + + + + + + + diff --git a/jps/jps-plugin/testData/general/DevKitProject/resources/META-INF/plugin.xml b/jps/jps-plugin/testData/general/DevKitProject/resources/META-INF/plugin.xml new file mode 100644 index 00000000000..ab17bc27255 --- /dev/null +++ b/jps/jps-plugin/testData/general/DevKitProject/resources/META-INF/plugin.xml @@ -0,0 +1,35 @@ + + com.your.company.unique.plugin.id + Plugin display name here + 1.0 + YourCompany + + + most HTML tags may be used + ]]> + + + most HTML tags may be used + ]]> + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/jps/jps-plugin/testData/general/DevKitProject/src/test.kt b/jps/jps-plugin/testData/general/DevKitProject/src/test.kt new file mode 100644 index 00000000000..adb5b33c573 --- /dev/null +++ b/jps/jps-plugin/testData/general/DevKitProject/src/test.kt @@ -0,0 +1,3 @@ +fun main(args: Array) { + +} \ No newline at end of file