[FIR] Extract FirPluginKey into :core:compiler.common and rename it to GeneratedDeclarationKey
This is needed to avoid dependency on :compiler:fir:fir2ir module in backend parts of compiler plugins. It will allow to publish those parts into jars for IDE, where they are needed for working of debugger and bytecode toolwindow
This commit is contained in:
committed by
teamcity
parent
a84ece7233
commit
83d0a3e7a3
@@ -9,13 +9,11 @@ import com.intellij.psi.PsiCompiledElement
|
|||||||
import org.jetbrains.kotlin.*
|
import org.jetbrains.kotlin.*
|
||||||
import org.jetbrains.kotlin.descriptors.*
|
import org.jetbrains.kotlin.descriptors.*
|
||||||
import org.jetbrains.kotlin.fir.*
|
import org.jetbrains.kotlin.fir.*
|
||||||
import org.jetbrains.kotlin.fir.backend.generators.FakeOverrideGenerator
|
|
||||||
import org.jetbrains.kotlin.fir.builder.buildPackageDirective
|
import org.jetbrains.kotlin.fir.builder.buildPackageDirective
|
||||||
import org.jetbrains.kotlin.fir.caches.getValue
|
import org.jetbrains.kotlin.fir.caches.getValue
|
||||||
import org.jetbrains.kotlin.fir.declarations.*
|
import org.jetbrains.kotlin.fir.declarations.*
|
||||||
import org.jetbrains.kotlin.fir.declarations.builder.buildFile
|
import org.jetbrains.kotlin.fir.declarations.builder.buildFile
|
||||||
import org.jetbrains.kotlin.fir.declarations.synthetic.FirSyntheticProperty
|
import org.jetbrains.kotlin.fir.declarations.synthetic.FirSyntheticProperty
|
||||||
import org.jetbrains.kotlin.fir.declarations.utils.isExpect
|
|
||||||
import org.jetbrains.kotlin.fir.declarations.utils.isInline
|
import org.jetbrains.kotlin.fir.declarations.utils.isInline
|
||||||
import org.jetbrains.kotlin.fir.declarations.utils.isJava
|
import org.jetbrains.kotlin.fir.declarations.utils.isJava
|
||||||
import org.jetbrains.kotlin.fir.declarations.utils.visibility
|
import org.jetbrains.kotlin.fir.declarations.utils.visibility
|
||||||
@@ -44,6 +42,7 @@ import org.jetbrains.kotlin.ir.IrElement
|
|||||||
import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET
|
import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET
|
||||||
import org.jetbrains.kotlin.ir.builders.declarations.UNDEFINED_PARAMETER_INDEX
|
import org.jetbrains.kotlin.ir.builders.declarations.UNDEFINED_PARAMETER_INDEX
|
||||||
import org.jetbrains.kotlin.ir.declarations.*
|
import org.jetbrains.kotlin.ir.declarations.*
|
||||||
|
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin.GeneratedByPlugin
|
||||||
import org.jetbrains.kotlin.ir.expressions.IrConst
|
import org.jetbrains.kotlin.ir.expressions.IrConst
|
||||||
import org.jetbrains.kotlin.ir.expressions.IrConstKind
|
import org.jetbrains.kotlin.ir.expressions.IrConstKind
|
||||||
import org.jetbrains.kotlin.ir.expressions.IrExpression
|
import org.jetbrains.kotlin.ir.expressions.IrExpression
|
||||||
@@ -53,7 +52,6 @@ import org.jetbrains.kotlin.ir.symbols.*
|
|||||||
import org.jetbrains.kotlin.ir.symbols.impl.IrValueParameterSymbolImpl
|
import org.jetbrains.kotlin.ir.symbols.impl.IrValueParameterSymbolImpl
|
||||||
import org.jetbrains.kotlin.ir.types.*
|
import org.jetbrains.kotlin.ir.types.*
|
||||||
import org.jetbrains.kotlin.ir.types.impl.IrErrorTypeImpl
|
import org.jetbrains.kotlin.ir.types.impl.IrErrorTypeImpl
|
||||||
import org.jetbrains.kotlin.ir.util.SymbolTable
|
|
||||||
import org.jetbrains.kotlin.ir.util.functions
|
import org.jetbrains.kotlin.ir.util.functions
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.name.SpecialNames
|
import org.jetbrains.kotlin.name.SpecialNames
|
||||||
@@ -544,7 +542,7 @@ fun FirClass.irOrigin(firProvider: FirProvider): IrDeclarationOrigin = when {
|
|||||||
firProvider.getFirClassifierContainerFileIfAny(symbol) != null -> IrDeclarationOrigin.DEFINED
|
firProvider.getFirClassifierContainerFileIfAny(symbol) != null -> IrDeclarationOrigin.DEFINED
|
||||||
isJava -> IrDeclarationOrigin.IR_EXTERNAL_JAVA_DECLARATION_STUB
|
isJava -> IrDeclarationOrigin.IR_EXTERNAL_JAVA_DECLARATION_STUB
|
||||||
else -> when (val origin = origin) {
|
else -> when (val origin = origin) {
|
||||||
is FirDeclarationOrigin.Plugin -> IrPluginDeclarationOrigin(origin.key)
|
is FirDeclarationOrigin.Plugin -> GeneratedByPlugin(origin.key)
|
||||||
else -> IrDeclarationOrigin.IR_EXTERNAL_DECLARATION_STUB
|
else -> IrDeclarationOrigin.IR_EXTERNAL_DECLARATION_STUB
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -654,7 +652,7 @@ fun FirSession.createFilesWithGeneratedDeclarations(): List<FirFile> {
|
|||||||
|
|
||||||
fun FirDeclaration?.computeIrOrigin(predefinedOrigin: IrDeclarationOrigin? = null): IrDeclarationOrigin {
|
fun FirDeclaration?.computeIrOrigin(predefinedOrigin: IrDeclarationOrigin? = null): IrDeclarationOrigin {
|
||||||
return predefinedOrigin
|
return predefinedOrigin
|
||||||
?: (this?.origin as? FirDeclarationOrigin.Plugin)?.let { IrPluginDeclarationOrigin(it.key) }
|
?: (this?.origin as? FirDeclarationOrigin.Plugin)?.let { GeneratedByPlugin(it.key) }
|
||||||
?: (this as? FirValueParameter)?.name?.let {
|
?: (this as? FirValueParameter)?.name?.let {
|
||||||
when (it) {
|
when (it) {
|
||||||
SpecialNames.UNDERSCORE_FOR_UNUSED_VAR -> IrDeclarationOrigin.UNDERSCORE_PARAMETER
|
SpecialNames.UNDERSCORE_FOR_UNUSED_VAR -> IrDeclarationOrigin.UNDERSCORE_PARAMETER
|
||||||
|
|||||||
+2
-2
@@ -6,7 +6,6 @@
|
|||||||
package org.jetbrains.kotlin.fir.backend
|
package org.jetbrains.kotlin.fir.backend
|
||||||
|
|
||||||
import org.jetbrains.kotlin.KtFakeSourceElementKind
|
import org.jetbrains.kotlin.KtFakeSourceElementKind
|
||||||
import org.jetbrains.kotlin.KtNodeTypes
|
|
||||||
import org.jetbrains.kotlin.builtins.StandardNames.BUILT_INS_PACKAGE_FQ_NAMES
|
import org.jetbrains.kotlin.builtins.StandardNames.BUILT_INS_PACKAGE_FQ_NAMES
|
||||||
import org.jetbrains.kotlin.descriptors.DescriptorVisibility
|
import org.jetbrains.kotlin.descriptors.DescriptorVisibility
|
||||||
import org.jetbrains.kotlin.descriptors.Modality
|
import org.jetbrains.kotlin.descriptors.Modality
|
||||||
@@ -39,6 +38,7 @@ import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
|
|||||||
import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET
|
import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET
|
||||||
import org.jetbrains.kotlin.ir.builders.declarations.UNDEFINED_PARAMETER_INDEX
|
import org.jetbrains.kotlin.ir.builders.declarations.UNDEFINED_PARAMETER_INDEX
|
||||||
import org.jetbrains.kotlin.ir.declarations.*
|
import org.jetbrains.kotlin.ir.declarations.*
|
||||||
|
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin.GeneratedByPlugin
|
||||||
import org.jetbrains.kotlin.ir.declarations.impl.IrVariableImpl
|
import org.jetbrains.kotlin.ir.declarations.impl.IrVariableImpl
|
||||||
import org.jetbrains.kotlin.ir.declarations.lazy.IrLazyClass
|
import org.jetbrains.kotlin.ir.declarations.lazy.IrLazyClass
|
||||||
import org.jetbrains.kotlin.ir.expressions.IrExpression
|
import org.jetbrains.kotlin.ir.expressions.IrExpression
|
||||||
@@ -1484,7 +1484,7 @@ class Fir2IrDeclarationStorage(
|
|||||||
(symbol.fir.origin is FirDeclarationOrigin.Enhancement || symbol.fir.origin is FirDeclarationOrigin.Java) -> {
|
(symbol.fir.origin is FirDeclarationOrigin.Enhancement || symbol.fir.origin is FirDeclarationOrigin.Java) -> {
|
||||||
IrDeclarationOrigin.IR_EXTERNAL_JAVA_DECLARATION_STUB
|
IrDeclarationOrigin.IR_EXTERNAL_JAVA_DECLARATION_STUB
|
||||||
}
|
}
|
||||||
symbol.origin is FirDeclarationOrigin.Plugin -> IrPluginDeclarationOrigin((symbol.origin as FirDeclarationOrigin.Plugin).key)
|
symbol.origin is FirDeclarationOrigin.Plugin -> GeneratedByPlugin((symbol.origin as FirDeclarationOrigin.Plugin).key)
|
||||||
else -> parentOrigin
|
else -> parentOrigin
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,15 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2010-2021 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.fir.backend
|
|
||||||
|
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirPluginKey
|
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
|
|
||||||
|
|
||||||
class IrPluginDeclarationOrigin(val pluginKey: FirPluginKey) : IrDeclarationOrigin {
|
|
||||||
override fun toString(): String {
|
|
||||||
return "GENERATED[${pluginKey}]"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
+4
-4
@@ -11,7 +11,7 @@ import org.jetbrains.kotlin.fir.FirSessionComponent
|
|||||||
import org.jetbrains.kotlin.fir.ThreadSafeMutableState
|
import org.jetbrains.kotlin.fir.ThreadSafeMutableState
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
|
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirPluginKey
|
import org.jetbrains.kotlin.GeneratedDeclarationKey
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
|
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
|
||||||
|
|
||||||
data class GeneratedClass(val klass: FirRegularClass, val owner: FirDeclaration)
|
data class GeneratedClass(val klass: FirRegularClass, val owner: FirDeclaration)
|
||||||
@@ -24,21 +24,21 @@ abstract class GeneratedClassIndex : FirSessionComponent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
abstract fun registerClass(klass: FirRegularClass, owner: FirDeclaration)
|
abstract fun registerClass(klass: FirRegularClass, owner: FirDeclaration)
|
||||||
abstract operator fun get(key: FirPluginKey): List<GeneratedClass>
|
abstract operator fun get(key: GeneratedDeclarationKey): List<GeneratedClass>
|
||||||
}
|
}
|
||||||
|
|
||||||
val FirSession.generatedClassIndex: GeneratedClassIndex by FirSession.sessionComponentAccessor()
|
val FirSession.generatedClassIndex: GeneratedClassIndex by FirSession.sessionComponentAccessor()
|
||||||
|
|
||||||
@ThreadSafeMutableState
|
@ThreadSafeMutableState
|
||||||
private class GeneratedClassIndexImpl : GeneratedClassIndex() {
|
private class GeneratedClassIndexImpl : GeneratedClassIndex() {
|
||||||
private val index: ArrayListMultimap<FirPluginKey, GeneratedClass> = ArrayListMultimap.create()
|
private val index: ArrayListMultimap<GeneratedDeclarationKey, GeneratedClass> = ArrayListMultimap.create()
|
||||||
|
|
||||||
override fun registerClass(klass: FirRegularClass, owner: FirDeclaration) {
|
override fun registerClass(klass: FirRegularClass, owner: FirDeclaration) {
|
||||||
val key = (klass.origin as FirDeclarationOrigin.Plugin).key
|
val key = (klass.origin as FirDeclarationOrigin.Plugin).key
|
||||||
index.put(key, GeneratedClass(klass, owner))
|
index.put(key, GeneratedClass(klass, owner))
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun get(key: FirPluginKey): List<GeneratedClass> {
|
override fun get(key: GeneratedDeclarationKey): List<GeneratedClass> {
|
||||||
return index.get(key)
|
return index.get(key)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,8 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.fir.declarations
|
package org.jetbrains.kotlin.fir.declarations
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.GeneratedDeclarationKey
|
||||||
|
|
||||||
sealed class FirDeclarationOrigin(
|
sealed class FirDeclarationOrigin(
|
||||||
private val displayName: String? = null,
|
private val displayName: String? = null,
|
||||||
val fromSupertypes: Boolean = false,
|
val fromSupertypes: Boolean = false,
|
||||||
@@ -31,13 +33,12 @@ sealed class FirDeclarationOrigin(
|
|||||||
object RenamedForOverride : FirDeclarationOrigin()
|
object RenamedForOverride : FirDeclarationOrigin()
|
||||||
object WrappedIntegerOperator : FirDeclarationOrigin()
|
object WrappedIntegerOperator : FirDeclarationOrigin()
|
||||||
|
|
||||||
class Plugin(val key: FirPluginKey) : FirDeclarationOrigin(displayName = "Plugin[$key]", generated = true)
|
class Plugin(val key: GeneratedDeclarationKey) : FirDeclarationOrigin(displayName = "Plugin[$key]", generated = true)
|
||||||
|
|
||||||
override fun toString(): String {
|
override fun toString(): String {
|
||||||
return displayName ?: this::class.simpleName!!
|
return displayName ?: this::class.simpleName!!
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
abstract class FirPluginKey {
|
val GeneratedDeclarationKey.origin: FirDeclarationOrigin
|
||||||
val origin: FirDeclarationOrigin = FirDeclarationOrigin.Plugin(this)
|
get() = FirDeclarationOrigin.Plugin(this)
|
||||||
}
|
|
||||||
|
|||||||
@@ -5,6 +5,8 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.ir.declarations
|
package org.jetbrains.kotlin.ir.declarations
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.GeneratedDeclarationKey
|
||||||
|
|
||||||
interface IrDeclarationOrigin {
|
interface IrDeclarationOrigin {
|
||||||
object DEFINED : IrDeclarationOriginImpl("DEFINED")
|
object DEFINED : IrDeclarationOriginImpl("DEFINED")
|
||||||
object FAKE_OVERRIDE : IrDeclarationOriginImpl("FAKE_OVERRIDE")
|
object FAKE_OVERRIDE : IrDeclarationOriginImpl("FAKE_OVERRIDE")
|
||||||
@@ -78,6 +80,22 @@ interface IrDeclarationOrigin {
|
|||||||
|
|
||||||
object SHARED_VARIABLE_IN_EVALUATOR_FRAGMENT : IrDeclarationOriginImpl("SHARED_VARIABLE_IN_EVALUATOR_FRAGMENT", isSynthetic = true)
|
object SHARED_VARIABLE_IN_EVALUATOR_FRAGMENT : IrDeclarationOriginImpl("SHARED_VARIABLE_IN_EVALUATOR_FRAGMENT", isSynthetic = true)
|
||||||
|
|
||||||
|
class GeneratedByPlugin(val pluginKey: GeneratedDeclarationKey) : IrDeclarationOrigin {
|
||||||
|
override fun toString(): String {
|
||||||
|
return "GENERATED[${pluginKey}]"
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun equals(other: Any?): Boolean {
|
||||||
|
if (this === other) return true
|
||||||
|
if (other !is GeneratedByPlugin) return false
|
||||||
|
return pluginKey == other.pluginKey
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun hashCode(): Int {
|
||||||
|
return pluginKey.hashCode()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
val isSynthetic: Boolean get() = false
|
val isSynthetic: Boolean get() = false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -771,7 +771,7 @@ class IrDeclarationDeserializer(
|
|||||||
companion object {
|
companion object {
|
||||||
private val allKnownDeclarationOrigins = IrDeclarationOrigin::class.nestedClasses.toList()
|
private val allKnownDeclarationOrigins = IrDeclarationOrigin::class.nestedClasses.toList()
|
||||||
private val declarationOriginIndex =
|
private val declarationOriginIndex =
|
||||||
allKnownDeclarationOrigins.map { it.objectInstance as IrDeclarationOriginImpl }.associateBy { it.name }
|
allKnownDeclarationOrigins.mapNotNull { it.objectInstance as? IrDeclarationOriginImpl }.associateBy { it.name }
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun deserializeIrDeclarationOrigin(protoName: Int): IrDeclarationOriginImpl {
|
private fun deserializeIrDeclarationOrigin(protoName: Int): IrDeclarationOriginImpl {
|
||||||
|
|||||||
@@ -0,0 +1,8 @@
|
|||||||
|
/*
|
||||||
|
* 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
|
||||||
|
|
||||||
|
abstract class GeneratedDeclarationKey
|
||||||
+3
-2
@@ -10,10 +10,11 @@ import org.jetbrains.kotlin.descriptors.EffectiveVisibility
|
|||||||
import org.jetbrains.kotlin.descriptors.Modality
|
import org.jetbrains.kotlin.descriptors.Modality
|
||||||
import org.jetbrains.kotlin.descriptors.Visibilities
|
import org.jetbrains.kotlin.descriptors.Visibilities
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirPluginKey
|
import org.jetbrains.kotlin.GeneratedDeclarationKey
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
||||||
import org.jetbrains.kotlin.fir.declarations.builder.buildRegularClass
|
import org.jetbrains.kotlin.fir.declarations.builder.buildRegularClass
|
||||||
import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedDeclarationStatusImpl
|
import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedDeclarationStatusImpl
|
||||||
|
import org.jetbrains.kotlin.fir.declarations.origin
|
||||||
import org.jetbrains.kotlin.fir.extensions.FirDeclarationGenerationExtension
|
import org.jetbrains.kotlin.fir.extensions.FirDeclarationGenerationExtension
|
||||||
import org.jetbrains.kotlin.fir.extensions.FirDeclarationPredicateRegistrar
|
import org.jetbrains.kotlin.fir.extensions.FirDeclarationPredicateRegistrar
|
||||||
import org.jetbrains.kotlin.fir.extensions.MemberGenerationContext
|
import org.jetbrains.kotlin.fir.extensions.MemberGenerationContext
|
||||||
@@ -93,7 +94,7 @@ class AdditionalMembersGenerator(session: FirSession) : FirDeclarationGeneration
|
|||||||
return if (classSymbol in matchedClasses) setOf(NESTED_NAME) else emptySet()
|
return if (classSymbol in matchedClasses) setOf(NESTED_NAME) else emptySet()
|
||||||
}
|
}
|
||||||
|
|
||||||
object Key : FirPluginKey() {
|
object Key : GeneratedDeclarationKey() {
|
||||||
override fun toString(): String {
|
override fun toString(): String {
|
||||||
return "AllOpenMembersGeneratorKey"
|
return "AllOpenMembersGeneratorKey"
|
||||||
}
|
}
|
||||||
|
|||||||
+6
-4
@@ -11,11 +11,12 @@ import org.jetbrains.kotlin.descriptors.Modality
|
|||||||
import org.jetbrains.kotlin.descriptors.Visibilities
|
import org.jetbrains.kotlin.descriptors.Visibilities
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
|
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirPluginKey
|
import org.jetbrains.kotlin.GeneratedDeclarationKey
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
||||||
import org.jetbrains.kotlin.fir.declarations.builder.buildRegularClass
|
import org.jetbrains.kotlin.fir.declarations.builder.buildRegularClass
|
||||||
import org.jetbrains.kotlin.fir.declarations.builder.buildSimpleFunction
|
import org.jetbrains.kotlin.fir.declarations.builder.buildSimpleFunction
|
||||||
import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedDeclarationStatusImpl
|
import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedDeclarationStatusImpl
|
||||||
|
import org.jetbrains.kotlin.fir.declarations.origin
|
||||||
import org.jetbrains.kotlin.fir.extensions.FirDeclarationGenerationExtension
|
import org.jetbrains.kotlin.fir.extensions.FirDeclarationGenerationExtension
|
||||||
import org.jetbrains.kotlin.fir.extensions.FirDeclarationPredicateRegistrar
|
import org.jetbrains.kotlin.fir.extensions.FirDeclarationPredicateRegistrar
|
||||||
import org.jetbrains.kotlin.fir.extensions.MemberGenerationContext
|
import org.jetbrains.kotlin.fir.extensions.MemberGenerationContext
|
||||||
@@ -71,8 +72,9 @@ class CompanionGenerator(session: FirSession) : FirDeclarationGenerationExtensio
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun generateFunctions(callableId: CallableId, context: MemberGenerationContext?): List<FirNamedFunctionSymbol> {
|
override fun generateFunctions(callableId: CallableId, context: MemberGenerationContext?): List<FirNamedFunctionSymbol> {
|
||||||
val owner = context?.owner
|
val owner = context?.owner ?: return emptyList()
|
||||||
if (owner == null || owner.origin != Key.origin) return emptyList()
|
val ownerKey = (owner.origin as? FirDeclarationOrigin.Plugin)?.key ?: return emptyList()
|
||||||
|
if (ownerKey != Key) return emptyList()
|
||||||
if (callableId.callableName != FOO_NAME) return emptyList()
|
if (callableId.callableName != FOO_NAME) return emptyList()
|
||||||
val function = buildSimpleFunction {
|
val function = buildSimpleFunction {
|
||||||
resolvePhase = FirResolvePhase.BODY_RESOLVE
|
resolvePhase = FirResolvePhase.BODY_RESOLVE
|
||||||
@@ -118,7 +120,7 @@ class CompanionGenerator(session: FirSession) : FirDeclarationGenerationExtensio
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
object Key : FirPluginKey() {
|
object Key : GeneratedDeclarationKey() {
|
||||||
override fun toString(): String {
|
override fun toString(): String {
|
||||||
return "CompanionGeneratorKey"
|
return "CompanionGeneratorKey"
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-1
@@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.fir.plugin.generators
|
package org.jetbrains.kotlin.fir.plugin.generators
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.GeneratedDeclarationKey
|
||||||
import org.jetbrains.kotlin.descriptors.ClassKind
|
import org.jetbrains.kotlin.descriptors.ClassKind
|
||||||
import org.jetbrains.kotlin.descriptors.EffectiveVisibility
|
import org.jetbrains.kotlin.descriptors.EffectiveVisibility
|
||||||
import org.jetbrains.kotlin.descriptors.Modality
|
import org.jetbrains.kotlin.descriptors.Modality
|
||||||
@@ -45,7 +46,7 @@ class ExternalClassGenerator(session: FirSession) : FirDeclarationGenerationExte
|
|||||||
private val PREDICATE: DeclarationPredicate = annotated("ExternalClassWithNested".fqn())
|
private val PREDICATE: DeclarationPredicate = annotated("ExternalClassWithNested".fqn())
|
||||||
}
|
}
|
||||||
|
|
||||||
object Key : FirPluginKey() {
|
object Key : GeneratedDeclarationKey() {
|
||||||
override fun toString(): String {
|
override fun toString(): String {
|
||||||
return "AllOpenClassGeneratorKey"
|
return "AllOpenClassGeneratorKey"
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-2
@@ -9,11 +9,12 @@ import org.jetbrains.kotlin.descriptors.EffectiveVisibility
|
|||||||
import org.jetbrains.kotlin.descriptors.Modality
|
import org.jetbrains.kotlin.descriptors.Modality
|
||||||
import org.jetbrains.kotlin.descriptors.Visibilities
|
import org.jetbrains.kotlin.descriptors.Visibilities
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirPluginKey
|
import org.jetbrains.kotlin.GeneratedDeclarationKey
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
||||||
import org.jetbrains.kotlin.fir.declarations.builder.buildSimpleFunction
|
import org.jetbrains.kotlin.fir.declarations.builder.buildSimpleFunction
|
||||||
import org.jetbrains.kotlin.fir.declarations.builder.buildValueParameter
|
import org.jetbrains.kotlin.fir.declarations.builder.buildValueParameter
|
||||||
import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedDeclarationStatusImpl
|
import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedDeclarationStatusImpl
|
||||||
|
import org.jetbrains.kotlin.fir.declarations.origin
|
||||||
import org.jetbrains.kotlin.fir.expressions.builder.buildBlock
|
import org.jetbrains.kotlin.fir.expressions.builder.buildBlock
|
||||||
import org.jetbrains.kotlin.fir.extensions.FirDeclarationGenerationExtension
|
import org.jetbrains.kotlin.fir.extensions.FirDeclarationGenerationExtension
|
||||||
import org.jetbrains.kotlin.fir.extensions.FirDeclarationPredicateRegistrar
|
import org.jetbrains.kotlin.fir.extensions.FirDeclarationPredicateRegistrar
|
||||||
@@ -100,5 +101,5 @@ class MembersOfSerializerGenerator(session: FirSession) : FirDeclarationGenerati
|
|||||||
register(SERIALIZABLE_PREDICATE, CORE_SERIALIZER_PREDICATE)
|
register(SERIALIZABLE_PREDICATE, CORE_SERIALIZER_PREDICATE)
|
||||||
}
|
}
|
||||||
|
|
||||||
object Key : FirPluginKey()
|
object Key : GeneratedDeclarationKey()
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-2
@@ -9,11 +9,12 @@ import org.jetbrains.kotlin.descriptors.EffectiveVisibility
|
|||||||
import org.jetbrains.kotlin.descriptors.Modality
|
import org.jetbrains.kotlin.descriptors.Modality
|
||||||
import org.jetbrains.kotlin.descriptors.Visibilities
|
import org.jetbrains.kotlin.descriptors.Visibilities
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirPluginKey
|
import org.jetbrains.kotlin.GeneratedDeclarationKey
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
||||||
import org.jetbrains.kotlin.fir.declarations.builder.buildSimpleFunction
|
import org.jetbrains.kotlin.fir.declarations.builder.buildSimpleFunction
|
||||||
import org.jetbrains.kotlin.fir.declarations.builder.buildValueParameter
|
import org.jetbrains.kotlin.fir.declarations.builder.buildValueParameter
|
||||||
import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedDeclarationStatusImpl
|
import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedDeclarationStatusImpl
|
||||||
|
import org.jetbrains.kotlin.fir.declarations.origin
|
||||||
import org.jetbrains.kotlin.fir.extensions.FirDeclarationGenerationExtension
|
import org.jetbrains.kotlin.fir.extensions.FirDeclarationGenerationExtension
|
||||||
import org.jetbrains.kotlin.fir.extensions.FirDeclarationPredicateRegistrar
|
import org.jetbrains.kotlin.fir.extensions.FirDeclarationPredicateRegistrar
|
||||||
import org.jetbrains.kotlin.fir.extensions.MemberGenerationContext
|
import org.jetbrains.kotlin.fir.extensions.MemberGenerationContext
|
||||||
@@ -93,7 +94,7 @@ class TopLevelDeclarationsGenerator(session: FirSession) : FirDeclarationGenerat
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
object Key : FirPluginKey()
|
object Key : GeneratedDeclarationKey()
|
||||||
|
|
||||||
override fun FirDeclarationPredicateRegistrar.registerPredicates() {
|
override fun FirDeclarationPredicateRegistrar.registerPredicates() {
|
||||||
register(PREDICATE)
|
register(PREDICATE)
|
||||||
|
|||||||
+3
-2
@@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.fir.plugin.generators
|
package org.jetbrains.kotlin.fir.plugin.generators
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.GeneratedDeclarationKey
|
||||||
import org.jetbrains.kotlin.descriptors.EffectiveVisibility
|
import org.jetbrains.kotlin.descriptors.EffectiveVisibility
|
||||||
import org.jetbrains.kotlin.descriptors.Modality
|
import org.jetbrains.kotlin.descriptors.Modality
|
||||||
import org.jetbrains.kotlin.descriptors.Visibilities
|
import org.jetbrains.kotlin.descriptors.Visibilities
|
||||||
@@ -33,7 +34,7 @@ import org.jetbrains.kotlin.name.ClassId
|
|||||||
fun FirDeclarationGenerationExtension.buildMaterializeFunction(
|
fun FirDeclarationGenerationExtension.buildMaterializeFunction(
|
||||||
matchedClassSymbol: FirClassLikeSymbol<*>,
|
matchedClassSymbol: FirClassLikeSymbol<*>,
|
||||||
callableId: CallableId,
|
callableId: CallableId,
|
||||||
key: FirPluginKey
|
key: GeneratedDeclarationKey
|
||||||
): FirSimpleFunction {
|
): FirSimpleFunction {
|
||||||
return buildSimpleFunction {
|
return buildSimpleFunction {
|
||||||
resolvePhase = FirResolvePhase.BODY_RESOLVE
|
resolvePhase = FirResolvePhase.BODY_RESOLVE
|
||||||
@@ -61,7 +62,7 @@ fun FirDeclarationGenerationExtension.buildMaterializeFunction(
|
|||||||
}
|
}
|
||||||
|
|
||||||
@OptIn(SymbolInternals::class)
|
@OptIn(SymbolInternals::class)
|
||||||
fun FirDeclarationGenerationExtension.buildConstructor(classId: ClassId, isInner: Boolean, key: FirPluginKey): FirConstructor {
|
fun FirDeclarationGenerationExtension.buildConstructor(classId: ClassId, isInner: Boolean, key: GeneratedDeclarationKey): FirConstructor {
|
||||||
val lookupTag = ConeClassLikeLookupTagImpl(classId)
|
val lookupTag = ConeClassLikeLookupTagImpl(classId)
|
||||||
return buildPrimaryConstructor {
|
return buildPrimaryConstructor {
|
||||||
resolvePhase = FirResolvePhase.BODY_RESOLVE
|
resolvePhase = FirResolvePhase.BODY_RESOLVE
|
||||||
|
|||||||
+7
-7
@@ -6,10 +6,10 @@
|
|||||||
package org.jetbrains.kotlin.ir.plugin
|
package org.jetbrains.kotlin.ir.plugin
|
||||||
|
|
||||||
import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext
|
import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext
|
||||||
import org.jetbrains.kotlin.fir.backend.IrPluginDeclarationOrigin
|
import org.jetbrains.kotlin.GeneratedDeclarationKey
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirPluginKey
|
|
||||||
import org.jetbrains.kotlin.ir.IrElement
|
import org.jetbrains.kotlin.ir.IrElement
|
||||||
import org.jetbrains.kotlin.ir.declarations.*
|
import org.jetbrains.kotlin.ir.declarations.*
|
||||||
|
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin.GeneratedByPlugin
|
||||||
import org.jetbrains.kotlin.ir.expressions.IrBody
|
import org.jetbrains.kotlin.ir.expressions.IrBody
|
||||||
import org.jetbrains.kotlin.ir.expressions.impl.IrConstructorCallImpl
|
import org.jetbrains.kotlin.ir.expressions.impl.IrConstructorCallImpl
|
||||||
import org.jetbrains.kotlin.ir.expressions.impl.IrDelegatingConstructorCallImpl
|
import org.jetbrains.kotlin.ir.expressions.impl.IrDelegatingConstructorCallImpl
|
||||||
@@ -24,9 +24,9 @@ abstract class AbstractTransformerForGenerator(protected val context: IrPluginCo
|
|||||||
protected val irFactory = context.irFactory
|
protected val irFactory = context.irFactory
|
||||||
protected val irBuiltIns = context.irBuiltIns
|
protected val irBuiltIns = context.irBuiltIns
|
||||||
|
|
||||||
abstract fun interestedIn(key: FirPluginKey): Boolean
|
abstract fun interestedIn(key: GeneratedDeclarationKey): Boolean
|
||||||
abstract fun generateBodyForFunction(function: IrSimpleFunction, key: FirPluginKey): IrBody?
|
abstract fun generateBodyForFunction(function: IrSimpleFunction, key: GeneratedDeclarationKey): IrBody?
|
||||||
abstract fun generateBodyForConstructor(constructor: IrConstructor, key: FirPluginKey): IrBody?
|
abstract fun generateBodyForConstructor(constructor: IrConstructor, key: GeneratedDeclarationKey): IrBody?
|
||||||
|
|
||||||
final override fun visitElement(element: IrElement) {
|
final override fun visitElement(element: IrElement) {
|
||||||
when (element) {
|
when (element) {
|
||||||
@@ -39,14 +39,14 @@ abstract class AbstractTransformerForGenerator(protected val context: IrPluginCo
|
|||||||
|
|
||||||
final override fun visitSimpleFunction(declaration: IrSimpleFunction) {
|
final override fun visitSimpleFunction(declaration: IrSimpleFunction) {
|
||||||
val origin = declaration.origin
|
val origin = declaration.origin
|
||||||
if (origin !is IrPluginDeclarationOrigin || !interestedIn(origin.pluginKey)) return
|
if (origin !is GeneratedByPlugin || !interestedIn(origin.pluginKey)) return
|
||||||
require(declaration.body == null)
|
require(declaration.body == null)
|
||||||
declaration.body = generateBodyForFunction(declaration, origin.pluginKey)
|
declaration.body = generateBodyForFunction(declaration, origin.pluginKey)
|
||||||
}
|
}
|
||||||
|
|
||||||
final override fun visitConstructor(declaration: IrConstructor) {
|
final override fun visitConstructor(declaration: IrConstructor) {
|
||||||
val origin = declaration.origin
|
val origin = declaration.origin
|
||||||
if (origin !is IrPluginDeclarationOrigin || !interestedIn(origin.pluginKey)) return
|
if (origin !is GeneratedByPlugin || !interestedIn(origin.pluginKey)) return
|
||||||
require(declaration.body == null)
|
require(declaration.body == null)
|
||||||
declaration.body = generateBodyForConstructor(declaration, origin.pluginKey)
|
declaration.body = generateBodyForConstructor(declaration, origin.pluginKey)
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-4
@@ -6,22 +6,22 @@
|
|||||||
package org.jetbrains.kotlin.ir.plugin
|
package org.jetbrains.kotlin.ir.plugin
|
||||||
|
|
||||||
import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext
|
import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirPluginKey
|
import org.jetbrains.kotlin.GeneratedDeclarationKey
|
||||||
import org.jetbrains.kotlin.fir.plugin.generators.AdditionalMembersGenerator
|
import org.jetbrains.kotlin.fir.plugin.generators.AdditionalMembersGenerator
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrConstructor
|
import org.jetbrains.kotlin.ir.declarations.IrConstructor
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrSimpleFunction
|
import org.jetbrains.kotlin.ir.declarations.IrSimpleFunction
|
||||||
import org.jetbrains.kotlin.ir.expressions.IrBody
|
import org.jetbrains.kotlin.ir.expressions.IrBody
|
||||||
|
|
||||||
class TransformerForAdditionalMembersGenerator(context: IrPluginContext) : AbstractTransformerForGenerator(context) {
|
class TransformerForAdditionalMembersGenerator(context: IrPluginContext) : AbstractTransformerForGenerator(context) {
|
||||||
override fun interestedIn(key: FirPluginKey): Boolean {
|
override fun interestedIn(key: GeneratedDeclarationKey): Boolean {
|
||||||
return key == AdditionalMembersGenerator.Key
|
return key == AdditionalMembersGenerator.Key
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun generateBodyForFunction(function: IrSimpleFunction, key: FirPluginKey): IrBody? {
|
override fun generateBodyForFunction(function: IrSimpleFunction, key: GeneratedDeclarationKey): IrBody? {
|
||||||
return generateDefaultBodyForMaterializeFunction(function)
|
return generateDefaultBodyForMaterializeFunction(function)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun generateBodyForConstructor(constructor: IrConstructor, key: FirPluginKey): IrBody? {
|
override fun generateBodyForConstructor(constructor: IrConstructor, key: GeneratedDeclarationKey): IrBody? {
|
||||||
return generateBodyForDefaultConstructor(constructor)
|
return generateBodyForDefaultConstructor(constructor)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-4
@@ -6,7 +6,7 @@
|
|||||||
package org.jetbrains.kotlin.ir.plugin
|
package org.jetbrains.kotlin.ir.plugin
|
||||||
|
|
||||||
import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext
|
import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirPluginKey
|
import org.jetbrains.kotlin.GeneratedDeclarationKey
|
||||||
import org.jetbrains.kotlin.fir.plugin.generators.CompanionGenerator
|
import org.jetbrains.kotlin.fir.plugin.generators.CompanionGenerator
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrConstructor
|
import org.jetbrains.kotlin.ir.declarations.IrConstructor
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrSimpleFunction
|
import org.jetbrains.kotlin.ir.declarations.IrSimpleFunction
|
||||||
@@ -16,17 +16,17 @@ import org.jetbrains.kotlin.ir.expressions.impl.IrConstImpl
|
|||||||
import org.jetbrains.kotlin.ir.expressions.impl.IrReturnImpl
|
import org.jetbrains.kotlin.ir.expressions.impl.IrReturnImpl
|
||||||
|
|
||||||
class TransformerForCompanionGenerator(context: IrPluginContext) : AbstractTransformerForGenerator(context) {
|
class TransformerForCompanionGenerator(context: IrPluginContext) : AbstractTransformerForGenerator(context) {
|
||||||
override fun interestedIn(key: FirPluginKey): Boolean {
|
override fun interestedIn(key: GeneratedDeclarationKey): Boolean {
|
||||||
return key == CompanionGenerator.Key
|
return key == CompanionGenerator.Key
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun generateBodyForFunction(function: IrSimpleFunction, key: FirPluginKey): IrBody {
|
override fun generateBodyForFunction(function: IrSimpleFunction, key: GeneratedDeclarationKey): IrBody {
|
||||||
val const = IrConstImpl(-1, -1, irBuiltIns.intType, IrConstKind.Int, value = 10)
|
val const = IrConstImpl(-1, -1, irBuiltIns.intType, IrConstKind.Int, value = 10)
|
||||||
val returnStatement = IrReturnImpl(-1, -1, irBuiltIns.nothingType, function.symbol, const)
|
val returnStatement = IrReturnImpl(-1, -1, irBuiltIns.nothingType, function.symbol, const)
|
||||||
return irFactory.createBlockBody(-1, -1, listOf(returnStatement))
|
return irFactory.createBlockBody(-1, -1, listOf(returnStatement))
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun generateBodyForConstructor(constructor: IrConstructor, key: FirPluginKey): IrBody? {
|
override fun generateBodyForConstructor(constructor: IrConstructor, key: GeneratedDeclarationKey): IrBody? {
|
||||||
return generateBodyForDefaultConstructor(constructor)
|
return generateBodyForDefaultConstructor(constructor)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-4
@@ -6,22 +6,22 @@
|
|||||||
package org.jetbrains.kotlin.ir.plugin
|
package org.jetbrains.kotlin.ir.plugin
|
||||||
|
|
||||||
import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext
|
import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirPluginKey
|
import org.jetbrains.kotlin.GeneratedDeclarationKey
|
||||||
import org.jetbrains.kotlin.fir.plugin.generators.ExternalClassGenerator
|
import org.jetbrains.kotlin.fir.plugin.generators.ExternalClassGenerator
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrConstructor
|
import org.jetbrains.kotlin.ir.declarations.IrConstructor
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrSimpleFunction
|
import org.jetbrains.kotlin.ir.declarations.IrSimpleFunction
|
||||||
import org.jetbrains.kotlin.ir.expressions.IrBody
|
import org.jetbrains.kotlin.ir.expressions.IrBody
|
||||||
|
|
||||||
class TransformerForExternalClassGenerator(context: IrPluginContext) : AbstractTransformerForGenerator(context) {
|
class TransformerForExternalClassGenerator(context: IrPluginContext) : AbstractTransformerForGenerator(context) {
|
||||||
override fun interestedIn(key: FirPluginKey): Boolean {
|
override fun interestedIn(key: GeneratedDeclarationKey): Boolean {
|
||||||
return key == ExternalClassGenerator.Key
|
return key == ExternalClassGenerator.Key
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun generateBodyForFunction(function: IrSimpleFunction, key: FirPluginKey): IrBody? {
|
override fun generateBodyForFunction(function: IrSimpleFunction, key: GeneratedDeclarationKey): IrBody? {
|
||||||
return generateDefaultBodyForMaterializeFunction(function)
|
return generateDefaultBodyForMaterializeFunction(function)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun generateBodyForConstructor(constructor: IrConstructor, key: FirPluginKey): IrBody? {
|
override fun generateBodyForConstructor(constructor: IrConstructor, key: GeneratedDeclarationKey): IrBody? {
|
||||||
return generateBodyForDefaultConstructor(constructor)
|
return generateBodyForDefaultConstructor(constructor)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-4
@@ -6,7 +6,7 @@
|
|||||||
package org.jetbrains.kotlin.ir.plugin
|
package org.jetbrains.kotlin.ir.plugin
|
||||||
|
|
||||||
import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext
|
import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirPluginKey
|
import org.jetbrains.kotlin.GeneratedDeclarationKey
|
||||||
import org.jetbrains.kotlin.fir.plugin.generators.TopLevelDeclarationsGenerator
|
import org.jetbrains.kotlin.fir.plugin.generators.TopLevelDeclarationsGenerator
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrConstructor
|
import org.jetbrains.kotlin.ir.declarations.IrConstructor
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrSimpleFunction
|
import org.jetbrains.kotlin.ir.declarations.IrSimpleFunction
|
||||||
@@ -17,18 +17,18 @@ import org.jetbrains.kotlin.ir.expressions.impl.IrReturnImpl
|
|||||||
import org.jetbrains.kotlin.ir.types.classFqName
|
import org.jetbrains.kotlin.ir.types.classFqName
|
||||||
|
|
||||||
class TransformerForTopLevelDeclarationsGenerator(context: IrPluginContext) : AbstractTransformerForGenerator(context) {
|
class TransformerForTopLevelDeclarationsGenerator(context: IrPluginContext) : AbstractTransformerForGenerator(context) {
|
||||||
override fun interestedIn(key: FirPluginKey): Boolean {
|
override fun interestedIn(key: GeneratedDeclarationKey): Boolean {
|
||||||
return key == TopLevelDeclarationsGenerator.Key
|
return key == TopLevelDeclarationsGenerator.Key
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun generateBodyForFunction(function: IrSimpleFunction, key: FirPluginKey): IrBody {
|
override fun generateBodyForFunction(function: IrSimpleFunction, key: GeneratedDeclarationKey): IrBody {
|
||||||
val className = function.valueParameters.single().type.classFqName?.asString() ?: "<error>"
|
val className = function.valueParameters.single().type.classFqName?.asString() ?: "<error>"
|
||||||
val const = IrConstImpl(-1, -1, irBuiltIns.stringType, IrConstKind.String, className)
|
val const = IrConstImpl(-1, -1, irBuiltIns.stringType, IrConstKind.String, className)
|
||||||
val returnExpression = IrReturnImpl(-1, -1, irBuiltIns.nothingType, function.symbol, const)
|
val returnExpression = IrReturnImpl(-1, -1, irBuiltIns.nothingType, function.symbol, const)
|
||||||
return irFactory.createBlockBody(-1, -1, listOf(returnExpression))
|
return irFactory.createBlockBody(-1, -1, listOf(returnExpression))
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun generateBodyForConstructor(constructor: IrConstructor, key: FirPluginKey): IrBody? {
|
override fun generateBodyForConstructor(constructor: IrConstructor, key: GeneratedDeclarationKey): IrBody? {
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,7 +15,6 @@ dependencies {
|
|||||||
compileOnly(project(":compiler:backend.jvm"))
|
compileOnly(project(":compiler:backend.jvm"))
|
||||||
compileOnly(project(":compiler:ir.tree.impl"))
|
compileOnly(project(":compiler:ir.tree.impl"))
|
||||||
compileOnly(project(":compiler:fir:tree"))
|
compileOnly(project(":compiler:fir:tree"))
|
||||||
compileOnly(project(":compiler:fir:fir2ir"))
|
|
||||||
compileOnly(intellijCore())
|
compileOnly(intellijCore())
|
||||||
compileOnly(commonDependency("org.jetbrains.intellij.deps:asm-all"))
|
compileOnly(commonDependency("org.jetbrains.intellij.deps:asm-all"))
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -7,9 +7,9 @@ package org.jetbrains.kotlin.parcelize.ir
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext
|
import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext
|
||||||
import org.jetbrains.kotlin.descriptors.Modality
|
import org.jetbrains.kotlin.descriptors.Modality
|
||||||
import org.jetbrains.kotlin.fir.backend.IrPluginDeclarationOrigin
|
|
||||||
import org.jetbrains.kotlin.ir.IrElement
|
import org.jetbrains.kotlin.ir.IrElement
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrClass
|
import org.jetbrains.kotlin.ir.declarations.IrClass
|
||||||
|
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin.GeneratedByPlugin
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrModuleFragment
|
import org.jetbrains.kotlin.ir.declarations.IrModuleFragment
|
||||||
import org.jetbrains.kotlin.ir.util.companionObject
|
import org.jetbrains.kotlin.ir.util.companionObject
|
||||||
import org.jetbrains.kotlin.ir.util.functions
|
import org.jetbrains.kotlin.ir.util.functions
|
||||||
@@ -47,7 +47,7 @@ class ParcelizeFirIrTransformer(
|
|||||||
|
|
||||||
for (function in declaration.functions) {
|
for (function in declaration.functions) {
|
||||||
val origin = function.origin
|
val origin = function.origin
|
||||||
if (origin !is IrPluginDeclarationOrigin || origin.pluginKey != FirParcelizePluginKey) continue
|
if (origin !is GeneratedByPlugin || origin.pluginKey != FirParcelizePluginKey) continue
|
||||||
when (function.name.identifier) {
|
when (function.name.identifier) {
|
||||||
ParcelizeSyntheticComponent.ComponentKind.DESCRIBE_CONTENTS.methodName -> {
|
ParcelizeSyntheticComponent.ComponentKind.DESCRIBE_CONTENTS.methodName -> {
|
||||||
function.generateDescribeContentsBody(parcelableProperties)
|
function.generateDescribeContentsBody(parcelableProperties)
|
||||||
|
|||||||
+3
-2
@@ -9,11 +9,12 @@ import org.jetbrains.kotlin.descriptors.EffectiveVisibility
|
|||||||
import org.jetbrains.kotlin.descriptors.Modality
|
import org.jetbrains.kotlin.descriptors.Modality
|
||||||
import org.jetbrains.kotlin.descriptors.Visibilities
|
import org.jetbrains.kotlin.descriptors.Visibilities
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirPluginKey
|
import org.jetbrains.kotlin.GeneratedDeclarationKey
|
||||||
import org.jetbrains.kotlin.fir.declarations.builder.FirSimpleFunctionBuilder
|
import org.jetbrains.kotlin.fir.declarations.builder.FirSimpleFunctionBuilder
|
||||||
import org.jetbrains.kotlin.fir.declarations.builder.buildSimpleFunction
|
import org.jetbrains.kotlin.fir.declarations.builder.buildSimpleFunction
|
||||||
import org.jetbrains.kotlin.fir.declarations.builder.buildValueParameter
|
import org.jetbrains.kotlin.fir.declarations.builder.buildValueParameter
|
||||||
import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedDeclarationStatusImpl
|
import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedDeclarationStatusImpl
|
||||||
|
import org.jetbrains.kotlin.fir.declarations.origin
|
||||||
import org.jetbrains.kotlin.fir.declarations.utils.modality
|
import org.jetbrains.kotlin.fir.declarations.utils.modality
|
||||||
import org.jetbrains.kotlin.fir.extensions.FirDeclarationGenerationExtension
|
import org.jetbrains.kotlin.fir.extensions.FirDeclarationGenerationExtension
|
||||||
import org.jetbrains.kotlin.fir.extensions.FirDeclarationPredicateRegistrar
|
import org.jetbrains.kotlin.fir.extensions.FirDeclarationPredicateRegistrar
|
||||||
@@ -177,7 +178,7 @@ class FirParcelizeDeclarationGenerator(session: FirSession) : FirDeclarationGene
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private val key: FirPluginKey
|
private val key: GeneratedDeclarationKey
|
||||||
get() = FirParcelizePluginKey
|
get() = FirParcelizePluginKey
|
||||||
|
|
||||||
override fun FirDeclarationPredicateRegistrar.registerPredicates() {
|
override fun FirDeclarationPredicateRegistrar.registerPredicates() {
|
||||||
|
|||||||
+2
-2
@@ -5,9 +5,9 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.parcelize.fir
|
package org.jetbrains.kotlin.parcelize.fir
|
||||||
|
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirPluginKey
|
import org.jetbrains.kotlin.GeneratedDeclarationKey
|
||||||
|
|
||||||
object FirParcelizePluginKey : FirPluginKey() {
|
object FirParcelizePluginKey : GeneratedDeclarationKey() {
|
||||||
override fun toString(): String {
|
override fun toString(): String {
|
||||||
return "FirParcelize"
|
return "FirParcelize"
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user