[FIR] Get rid of FirExtension.key
In reality plugin key was used only in two ways: - found corresponding generator for member scope of generated class - pass it to declaration origin so it can be read in backend IR plugin Because of first usage plugin key was required to be an object, which reduces functionality of second usage, because there was no way to pass any additional info via key to IR (in future this usecase will be covered with IR declaration attributes, but right now we don't have them) So now generator which created some class is now saved in its attributes and plugins can use any keys they want. And since there is no other usages of `FirExtension.key` it removed from FirExtension API at all
This commit is contained in:
committed by
TeamCityServer
parent
e7af50fe2b
commit
c46e9943cc
@@ -0,0 +1,15 @@
|
|||||||
|
/*
|
||||||
|
* 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
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.fir.declarations.FirClassLikeDeclaration
|
||||||
|
import org.jetbrains.kotlin.fir.declarations.FirDeclarationDataKey
|
||||||
|
import org.jetbrains.kotlin.fir.declarations.FirDeclarationDataRegistry
|
||||||
|
import org.jetbrains.kotlin.fir.extensions.FirDeclarationGenerationExtension
|
||||||
|
|
||||||
|
private object OwnerForGeneratedDeclarationKey : FirDeclarationDataKey()
|
||||||
|
|
||||||
|
internal var FirClassLikeDeclaration.ownerGenerator: FirDeclarationGenerationExtension? by FirDeclarationDataRegistry.data(OwnerForGeneratedDeclarationKey)
|
||||||
+6
-1
@@ -9,6 +9,7 @@ import org.jetbrains.kotlin.fir.FirSession
|
|||||||
import org.jetbrains.kotlin.fir.FirSessionComponent
|
import org.jetbrains.kotlin.fir.FirSessionComponent
|
||||||
import org.jetbrains.kotlin.fir.caches.*
|
import org.jetbrains.kotlin.fir.caches.*
|
||||||
import org.jetbrains.kotlin.fir.declarations.validate
|
import org.jetbrains.kotlin.fir.declarations.validate
|
||||||
|
import org.jetbrains.kotlin.fir.ownerGenerator
|
||||||
import org.jetbrains.kotlin.fir.render
|
import org.jetbrains.kotlin.fir.render
|
||||||
import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProvider
|
import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProvider
|
||||||
import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProviderInternals
|
import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProviderInternals
|
||||||
@@ -82,7 +83,11 @@ class FirExtensionDeclarationsSymbolProvider private constructor(
|
|||||||
else -> extensionsByTopLevelClassId.getValue()[classId]
|
else -> extensionsByTopLevelClassId.getValue()[classId]
|
||||||
} ?: return null
|
} ?: return null
|
||||||
val generatedClasses = matchedExtensions
|
val generatedClasses = matchedExtensions
|
||||||
.mapNotNull { it.generateClassLikeDeclaration(classId) }
|
.mapNotNull { generatorExtension ->
|
||||||
|
generatorExtension.generateClassLikeDeclaration(classId)?.also { symbol ->
|
||||||
|
symbol.fir.ownerGenerator = generatorExtension
|
||||||
|
}
|
||||||
|
}
|
||||||
.onEach { it.fir.validate() }
|
.onEach { it.fir.validate() }
|
||||||
return when (generatedClasses.size) {
|
return when (generatedClasses.size) {
|
||||||
0 -> null
|
0 -> null
|
||||||
|
|||||||
+2
-3
@@ -11,11 +11,11 @@ import org.jetbrains.kotlin.fir.caches.FirLazyValue
|
|||||||
import org.jetbrains.kotlin.fir.caches.firCachesFactory
|
import org.jetbrains.kotlin.fir.caches.firCachesFactory
|
||||||
import org.jetbrains.kotlin.fir.caches.getValue
|
import org.jetbrains.kotlin.fir.caches.getValue
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirClass
|
import org.jetbrains.kotlin.fir.declarations.FirClass
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
|
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
|
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
|
||||||
import org.jetbrains.kotlin.fir.declarations.utils.classId
|
import org.jetbrains.kotlin.fir.declarations.utils.classId
|
||||||
import org.jetbrains.kotlin.fir.declarations.validate
|
import org.jetbrains.kotlin.fir.declarations.validate
|
||||||
import org.jetbrains.kotlin.fir.extensions.*
|
import org.jetbrains.kotlin.fir.extensions.*
|
||||||
|
import org.jetbrains.kotlin.fir.ownerGenerator
|
||||||
import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor
|
import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.*
|
import org.jetbrains.kotlin.fir.symbols.impl.*
|
||||||
import org.jetbrains.kotlin.name.CallableId
|
import org.jetbrains.kotlin.name.CallableId
|
||||||
@@ -144,8 +144,7 @@ internal inline fun <T, V> FirSession.groupExtensionsByName(
|
|||||||
internal fun FirSession.getExtensionsForClass(klass: FirClass): List<FirDeclarationGenerationExtension> {
|
internal fun FirSession.getExtensionsForClass(klass: FirClass): List<FirDeclarationGenerationExtension> {
|
||||||
val extensions = extensionService.declarationGenerators
|
val extensions = extensionService.declarationGenerators
|
||||||
return if (klass.origin.generated) {
|
return if (klass.origin.generated) {
|
||||||
val pluginKey = (klass.origin as FirDeclarationOrigin.Plugin).key
|
listOf(klass.ownerGenerator!!)
|
||||||
extensions.filter { it.key == pluginKey }
|
|
||||||
} else {
|
} else {
|
||||||
extensions
|
extensions
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,6 @@
|
|||||||
package org.jetbrains.kotlin.fir.extensions
|
package org.jetbrains.kotlin.fir.extensions
|
||||||
|
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirPluginKey
|
|
||||||
import org.jetbrains.kotlin.fir.extensions.predicate.DeclarationPredicate
|
import org.jetbrains.kotlin.fir.extensions.predicate.DeclarationPredicate
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
@@ -24,8 +23,6 @@ typealias AnnotationFqn = FqName
|
|||||||
abstract class FirExtension(val session: FirSession) {
|
abstract class FirExtension(val session: FirSession) {
|
||||||
abstract val name: FirExtensionPointName
|
abstract val name: FirExtensionPointName
|
||||||
|
|
||||||
abstract val key: FirPluginKey
|
|
||||||
|
|
||||||
abstract val extensionType: KClass<out FirExtension>
|
abstract val extensionType: KClass<out FirExtension>
|
||||||
|
|
||||||
fun interface Factory<out P : FirExtension> {
|
fun interface Factory<out P : FirExtension> {
|
||||||
|
|||||||
-4
@@ -9,7 +9,6 @@ import org.jetbrains.kotlin.descriptors.Modality
|
|||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus
|
import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirPluginKey
|
|
||||||
import org.jetbrains.kotlin.fir.extensions.FirDeclarationPredicateRegistrar
|
import org.jetbrains.kotlin.fir.extensions.FirDeclarationPredicateRegistrar
|
||||||
import org.jetbrains.kotlin.fir.extensions.FirStatusTransformerExtension
|
import org.jetbrains.kotlin.fir.extensions.FirStatusTransformerExtension
|
||||||
import org.jetbrains.kotlin.fir.extensions.predicate.DeclarationPredicate
|
import org.jetbrains.kotlin.fir.extensions.predicate.DeclarationPredicate
|
||||||
@@ -38,7 +37,4 @@ class AllOpenStatusTransformer(session: FirSession) : FirStatusTransformerExtens
|
|||||||
override fun FirDeclarationPredicateRegistrar.registerPredicates() {
|
override fun FirDeclarationPredicateRegistrar.registerPredicates() {
|
||||||
register(PREDICATE)
|
register(PREDICATE)
|
||||||
}
|
}
|
||||||
|
|
||||||
override val key: FirPluginKey
|
|
||||||
get() = SomePluginKey
|
|
||||||
}
|
}
|
||||||
|
|||||||
-4
@@ -10,7 +10,6 @@ import org.jetbrains.kotlin.descriptors.Visibility
|
|||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus
|
import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirPluginKey
|
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
|
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirPropertyAccessExpression
|
import org.jetbrains.kotlin.fir.expressions.FirPropertyAccessExpression
|
||||||
import org.jetbrains.kotlin.fir.expressions.arguments
|
import org.jetbrains.kotlin.fir.expressions.arguments
|
||||||
@@ -78,7 +77,4 @@ class AllPublicVisibilityTransformer(session: FirSession) : FirStatusTransformer
|
|||||||
override fun FirDeclarationPredicateRegistrar.registerPredicates() {
|
override fun FirDeclarationPredicateRegistrar.registerPredicates() {
|
||||||
register(PREDICATE)
|
register(PREDICATE)
|
||||||
}
|
}
|
||||||
|
|
||||||
override val key: FirPluginKey
|
|
||||||
get() = SomePluginKey
|
|
||||||
}
|
}
|
||||||
|
|||||||
-4
@@ -11,14 +11,10 @@ import org.jetbrains.kotlin.fir.analysis.checkers.declaration.FirSimpleFunctionC
|
|||||||
import org.jetbrains.kotlin.fir.analysis.checkers.expression.ExpressionCheckers
|
import org.jetbrains.kotlin.fir.analysis.checkers.expression.ExpressionCheckers
|
||||||
import org.jetbrains.kotlin.fir.analysis.checkers.expression.FirFunctionCallChecker
|
import org.jetbrains.kotlin.fir.analysis.checkers.expression.FirFunctionCallChecker
|
||||||
import org.jetbrains.kotlin.fir.analysis.extensions.FirAdditionalCheckersExtension
|
import org.jetbrains.kotlin.fir.analysis.extensions.FirAdditionalCheckersExtension
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirPluginKey
|
|
||||||
import org.jetbrains.kotlin.fir.plugin.checkers.DummyNameChecker
|
import org.jetbrains.kotlin.fir.plugin.checkers.DummyNameChecker
|
||||||
import org.jetbrains.kotlin.fir.plugin.checkers.SignedNumberCallChecker
|
import org.jetbrains.kotlin.fir.plugin.checkers.SignedNumberCallChecker
|
||||||
|
|
||||||
class PluginAdditionalCheckers(session: FirSession) : FirAdditionalCheckersExtension(session) {
|
class PluginAdditionalCheckers(session: FirSession) : FirAdditionalCheckersExtension(session) {
|
||||||
override val key: FirPluginKey
|
|
||||||
get() = SomePluginKey
|
|
||||||
|
|
||||||
override val declarationCheckers: DeclarationCheckers = object : DeclarationCheckers() {
|
override val declarationCheckers: DeclarationCheckers = object : DeclarationCheckers() {
|
||||||
override val simpleFunctionCheckers: Set<FirSimpleFunctionChecker>
|
override val simpleFunctionCheckers: Set<FirSimpleFunctionChecker>
|
||||||
get() = setOf(DummyNameChecker)
|
get() = setOf(DummyNameChecker)
|
||||||
|
|||||||
-4
@@ -7,7 +7,6 @@ package org.jetbrains.kotlin.fir.plugin
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirClassLikeDeclaration
|
import org.jetbrains.kotlin.fir.declarations.FirClassLikeDeclaration
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirPluginKey
|
|
||||||
import org.jetbrains.kotlin.fir.extensions.FirDeclarationPredicateRegistrar
|
import org.jetbrains.kotlin.fir.extensions.FirDeclarationPredicateRegistrar
|
||||||
import org.jetbrains.kotlin.fir.extensions.FirSupertypeGenerationExtension
|
import org.jetbrains.kotlin.fir.extensions.FirSupertypeGenerationExtension
|
||||||
import org.jetbrains.kotlin.fir.extensions.predicate.DeclarationPredicate
|
import org.jetbrains.kotlin.fir.extensions.predicate.DeclarationPredicate
|
||||||
@@ -43,9 +42,6 @@ class SomeAdditionalSupertypeGenerator(session: FirSession) : FirSupertypeGenera
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
override val key: FirPluginKey
|
|
||||||
get() = SomePluginKey
|
|
||||||
|
|
||||||
override fun needTransformSupertypes(declaration: FirClassLikeDeclaration): Boolean {
|
override fun needTransformSupertypes(declaration: FirClassLikeDeclaration): Boolean {
|
||||||
return session.predicateBasedProvider.matches(PREDICATE, declaration)
|
return session.predicateBasedProvider.matches(PREDICATE, declaration)
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-6
@@ -53,7 +53,7 @@ class AdditionalMembersGenerator(session: FirSession) : FirDeclarationGeneration
|
|||||||
if (callableId.callableName != MATERIALIZE_NAME) return emptyList()
|
if (callableId.callableName != MATERIALIZE_NAME) return emptyList()
|
||||||
val classId = callableId.classId ?: return emptyList()
|
val classId = callableId.classId ?: return emptyList()
|
||||||
val matchedClassSymbol = matchedClasses.firstOrNull { it.classId == classId } ?: return emptyList()
|
val matchedClassSymbol = matchedClasses.firstOrNull { it.classId == classId } ?: return emptyList()
|
||||||
return listOf(buildMaterializeFunction(matchedClassSymbol, callableId).symbol)
|
return listOf(buildMaterializeFunction(matchedClassSymbol, callableId, Key).symbol)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun generateClassLikeDeclaration(classId: ClassId): FirClassLikeSymbol<*>? {
|
override fun generateClassLikeDeclaration(classId: ClassId): FirClassLikeSymbol<*>? {
|
||||||
@@ -62,7 +62,7 @@ class AdditionalMembersGenerator(session: FirSession) : FirDeclarationGeneration
|
|||||||
if (matchedClasses.none { it.classId == parentClassId }) return null
|
if (matchedClasses.none { it.classId == parentClassId }) return null
|
||||||
return buildRegularClass {
|
return buildRegularClass {
|
||||||
moduleData = session.moduleData
|
moduleData = session.moduleData
|
||||||
origin = key.origin
|
origin = Key.origin
|
||||||
classKind = ClassKind.CLASS
|
classKind = ClassKind.CLASS
|
||||||
scopeProvider = session.kotlinScopeProvider
|
scopeProvider = session.kotlinScopeProvider
|
||||||
status = FirResolvedDeclarationStatusImpl(Visibilities.Public, Modality.FINAL, EffectiveVisibility.Public)
|
status = FirResolvedDeclarationStatusImpl(Visibilities.Public, Modality.FINAL, EffectiveVisibility.Public)
|
||||||
@@ -74,7 +74,7 @@ class AdditionalMembersGenerator(session: FirSession) : FirDeclarationGeneration
|
|||||||
|
|
||||||
override fun generateConstructors(owner: FirClassSymbol<*>): List<FirConstructorSymbol> {
|
override fun generateConstructors(owner: FirClassSymbol<*>): List<FirConstructorSymbol> {
|
||||||
assert(owner.classId in nestedClassIds)
|
assert(owner.classId in nestedClassIds)
|
||||||
return listOf(buildConstructor(owner.classId, isInner = false).symbol)
|
return listOf(buildConstructor(owner.classId, isInner = false, Key).symbol)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getCallableNamesForClass(classSymbol: FirClassSymbol<*>): Set<Name> {
|
override fun getCallableNamesForClass(classSymbol: FirClassSymbol<*>): Set<Name> {
|
||||||
@@ -95,9 +95,6 @@ class AdditionalMembersGenerator(session: FirSession) : FirDeclarationGeneration
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override val key: FirPluginKey
|
|
||||||
get() = Key
|
|
||||||
|
|
||||||
override fun FirDeclarationPredicateRegistrar.registerPredicates() {
|
override fun FirDeclarationPredicateRegistrar.registerPredicates() {
|
||||||
register(PREDICATE)
|
register(PREDICATE)
|
||||||
}
|
}
|
||||||
|
|||||||
-3
@@ -99,9 +99,6 @@ class CompanionGenerator(session: FirSession) : FirDeclarationGenerationExtensio
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override val key: FirPluginKey
|
|
||||||
get() = Key
|
|
||||||
|
|
||||||
object Key : FirPluginKey() {
|
object Key : FirPluginKey() {
|
||||||
override fun toString(): String {
|
override fun toString(): String {
|
||||||
return "CompanionGeneratorKey"
|
return "CompanionGeneratorKey"
|
||||||
|
|||||||
+3
-6
@@ -83,7 +83,7 @@ class ExternalClassGenerator(session: FirSession) : FirDeclarationGenerationExte
|
|||||||
override fun generateConstructors(owner: FirClassSymbol<*>): List<FirConstructorSymbol> {
|
override fun generateConstructors(owner: FirClassSymbol<*>): List<FirConstructorSymbol> {
|
||||||
val classId = owner.classId
|
val classId = owner.classId
|
||||||
if (classId != GENERATED_CLASS_ID && classId !in classIdsForMatchedClasses) return emptyList()
|
if (classId != GENERATED_CLASS_ID && classId !in classIdsForMatchedClasses) return emptyList()
|
||||||
return listOf(buildConstructor(classId, isInner = false).symbol)
|
return listOf(buildConstructor(classId, isInner = false, Key).symbol)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun generateNestedClass(classId: ClassId, owner: FirClassSymbol<*>): FirClassLikeSymbol<*>? {
|
private fun generateNestedClass(classId: ClassId, owner: FirClassSymbol<*>): FirClassLikeSymbol<*>? {
|
||||||
@@ -101,13 +101,13 @@ class ExternalClassGenerator(session: FirSession) : FirDeclarationGenerationExte
|
|||||||
require(owner is FirRegularClassSymbol)
|
require(owner is FirRegularClassSymbol)
|
||||||
val matchedClassId = owner.fir.matchedClass ?: return emptyList()
|
val matchedClassId = owner.fir.matchedClass ?: return emptyList()
|
||||||
val matchedClassSymbol = session.symbolProvider.getClassLikeSymbolByClassId(matchedClassId) ?: return emptyList()
|
val matchedClassSymbol = session.symbolProvider.getClassLikeSymbolByClassId(matchedClassId) ?: return emptyList()
|
||||||
return listOf(buildMaterializeFunction(matchedClassSymbol, callableId).symbol)
|
return listOf(buildMaterializeFunction(matchedClassSymbol, callableId, Key).symbol)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun buildClass(classId: ClassId): FirRegularClass {
|
private fun buildClass(classId: ClassId): FirRegularClass {
|
||||||
return buildRegularClass {
|
return buildRegularClass {
|
||||||
moduleData = session.moduleData
|
moduleData = session.moduleData
|
||||||
origin = key.origin
|
origin = Key.origin
|
||||||
classKind = ClassKind.CLASS
|
classKind = ClassKind.CLASS
|
||||||
scopeProvider = session.kotlinScopeProvider
|
scopeProvider = session.kotlinScopeProvider
|
||||||
status = FirResolvedDeclarationStatusImpl(Visibilities.Public, Modality.FINAL, EffectiveVisibility.Public)
|
status = FirResolvedDeclarationStatusImpl(Visibilities.Public, Modality.FINAL, EffectiveVisibility.Public)
|
||||||
@@ -141,9 +141,6 @@ class ExternalClassGenerator(session: FirSession) : FirDeclarationGenerationExte
|
|||||||
return packageFqName == FOO_PACKAGE
|
return packageFqName == FOO_PACKAGE
|
||||||
}
|
}
|
||||||
|
|
||||||
override val key: FirPluginKey
|
|
||||||
get() = Key
|
|
||||||
|
|
||||||
override fun FirDeclarationPredicateRegistrar.registerPredicates() {
|
override fun FirDeclarationPredicateRegistrar.registerPredicates() {
|
||||||
register(PREDICATE)
|
register(PREDICATE)
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -89,7 +89,7 @@ class TopLevelDeclarationsGenerator(session: FirSession) : FirDeclarationGenerat
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override val key: SomePluginKey
|
private val key: SomePluginKey
|
||||||
get() = SomePluginKey
|
get() = SomePluginKey
|
||||||
|
|
||||||
override fun FirDeclarationPredicateRegistrar.registerPredicates() {
|
override fun FirDeclarationPredicateRegistrar.registerPredicates() {
|
||||||
|
|||||||
+5
-2
@@ -11,12 +11,14 @@ import org.jetbrains.kotlin.descriptors.Visibilities
|
|||||||
import org.jetbrains.kotlin.fir.containingClassForStaticMemberAttr
|
import org.jetbrains.kotlin.fir.containingClassForStaticMemberAttr
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirClass
|
import org.jetbrains.kotlin.fir.declarations.FirClass
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirConstructor
|
import org.jetbrains.kotlin.fir.declarations.FirConstructor
|
||||||
|
import org.jetbrains.kotlin.fir.declarations.FirPluginKey
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction
|
import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction
|
||||||
import org.jetbrains.kotlin.fir.declarations.builder.buildPrimaryConstructor
|
import org.jetbrains.kotlin.fir.declarations.builder.buildPrimaryConstructor
|
||||||
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.extensions.FirDeclarationGenerationExtension
|
import org.jetbrains.kotlin.fir.extensions.FirDeclarationGenerationExtension
|
||||||
import org.jetbrains.kotlin.fir.moduleData
|
import org.jetbrains.kotlin.fir.moduleData
|
||||||
|
import org.jetbrains.kotlin.fir.plugin.SomePluginKey
|
||||||
import org.jetbrains.kotlin.fir.resolve.defaultType
|
import org.jetbrains.kotlin.fir.resolve.defaultType
|
||||||
import org.jetbrains.kotlin.fir.resolve.providers.symbolProvider
|
import org.jetbrains.kotlin.fir.resolve.providers.symbolProvider
|
||||||
import org.jetbrains.kotlin.fir.symbols.SymbolInternals
|
import org.jetbrains.kotlin.fir.symbols.SymbolInternals
|
||||||
@@ -32,7 +34,8 @@ import org.jetbrains.kotlin.name.ClassId
|
|||||||
@OptIn(SymbolInternals::class)
|
@OptIn(SymbolInternals::class)
|
||||||
fun FirDeclarationGenerationExtension.buildMaterializeFunction(
|
fun FirDeclarationGenerationExtension.buildMaterializeFunction(
|
||||||
matchedClassSymbol: FirClassLikeSymbol<*>,
|
matchedClassSymbol: FirClassLikeSymbol<*>,
|
||||||
callableId: CallableId
|
callableId: CallableId,
|
||||||
|
key: FirPluginKey
|
||||||
): FirSimpleFunction {
|
): FirSimpleFunction {
|
||||||
return buildSimpleFunction {
|
return buildSimpleFunction {
|
||||||
moduleData = session.moduleData
|
moduleData = session.moduleData
|
||||||
@@ -59,7 +62,7 @@ fun FirDeclarationGenerationExtension.buildMaterializeFunction(
|
|||||||
}
|
}
|
||||||
|
|
||||||
@OptIn(SymbolInternals::class)
|
@OptIn(SymbolInternals::class)
|
||||||
fun FirDeclarationGenerationExtension.buildConstructor(classId: ClassId, isInner: Boolean): FirConstructor {
|
fun FirDeclarationGenerationExtension.buildConstructor(classId: ClassId, isInner: Boolean, key: FirPluginKey): FirConstructor {
|
||||||
val lookupTag = ConeClassLikeLookupTagImpl(classId)
|
val lookupTag = ConeClassLikeLookupTagImpl(classId)
|
||||||
return buildPrimaryConstructor {
|
return buildPrimaryConstructor {
|
||||||
moduleData = session.moduleData
|
moduleData = session.moduleData
|
||||||
|
|||||||
-5
@@ -6,12 +6,10 @@
|
|||||||
package org.jetbrains.kotlin.fir.plugin.types
|
package org.jetbrains.kotlin.fir.plugin.types
|
||||||
|
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirPluginKey
|
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotation
|
import org.jetbrains.kotlin.fir.expressions.FirAnnotation
|
||||||
import org.jetbrains.kotlin.fir.expressions.builder.buildAnnotation
|
import org.jetbrains.kotlin.fir.expressions.builder.buildAnnotation
|
||||||
import org.jetbrains.kotlin.fir.expressions.impl.FirEmptyAnnotationArgumentMapping
|
import org.jetbrains.kotlin.fir.expressions.impl.FirEmptyAnnotationArgumentMapping
|
||||||
import org.jetbrains.kotlin.fir.extensions.FirTypeAttributeExtension
|
import org.jetbrains.kotlin.fir.extensions.FirTypeAttributeExtension
|
||||||
import org.jetbrains.kotlin.fir.plugin.SomePluginKey
|
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.ConeClassLikeLookupTagImpl
|
import org.jetbrains.kotlin.fir.symbols.impl.ConeClassLikeLookupTagImpl
|
||||||
import org.jetbrains.kotlin.fir.types.ConeAttribute
|
import org.jetbrains.kotlin.fir.types.ConeAttribute
|
||||||
import org.jetbrains.kotlin.fir.types.ConeClassLikeType
|
import org.jetbrains.kotlin.fir.types.ConeClassLikeType
|
||||||
@@ -30,9 +28,6 @@ class FirNumberSignAttributeExtension(session: FirSession) : FirTypeAttributeExt
|
|||||||
private val NegativeClassId = ClassId(PACKAGE_FQN, Name.identifier("Negative"))
|
private val NegativeClassId = ClassId(PACKAGE_FQN, Name.identifier("Negative"))
|
||||||
}
|
}
|
||||||
|
|
||||||
override val key: FirPluginKey
|
|
||||||
get() = SomePluginKey
|
|
||||||
|
|
||||||
override fun extractAttributeFromAnnotation(annotation: FirAnnotation): ConeAttribute<*>? {
|
override fun extractAttributeFromAnnotation(annotation: FirAnnotation): ConeAttribute<*>? {
|
||||||
val sign = when (annotation.annotationTypeRef.coneTypeSafe<ConeClassLikeType>()?.classId) {
|
val sign = when (annotation.annotationTypeRef.coneTypeSafe<ConeClassLikeType>()?.classId) {
|
||||||
PositiveClassId -> ConeNumberSignAttribute.Sign.Positive
|
PositiveClassId -> ConeNumberSignAttribute.Sign.Positive
|
||||||
|
|||||||
-4
@@ -10,13 +10,9 @@ import org.jetbrains.kotlin.fir.analysis.checkers.declaration.*
|
|||||||
import org.jetbrains.kotlin.fir.analysis.checkers.expression.ExpressionCheckers
|
import org.jetbrains.kotlin.fir.analysis.checkers.expression.ExpressionCheckers
|
||||||
import org.jetbrains.kotlin.fir.analysis.checkers.expression.FirAnnotationCallChecker
|
import org.jetbrains.kotlin.fir.analysis.checkers.expression.FirAnnotationCallChecker
|
||||||
import org.jetbrains.kotlin.fir.analysis.extensions.FirAdditionalCheckersExtension
|
import org.jetbrains.kotlin.fir.analysis.extensions.FirAdditionalCheckersExtension
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirPluginKey
|
|
||||||
import org.jetbrains.kotlin.parcelize.fir.diagnostics.*
|
import org.jetbrains.kotlin.parcelize.fir.diagnostics.*
|
||||||
|
|
||||||
class FirParcelizeCheckersExtension(session: FirSession) : FirAdditionalCheckersExtension(session) {
|
class FirParcelizeCheckersExtension(session: FirSession) : FirAdditionalCheckersExtension(session) {
|
||||||
override val key: FirPluginKey
|
|
||||||
get() = FirParcelizePluginKey
|
|
||||||
|
|
||||||
override val expressionCheckers: ExpressionCheckers = object : ExpressionCheckers() {
|
override val expressionCheckers: ExpressionCheckers = object : ExpressionCheckers() {
|
||||||
override val annotationCallCheckers: Set<FirAnnotationCallChecker>
|
override val annotationCallCheckers: Set<FirAnnotationCallChecker>
|
||||||
get() = setOf(FirParcelizeAnnotationChecker)
|
get() = setOf(FirParcelizeAnnotationChecker)
|
||||||
|
|||||||
+1
-1
@@ -176,7 +176,7 @@ class FirParcelizeDeclarationGenerator(session: FirSession) : FirDeclarationGene
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override val key: FirPluginKey
|
private val key: FirPluginKey
|
||||||
get() = FirParcelizePluginKey
|
get() = FirParcelizePluginKey
|
||||||
|
|
||||||
override fun FirDeclarationPredicateRegistrar.registerPredicates() {
|
override fun FirDeclarationPredicateRegistrar.registerPredicates() {
|
||||||
|
|||||||
Reference in New Issue
Block a user