[Parcelize] Reorganize module structure of Parcelize plugin

Also mark parcelize as compatible with K2
This commit is contained in:
Dmitriy Novozhilov
2022-05-17 15:44:02 +03:00
committed by teamcity
parent 2a7dc1cc0c
commit 259862d294
45 changed files with 193 additions and 127 deletions
@@ -0,0 +1,27 @@
description = "Parcelize compiler plugin (CLI)"
plugins {
kotlin("jvm")
id("jps-compatible")
}
dependencies {
api(project(":plugins:parcelize:parcelize-compiler:parcelize.common"))
api(project(":plugins:parcelize:parcelize-compiler:parcelize.k1"))
api(project(":plugins:parcelize:parcelize-compiler:parcelize.k2"))
api(project(":plugins:parcelize:parcelize-compiler:parcelize.backend"))
compileOnly(project(":compiler:plugin-api"))
compileOnly(project(":compiler:backend"))
compileOnly(project(":compiler:ir.backend.common"))
compileOnly(intellijCore())
}
sourceSets {
"main" { projectDefault() }
"test" { none() }
}
runtimeJar()
javadocJar()
sourcesJar()
@@ -0,0 +1 @@
org.jetbrains.kotlin.parcelize.ParcelizeComponentRegistrar
@@ -0,0 +1,53 @@
/*
* 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 com.intellij.mock.MockProject
import com.intellij.openapi.project.Project
import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension
import org.jetbrains.kotlin.codegen.extensions.ClassBuilderInterceptorExtension
import org.jetbrains.kotlin.codegen.extensions.ExpressionCodegenExtension
import org.jetbrains.kotlin.compiler.plugin.ComponentRegistrar
import org.jetbrains.kotlin.config.CompilerConfiguration
import org.jetbrains.kotlin.container.StorageComponentContainer
import org.jetbrains.kotlin.container.useInstance
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
import org.jetbrains.kotlin.extensions.StorageComponentContainerContributor
import org.jetbrains.kotlin.platform.TargetPlatform
import org.jetbrains.kotlin.platform.jvm.isJvm
import org.jetbrains.kotlin.resolve.extensions.SyntheticResolveExtension
class ParcelizeComponentRegistrar : ComponentRegistrar {
companion object {
fun registerParcelizeComponents(project: Project) {
ExpressionCodegenExtension.registerExtension(project, ParcelizeCodegenExtension())
IrGenerationExtension.registerExtension(project, ParcelizeIrGeneratorExtension())
SyntheticResolveExtension.registerExtension(project, ParcelizeResolveExtension())
ClassBuilderInterceptorExtension.registerExtension(project, ParcelizeClinitClassBuilderInterceptorExtension())
StorageComponentContainerContributor.registerExtension(project, ParcelizeDeclarationCheckerComponentContainerContributor())
}
}
override fun registerProjectComponents(project: MockProject, configuration: CompilerConfiguration) {
registerParcelizeComponents(project)
}
override val supportsK2: Boolean
get() = true
}
class ParcelizeDeclarationCheckerComponentContainerContributor : StorageComponentContainerContributor {
override fun registerModuleComponents(
container: StorageComponentContainer,
platform: TargetPlatform,
moduleDescriptor: ModuleDescriptor,
) {
if (platform.isJvm()) {
container.useInstance(ParcelizeDeclarationChecker())
container.useInstance(ParcelizeAnnotationChecker())
}
}
}