From fd670d33cb5196f1c402bde8ca151304ebebe140 Mon Sep 17 00:00:00 2001 From: Dmitriy Novozhilov Date: Wed, 31 May 2023 16:19:23 +0300 Subject: [PATCH] [FIR plugin] Compile annotations in plugin sandbox to jvm and js This is needed for further testing of plugins with JS backend --- .gitignore | 1 + buildSrc/src/main/kotlin/tasks.kt | 22 ++++++++++--- .../fir-plugin-ic-test/build.gradle.kts | 2 +- .../plugin-annotations/build.gradle.kts | 33 ++++++++++++++++--- .../kotlin/fir/plugin/annotations.kt | 0 .../plugin/functionsForFunctionalKindsTest.kt | 0 .../plugin/functionsForTypeAttributesTest.kt | 0 7 files changed, 47 insertions(+), 11 deletions(-) rename plugins/fir-plugin-prototype/plugin-annotations/src/{ => commonMain/kotlin}/org/jetbrains/kotlin/fir/plugin/annotations.kt (100%) rename plugins/fir-plugin-prototype/plugin-annotations/src/{ => commonMain/kotlin}/org/jetbrains/kotlin/fir/plugin/functionsForFunctionalKindsTest.kt (100%) rename plugins/fir-plugin-prototype/plugin-annotations/src/{ => commonMain/kotlin}/org/jetbrains/kotlin/fir/plugin/functionsForTypeAttributesTest.kt (100%) diff --git a/.gitignore b/.gitignore index 260d6cb154d..c79bbd4666e 100644 --- a/.gitignore +++ b/.gitignore @@ -62,6 +62,7 @@ build/ .idea/artifacts/kotlin_test_wasm_* .idea/artifacts/kotlinx_atomicfu_runtime_* .idea/artifacts/kotlinx_cli_jvm_* +.idea/artifacts/plugin_annotations_*.xml .idea/jarRepositories.xml .idea/csv-plugin.xml .idea/libraries-with-intellij-classes.xml diff --git a/buildSrc/src/main/kotlin/tasks.kt b/buildSrc/src/main/kotlin/tasks.kt index 34a84bcf25a..d4ad8725a92 100644 --- a/buildSrc/src/main/kotlin/tasks.kt +++ b/buildSrc/src/main/kotlin/tasks.kt @@ -12,6 +12,7 @@ import org.gradle.api.Project import org.gradle.api.Task import org.gradle.api.artifacts.Configuration import org.gradle.api.artifacts.ProjectDependency +import org.gradle.api.attributes.Usage import org.gradle.api.file.FileCollection import org.gradle.api.file.FileSystemOperations import org.gradle.api.internal.tasks.testing.filter.DefaultTestFilter @@ -19,6 +20,8 @@ import org.gradle.api.tasks.TaskProvider import org.gradle.api.tasks.testing.Test import org.gradle.kotlin.dsl.* import org.gradle.kotlin.dsl.support.serviceOf +import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType +import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinUsages import java.io.File import java.lang.Character.isLowerCase import java.lang.Character.isUpperCase @@ -374,17 +377,26 @@ fun Task.acceptAndroidSdkLicenses() { } fun Project.confugureFirPluginAnnotationsDependency(testTask: TaskProvider) { - val firPluginAnnotations: Configuration by configurations.creating + val firPluginJvmAnnotations: Configuration by configurations.creating + val firPluginJsAnnotations: Configuration by configurations.creating { + attributes { + attribute(Usage.USAGE_ATTRIBUTE, objects.named(org.jetbrains.kotlin.gradle.plugin.mpp.KotlinUsages.KOTLIN_RUNTIME)) + attribute(org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType.attribute, org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType.js) + } + } dependencies { - firPluginAnnotations(project(":plugins:fir-plugin-prototype:plugin-annotations")) { isTransitive = false } + firPluginJvmAnnotations(project(":plugins:fir-plugin-prototype:plugin-annotations")) { isTransitive = false } + firPluginJsAnnotations(project(":plugins:fir-plugin-prototype:plugin-annotations")) { isTransitive = false } } testTask.configure { - dependsOn(firPluginAnnotations) - val localFirPluginAnnotations: FileCollection = firPluginAnnotations + dependsOn(firPluginJvmAnnotations, firPluginJsAnnotations) + val localFirPluginJvmAnnotations: FileCollection = firPluginJvmAnnotations + val localFirPluginJsAnnotations: FileCollection = firPluginJsAnnotations doFirst { - systemProperty("firPluginAnnotations.path", localFirPluginAnnotations.singleFile.canonicalPath) + systemProperty("firPluginAnnotations.jvm.path", localFirPluginJvmAnnotations.singleFile.canonicalPath) + systemProperty("firPluginAnnotations.js.path", localFirPluginJsAnnotations.singleFile.canonicalPath) } } } diff --git a/plugins/fir-plugin-prototype/fir-plugin-ic-test/build.gradle.kts b/plugins/fir-plugin-prototype/fir-plugin-ic-test/build.gradle.kts index e9191b959fc..c295ebb8175 100644 --- a/plugins/fir-plugin-prototype/fir-plugin-ic-test/build.gradle.kts +++ b/plugins/fir-plugin-prototype/fir-plugin-ic-test/build.gradle.kts @@ -47,7 +47,7 @@ projectTest(parallel = true, jUnitMode = JUnitMode.JUnit4, maxHeapSizeMb = 3072) workingDir = rootDir useJUnitPlatform() dependsOn(":plugins:fir-plugin-prototype:jar") - dependsOn(":plugins:fir-plugin-prototype:plugin-annotations:jar") + dependsOn(":plugins:fir-plugin-prototype:plugin-annotations:distAnnotations") } testsJar() diff --git a/plugins/fir-plugin-prototype/plugin-annotations/build.gradle.kts b/plugins/fir-plugin-prototype/plugin-annotations/build.gradle.kts index 96ed8e746b3..236574d9114 100644 --- a/plugins/fir-plugin-prototype/plugin-annotations/build.gradle.kts +++ b/plugins/fir-plugin-prototype/plugin-annotations/build.gradle.kts @@ -1,10 +1,31 @@ plugins { - kotlin("jvm") - id("jps-compatible") + kotlin("multiplatform") } -dependencies { - api(kotlinStdlib()) +kotlin { + jvm() + js { + binaries.executable() + } + + sourceSets { + val commonMain by getting { + dependencies { + implementation(kotlin("stdlib-common")) + } + } + val jvmMain by getting { + dependencies {1 + implementation(kotlin("stdlib-jdk8")) + } + } + + val jsMain by getting { + dependencies { + implementation(kotlin("stdlib-js")) + } + } + } } sourceSets { @@ -12,4 +33,6 @@ sourceSets { "test" { none() } } -runtimeJar() +tasks.register("distAnnotations") { + dependsOn("jvmJar", "jsJar") +} diff --git a/plugins/fir-plugin-prototype/plugin-annotations/src/org/jetbrains/kotlin/fir/plugin/annotations.kt b/plugins/fir-plugin-prototype/plugin-annotations/src/commonMain/kotlin/org/jetbrains/kotlin/fir/plugin/annotations.kt similarity index 100% rename from plugins/fir-plugin-prototype/plugin-annotations/src/org/jetbrains/kotlin/fir/plugin/annotations.kt rename to plugins/fir-plugin-prototype/plugin-annotations/src/commonMain/kotlin/org/jetbrains/kotlin/fir/plugin/annotations.kt diff --git a/plugins/fir-plugin-prototype/plugin-annotations/src/org/jetbrains/kotlin/fir/plugin/functionsForFunctionalKindsTest.kt b/plugins/fir-plugin-prototype/plugin-annotations/src/commonMain/kotlin/org/jetbrains/kotlin/fir/plugin/functionsForFunctionalKindsTest.kt similarity index 100% rename from plugins/fir-plugin-prototype/plugin-annotations/src/org/jetbrains/kotlin/fir/plugin/functionsForFunctionalKindsTest.kt rename to plugins/fir-plugin-prototype/plugin-annotations/src/commonMain/kotlin/org/jetbrains/kotlin/fir/plugin/functionsForFunctionalKindsTest.kt diff --git a/plugins/fir-plugin-prototype/plugin-annotations/src/org/jetbrains/kotlin/fir/plugin/functionsForTypeAttributesTest.kt b/plugins/fir-plugin-prototype/plugin-annotations/src/commonMain/kotlin/org/jetbrains/kotlin/fir/plugin/functionsForTypeAttributesTest.kt similarity index 100% rename from plugins/fir-plugin-prototype/plugin-annotations/src/org/jetbrains/kotlin/fir/plugin/functionsForTypeAttributesTest.kt rename to plugins/fir-plugin-prototype/plugin-annotations/src/commonMain/kotlin/org/jetbrains/kotlin/fir/plugin/functionsForTypeAttributesTest.kt