From bea2bc398065602d6a36ee2a7d5755a98dfcf666 Mon Sep 17 00:00:00 2001 From: Dmitriy Novozhilov Date: Thu, 20 Jan 2022 16:27:04 +0300 Subject: [PATCH] [Parcelize] Move FIR related parts of parcelize to separate module This is needed to avoid bundling of FIR classes to IDE plugin for parcelize, because it can cause compatibility issues, because IDE plugin does not contain FIR compiler --- .../parcelize-compiler/build.gradle.kts | 13 +------ .../parcelize-fir/build.gradle.kts | 34 +++++++++++++++++++ .../ParcelizeFirIrGeneratorExtension.kt | 19 +++++++++++ .../fir/FirParcelizeCheckersExtension.kt | 0 .../fir/FirParcelizeDeclarationGenerator.kt | 0 .../fir/FirParcelizeExtensionRegistrar.kt | 0 .../parcelize/fir/FirParcelizePluginKey.kt | 0 .../FirParcelizeAnnotationChecker.kt | 0 .../diagnostics/FirParcelizeClassChecker.kt | 0 .../FirParcelizeConstructorChecker.kt | 0 .../FirParcelizeFunctionChecker.kt | 0 .../FirParcelizePropertyChecker.kt | 0 .../KtDefaultErrorMessagesParcelize.kt | 0 .../fir/diagnostics/KtErrorsParcelize.kt | 0 .../parcelize/ir/ParcelizeFirIrTransformer.kt | 4 +-- .../ParcelizeIrGeneratorExtension.kt | 7 ---- prepare/compiler/build.gradle.kts | 1 + settings.gradle | 1 + 18 files changed, 57 insertions(+), 22 deletions(-) create mode 100644 plugins/parcelize/parcelize-compiler/parcelize-fir/build.gradle.kts create mode 100644 plugins/parcelize/parcelize-compiler/parcelize-fir/src/org/jetbrains/kotlin/parcelize/ParcelizeFirIrGeneratorExtension.kt rename plugins/parcelize/parcelize-compiler/{ => parcelize-fir}/src/org/jetbrains/kotlin/parcelize/fir/FirParcelizeCheckersExtension.kt (100%) rename plugins/parcelize/parcelize-compiler/{ => parcelize-fir}/src/org/jetbrains/kotlin/parcelize/fir/FirParcelizeDeclarationGenerator.kt (100%) rename plugins/parcelize/parcelize-compiler/{ => parcelize-fir}/src/org/jetbrains/kotlin/parcelize/fir/FirParcelizeExtensionRegistrar.kt (100%) rename plugins/parcelize/parcelize-compiler/{ => parcelize-fir}/src/org/jetbrains/kotlin/parcelize/fir/FirParcelizePluginKey.kt (100%) rename plugins/parcelize/parcelize-compiler/{ => parcelize-fir}/src/org/jetbrains/kotlin/parcelize/fir/diagnostics/FirParcelizeAnnotationChecker.kt (100%) rename plugins/parcelize/parcelize-compiler/{ => parcelize-fir}/src/org/jetbrains/kotlin/parcelize/fir/diagnostics/FirParcelizeClassChecker.kt (100%) rename plugins/parcelize/parcelize-compiler/{ => parcelize-fir}/src/org/jetbrains/kotlin/parcelize/fir/diagnostics/FirParcelizeConstructorChecker.kt (100%) rename plugins/parcelize/parcelize-compiler/{ => parcelize-fir}/src/org/jetbrains/kotlin/parcelize/fir/diagnostics/FirParcelizeFunctionChecker.kt (100%) rename plugins/parcelize/parcelize-compiler/{ => parcelize-fir}/src/org/jetbrains/kotlin/parcelize/fir/diagnostics/FirParcelizePropertyChecker.kt (100%) rename plugins/parcelize/parcelize-compiler/{ => parcelize-fir}/src/org/jetbrains/kotlin/parcelize/fir/diagnostics/KtDefaultErrorMessagesParcelize.kt (100%) rename plugins/parcelize/parcelize-compiler/{ => parcelize-fir}/src/org/jetbrains/kotlin/parcelize/fir/diagnostics/KtErrorsParcelize.kt (100%) rename plugins/parcelize/parcelize-compiler/{ => parcelize-fir}/src/org/jetbrains/kotlin/parcelize/ir/ParcelizeFirIrTransformer.kt (95%) diff --git a/plugins/parcelize/parcelize-compiler/build.gradle.kts b/plugins/parcelize/parcelize-compiler/build.gradle.kts index dd5ea32a6fe..be3f019d47d 100644 --- a/plugins/parcelize/parcelize-compiler/build.gradle.kts +++ b/plugins/parcelize/parcelize-compiler/build.gradle.kts @@ -26,18 +26,6 @@ dependencies { compileOnly(intellijCore()) compileOnly(commonDependency("org.jetbrains.intellij.deps:asm-all")) - // FIR dependencies - compileOnly(project(":compiler:fir:cones")) - compileOnly(project(":compiler:fir:tree")) - compileOnly(project(":compiler:fir:resolve")) - compileOnly(project(":compiler:fir:checkers")) - compileOnly(project(":compiler:fir:checkers:checkers.jvm")) - compileOnly(project(":compiler:fir:fir2ir")) - compileOnly(project(":compiler:ir.backend.common")) - compileOnly(project(":compiler:ir.tree.impl")) - compileOnly(project(":compiler:fir:entrypoint")) - compileOnly(project(":kotlin-reflect-api")) - testApiJUnit5() testApi(project(":compiler:util")) @@ -56,6 +44,7 @@ dependencies { // FIR dependencies testApi(project(":compiler:fir:checkers")) testApi(project(":compiler:fir:checkers:checkers.jvm")) + testApi(project(":plugins:parcelize:parcelize-compiler:parcelize-fir")) testRuntimeOnly(project(":compiler:fir:fir-serialization")) testCompileOnly(project(":kotlin-reflect-api")) diff --git a/plugins/parcelize/parcelize-compiler/parcelize-fir/build.gradle.kts b/plugins/parcelize/parcelize-compiler/parcelize-fir/build.gradle.kts new file mode 100644 index 00000000000..76ecbaff1c3 --- /dev/null +++ b/plugins/parcelize/parcelize-compiler/parcelize-fir/build.gradle.kts @@ -0,0 +1,34 @@ +description = "Parcelize FIR compiler plugin" + +plugins { + kotlin("jvm") + id("jps-compatible") +} + +dependencies { + testApi(intellijCore()) + + compileOnly(project(":plugins:parcelize:parcelize-compiler")) + + compileOnly(intellijCore()) + compileOnly(project(":compiler:fir:cones")) + compileOnly(project(":compiler:fir:tree")) + compileOnly(project(":compiler:fir:resolve")) + compileOnly(project(":compiler:fir:checkers")) + compileOnly(project(":compiler:fir:checkers:checkers.jvm")) + compileOnly(project(":compiler:fir:fir2ir")) + compileOnly(project(":compiler:ir.backend.common")) + compileOnly(project(":compiler:ir.tree.impl")) + compileOnly(project(":compiler:fir:entrypoint")) + compileOnly(project(":kotlin-reflect-api")) +} + +sourceSets { + "main" { projectDefault() } + "test" { none() } +} + + +runtimeJar() +javadocJar() +sourcesJar() diff --git a/plugins/parcelize/parcelize-compiler/parcelize-fir/src/org/jetbrains/kotlin/parcelize/ParcelizeFirIrGeneratorExtension.kt b/plugins/parcelize/parcelize-compiler/parcelize-fir/src/org/jetbrains/kotlin/parcelize/ParcelizeFirIrGeneratorExtension.kt new file mode 100644 index 00000000000..4582fcacb73 --- /dev/null +++ b/plugins/parcelize/parcelize-compiler/parcelize-fir/src/org/jetbrains/kotlin/parcelize/ParcelizeFirIrGeneratorExtension.kt @@ -0,0 +1,19 @@ +/* + * Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.parcelize + +import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension +import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext +import org.jetbrains.kotlin.ir.declarations.IrModuleFragment +import org.jetbrains.kotlin.parcelize.ir.AndroidSymbols +import org.jetbrains.kotlin.parcelize.ir.ParcelizeFirIrTransformer + +class ParcelizeFirIrGeneratorExtension : IrGenerationExtension { + override fun generate(moduleFragment: IrModuleFragment, pluginContext: IrPluginContext) { + val androidSymbols = AndroidSymbols(pluginContext.irBuiltIns, moduleFragment) + ParcelizeFirIrTransformer(pluginContext, androidSymbols).transform(moduleFragment) + } +} diff --git a/plugins/parcelize/parcelize-compiler/src/org/jetbrains/kotlin/parcelize/fir/FirParcelizeCheckersExtension.kt b/plugins/parcelize/parcelize-compiler/parcelize-fir/src/org/jetbrains/kotlin/parcelize/fir/FirParcelizeCheckersExtension.kt similarity index 100% rename from plugins/parcelize/parcelize-compiler/src/org/jetbrains/kotlin/parcelize/fir/FirParcelizeCheckersExtension.kt rename to plugins/parcelize/parcelize-compiler/parcelize-fir/src/org/jetbrains/kotlin/parcelize/fir/FirParcelizeCheckersExtension.kt diff --git a/plugins/parcelize/parcelize-compiler/src/org/jetbrains/kotlin/parcelize/fir/FirParcelizeDeclarationGenerator.kt b/plugins/parcelize/parcelize-compiler/parcelize-fir/src/org/jetbrains/kotlin/parcelize/fir/FirParcelizeDeclarationGenerator.kt similarity index 100% rename from plugins/parcelize/parcelize-compiler/src/org/jetbrains/kotlin/parcelize/fir/FirParcelizeDeclarationGenerator.kt rename to plugins/parcelize/parcelize-compiler/parcelize-fir/src/org/jetbrains/kotlin/parcelize/fir/FirParcelizeDeclarationGenerator.kt diff --git a/plugins/parcelize/parcelize-compiler/src/org/jetbrains/kotlin/parcelize/fir/FirParcelizeExtensionRegistrar.kt b/plugins/parcelize/parcelize-compiler/parcelize-fir/src/org/jetbrains/kotlin/parcelize/fir/FirParcelizeExtensionRegistrar.kt similarity index 100% rename from plugins/parcelize/parcelize-compiler/src/org/jetbrains/kotlin/parcelize/fir/FirParcelizeExtensionRegistrar.kt rename to plugins/parcelize/parcelize-compiler/parcelize-fir/src/org/jetbrains/kotlin/parcelize/fir/FirParcelizeExtensionRegistrar.kt diff --git a/plugins/parcelize/parcelize-compiler/src/org/jetbrains/kotlin/parcelize/fir/FirParcelizePluginKey.kt b/plugins/parcelize/parcelize-compiler/parcelize-fir/src/org/jetbrains/kotlin/parcelize/fir/FirParcelizePluginKey.kt similarity index 100% rename from plugins/parcelize/parcelize-compiler/src/org/jetbrains/kotlin/parcelize/fir/FirParcelizePluginKey.kt rename to plugins/parcelize/parcelize-compiler/parcelize-fir/src/org/jetbrains/kotlin/parcelize/fir/FirParcelizePluginKey.kt diff --git a/plugins/parcelize/parcelize-compiler/src/org/jetbrains/kotlin/parcelize/fir/diagnostics/FirParcelizeAnnotationChecker.kt b/plugins/parcelize/parcelize-compiler/parcelize-fir/src/org/jetbrains/kotlin/parcelize/fir/diagnostics/FirParcelizeAnnotationChecker.kt similarity index 100% rename from plugins/parcelize/parcelize-compiler/src/org/jetbrains/kotlin/parcelize/fir/diagnostics/FirParcelizeAnnotationChecker.kt rename to plugins/parcelize/parcelize-compiler/parcelize-fir/src/org/jetbrains/kotlin/parcelize/fir/diagnostics/FirParcelizeAnnotationChecker.kt diff --git a/plugins/parcelize/parcelize-compiler/src/org/jetbrains/kotlin/parcelize/fir/diagnostics/FirParcelizeClassChecker.kt b/plugins/parcelize/parcelize-compiler/parcelize-fir/src/org/jetbrains/kotlin/parcelize/fir/diagnostics/FirParcelizeClassChecker.kt similarity index 100% rename from plugins/parcelize/parcelize-compiler/src/org/jetbrains/kotlin/parcelize/fir/diagnostics/FirParcelizeClassChecker.kt rename to plugins/parcelize/parcelize-compiler/parcelize-fir/src/org/jetbrains/kotlin/parcelize/fir/diagnostics/FirParcelizeClassChecker.kt diff --git a/plugins/parcelize/parcelize-compiler/src/org/jetbrains/kotlin/parcelize/fir/diagnostics/FirParcelizeConstructorChecker.kt b/plugins/parcelize/parcelize-compiler/parcelize-fir/src/org/jetbrains/kotlin/parcelize/fir/diagnostics/FirParcelizeConstructorChecker.kt similarity index 100% rename from plugins/parcelize/parcelize-compiler/src/org/jetbrains/kotlin/parcelize/fir/diagnostics/FirParcelizeConstructorChecker.kt rename to plugins/parcelize/parcelize-compiler/parcelize-fir/src/org/jetbrains/kotlin/parcelize/fir/diagnostics/FirParcelizeConstructorChecker.kt diff --git a/plugins/parcelize/parcelize-compiler/src/org/jetbrains/kotlin/parcelize/fir/diagnostics/FirParcelizeFunctionChecker.kt b/plugins/parcelize/parcelize-compiler/parcelize-fir/src/org/jetbrains/kotlin/parcelize/fir/diagnostics/FirParcelizeFunctionChecker.kt similarity index 100% rename from plugins/parcelize/parcelize-compiler/src/org/jetbrains/kotlin/parcelize/fir/diagnostics/FirParcelizeFunctionChecker.kt rename to plugins/parcelize/parcelize-compiler/parcelize-fir/src/org/jetbrains/kotlin/parcelize/fir/diagnostics/FirParcelizeFunctionChecker.kt diff --git a/plugins/parcelize/parcelize-compiler/src/org/jetbrains/kotlin/parcelize/fir/diagnostics/FirParcelizePropertyChecker.kt b/plugins/parcelize/parcelize-compiler/parcelize-fir/src/org/jetbrains/kotlin/parcelize/fir/diagnostics/FirParcelizePropertyChecker.kt similarity index 100% rename from plugins/parcelize/parcelize-compiler/src/org/jetbrains/kotlin/parcelize/fir/diagnostics/FirParcelizePropertyChecker.kt rename to plugins/parcelize/parcelize-compiler/parcelize-fir/src/org/jetbrains/kotlin/parcelize/fir/diagnostics/FirParcelizePropertyChecker.kt diff --git a/plugins/parcelize/parcelize-compiler/src/org/jetbrains/kotlin/parcelize/fir/diagnostics/KtDefaultErrorMessagesParcelize.kt b/plugins/parcelize/parcelize-compiler/parcelize-fir/src/org/jetbrains/kotlin/parcelize/fir/diagnostics/KtDefaultErrorMessagesParcelize.kt similarity index 100% rename from plugins/parcelize/parcelize-compiler/src/org/jetbrains/kotlin/parcelize/fir/diagnostics/KtDefaultErrorMessagesParcelize.kt rename to plugins/parcelize/parcelize-compiler/parcelize-fir/src/org/jetbrains/kotlin/parcelize/fir/diagnostics/KtDefaultErrorMessagesParcelize.kt diff --git a/plugins/parcelize/parcelize-compiler/src/org/jetbrains/kotlin/parcelize/fir/diagnostics/KtErrorsParcelize.kt b/plugins/parcelize/parcelize-compiler/parcelize-fir/src/org/jetbrains/kotlin/parcelize/fir/diagnostics/KtErrorsParcelize.kt similarity index 100% rename from plugins/parcelize/parcelize-compiler/src/org/jetbrains/kotlin/parcelize/fir/diagnostics/KtErrorsParcelize.kt rename to plugins/parcelize/parcelize-compiler/parcelize-fir/src/org/jetbrains/kotlin/parcelize/fir/diagnostics/KtErrorsParcelize.kt diff --git a/plugins/parcelize/parcelize-compiler/src/org/jetbrains/kotlin/parcelize/ir/ParcelizeFirIrTransformer.kt b/plugins/parcelize/parcelize-compiler/parcelize-fir/src/org/jetbrains/kotlin/parcelize/ir/ParcelizeFirIrTransformer.kt similarity index 95% rename from plugins/parcelize/parcelize-compiler/src/org/jetbrains/kotlin/parcelize/ir/ParcelizeFirIrTransformer.kt rename to plugins/parcelize/parcelize-compiler/parcelize-fir/src/org/jetbrains/kotlin/parcelize/ir/ParcelizeFirIrTransformer.kt index cdde9178df7..e831f2918e1 100644 --- a/plugins/parcelize/parcelize-compiler/src/org/jetbrains/kotlin/parcelize/ir/ParcelizeFirIrTransformer.kt +++ b/plugins/parcelize/parcelize-compiler/parcelize-fir/src/org/jetbrains/kotlin/parcelize/ir/ParcelizeFirIrTransformer.kt @@ -1,5 +1,5 @@ /* - * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ @@ -11,11 +11,9 @@ import org.jetbrains.kotlin.fir.backend.IrPluginDeclarationOrigin import org.jetbrains.kotlin.ir.IrElement import org.jetbrains.kotlin.ir.declarations.IrClass import org.jetbrains.kotlin.ir.declarations.IrModuleFragment -import org.jetbrains.kotlin.ir.declarations.IrProperty import org.jetbrains.kotlin.ir.util.companionObject import org.jetbrains.kotlin.ir.util.functions import org.jetbrains.kotlin.ir.util.render -import org.jetbrains.kotlin.parcelize.ParcelizeNames.CREATOR_NAME import org.jetbrains.kotlin.parcelize.ParcelizeNames.PARCELER_FQN import org.jetbrains.kotlin.parcelize.ParcelizeSyntheticComponent import org.jetbrains.kotlin.parcelize.fir.FirParcelizePluginKey diff --git a/plugins/parcelize/parcelize-compiler/src/org/jetbrains/kotlin/parcelize/ParcelizeIrGeneratorExtension.kt b/plugins/parcelize/parcelize-compiler/src/org/jetbrains/kotlin/parcelize/ParcelizeIrGeneratorExtension.kt index e1a2a388f8e..7919b57d669 100644 --- a/plugins/parcelize/parcelize-compiler/src/org/jetbrains/kotlin/parcelize/ParcelizeIrGeneratorExtension.kt +++ b/plugins/parcelize/parcelize-compiler/src/org/jetbrains/kotlin/parcelize/ParcelizeIrGeneratorExtension.kt @@ -9,7 +9,6 @@ import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext import org.jetbrains.kotlin.ir.declarations.IrModuleFragment import org.jetbrains.kotlin.parcelize.ir.AndroidSymbols -import org.jetbrains.kotlin.parcelize.ir.ParcelizeFirIrTransformer import org.jetbrains.kotlin.parcelize.ir.ParcelizeIrTransformer class ParcelizeIrGeneratorExtension : IrGenerationExtension { @@ -19,9 +18,3 @@ class ParcelizeIrGeneratorExtension : IrGenerationExtension { } } -class ParcelizeFirIrGeneratorExtension : IrGenerationExtension { - override fun generate(moduleFragment: IrModuleFragment, pluginContext: IrPluginContext) { - val androidSymbols = AndroidSymbols(pluginContext.irBuiltIns, moduleFragment) - ParcelizeFirIrTransformer(pluginContext, androidSymbols).transform(moduleFragment) - } -} diff --git a/prepare/compiler/build.gradle.kts b/prepare/compiler/build.gradle.kts index 0c6094cd917..4c39a3dc818 100644 --- a/prepare/compiler/build.gradle.kts +++ b/prepare/compiler/build.gradle.kts @@ -111,6 +111,7 @@ val distCompilerPluginProjects = listOf( ":kotlin-allopen-compiler-plugin", ":kotlin-android-extensions-runtime", ":plugins:parcelize:parcelize-compiler", + ":plugins:parcelize:parcelize-compiler:parcelize-fir", ":plugins:parcelize:parcelize-runtime", ":kotlin-noarg-compiler-plugin", ":kotlin-sam-with-receiver-compiler-plugin", diff --git a/settings.gradle b/settings.gradle index c377c89c2b5..07dbc21e7c4 100644 --- a/settings.gradle +++ b/settings.gradle @@ -332,6 +332,7 @@ include ":compiler:test-infrastructure", ":compiler:tests-common-new" include ":plugins:parcelize:parcelize-compiler", + ":plugins:parcelize:parcelize-compiler:parcelize-fir", ":plugins:parcelize:parcelize-runtime", ":kotlin-parcelize-compiler"