[FIR] Pass declared member scope to methods of declaration generation extension
This commit is contained in:
committed by
teamcity
parent
ae0bc1c078
commit
e58e86932c
+6
-4
@@ -16,6 +16,7 @@ import org.jetbrains.kotlin.fir.declarations.builder.buildRegularClass
|
||||
import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedDeclarationStatusImpl
|
||||
import org.jetbrains.kotlin.fir.extensions.FirDeclarationGenerationExtension
|
||||
import org.jetbrains.kotlin.fir.extensions.FirDeclarationPredicateRegistrar
|
||||
import org.jetbrains.kotlin.fir.extensions.MemberGenerationContext
|
||||
import org.jetbrains.kotlin.fir.extensions.predicate.DeclarationPredicate
|
||||
import org.jetbrains.kotlin.fir.extensions.predicate.annotated
|
||||
import org.jetbrains.kotlin.fir.extensions.predicateBasedProvider
|
||||
@@ -50,7 +51,7 @@ class AdditionalMembersGenerator(session: FirSession) : FirDeclarationGeneration
|
||||
matchedClasses.map { it.classId.createNestedClassId(NESTED_NAME) }
|
||||
}
|
||||
|
||||
override fun generateFunctions(callableId: CallableId, owner: FirClassSymbol<*>?): List<FirNamedFunctionSymbol> {
|
||||
override fun generateFunctions(callableId: CallableId, context: MemberGenerationContext?): List<FirNamedFunctionSymbol> {
|
||||
if (callableId.callableName != MATERIALIZE_NAME) return emptyList()
|
||||
val classId = callableId.classId ?: return emptyList()
|
||||
val matchedClassSymbol = matchedClasses.firstOrNull { it.classId == classId } ?: return emptyList()
|
||||
@@ -74,9 +75,10 @@ class AdditionalMembersGenerator(session: FirSession) : FirDeclarationGeneration
|
||||
}.symbol
|
||||
}
|
||||
|
||||
override fun generateConstructors(owner: FirClassSymbol<*>): List<FirConstructorSymbol> {
|
||||
assert(owner.classId in nestedClassIds)
|
||||
return listOf(buildConstructor(owner.classId, isInner = false, Key).symbol)
|
||||
override fun generateConstructors(context: MemberGenerationContext): List<FirConstructorSymbol> {
|
||||
val ownerClassId = context.owner.classId
|
||||
assert(ownerClassId in nestedClassIds)
|
||||
return listOf(buildConstructor(ownerClassId, isInner = false, Key).symbol)
|
||||
}
|
||||
|
||||
override fun getCallableNamesForClass(classSymbol: FirClassSymbol<*>): Set<Name> {
|
||||
|
||||
+5
-3
@@ -18,6 +18,7 @@ import org.jetbrains.kotlin.fir.declarations.builder.buildSimpleFunction
|
||||
import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedDeclarationStatusImpl
|
||||
import org.jetbrains.kotlin.fir.extensions.FirDeclarationGenerationExtension
|
||||
import org.jetbrains.kotlin.fir.extensions.FirDeclarationPredicateRegistrar
|
||||
import org.jetbrains.kotlin.fir.extensions.MemberGenerationContext
|
||||
import org.jetbrains.kotlin.fir.extensions.predicate.annotated
|
||||
import org.jetbrains.kotlin.fir.extensions.predicateBasedProvider
|
||||
import org.jetbrains.kotlin.fir.moduleData
|
||||
@@ -69,7 +70,8 @@ class CompanionGenerator(session: FirSession) : FirDeclarationGenerationExtensio
|
||||
return regularClass.symbol
|
||||
}
|
||||
|
||||
override fun generateFunctions(callableId: CallableId, owner: FirClassSymbol<*>?): List<FirNamedFunctionSymbol> {
|
||||
override fun generateFunctions(callableId: CallableId, context: MemberGenerationContext?): List<FirNamedFunctionSymbol> {
|
||||
val owner = context?.owner
|
||||
if (owner == null || owner.origin != Key.origin) return emptyList()
|
||||
if (callableId.callableName != FOO_NAME) return emptyList()
|
||||
val function = buildSimpleFunction {
|
||||
@@ -89,8 +91,8 @@ class CompanionGenerator(session: FirSession) : FirDeclarationGenerationExtensio
|
||||
return listOf(function.symbol)
|
||||
}
|
||||
|
||||
override fun generateConstructors(owner: FirClassSymbol<*>): List<FirConstructorSymbol> {
|
||||
val constructor = buildConstructor(owner.classId, isInner = false, Key)
|
||||
override fun generateConstructors(context: MemberGenerationContext): List<FirConstructorSymbol> {
|
||||
val constructor = buildConstructor(context.owner.classId, isInner = false, Key)
|
||||
return listOf(constructor.symbol)
|
||||
}
|
||||
|
||||
|
||||
+5
-3
@@ -15,6 +15,7 @@ import org.jetbrains.kotlin.fir.declarations.builder.buildRegularClass
|
||||
import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedDeclarationStatusImpl
|
||||
import org.jetbrains.kotlin.fir.extensions.FirDeclarationGenerationExtension
|
||||
import org.jetbrains.kotlin.fir.extensions.FirDeclarationPredicateRegistrar
|
||||
import org.jetbrains.kotlin.fir.extensions.MemberGenerationContext
|
||||
import org.jetbrains.kotlin.fir.extensions.predicate.DeclarationPredicate
|
||||
import org.jetbrains.kotlin.fir.extensions.predicate.annotated
|
||||
import org.jetbrains.kotlin.fir.extensions.predicateBasedProvider
|
||||
@@ -80,8 +81,8 @@ class ExternalClassGenerator(session: FirSession) : FirDeclarationGenerationExte
|
||||
return buildClass(classId).symbol
|
||||
}
|
||||
|
||||
override fun generateConstructors(owner: FirClassSymbol<*>): List<FirConstructorSymbol> {
|
||||
val classId = owner.classId
|
||||
override fun generateConstructors(context: MemberGenerationContext): List<FirConstructorSymbol> {
|
||||
val classId = context.owner.classId
|
||||
if (classId != GENERATED_CLASS_ID && classId !in classIdsForMatchedClasses) return emptyList()
|
||||
return listOf(buildConstructor(classId, isInner = false, Key).symbol)
|
||||
}
|
||||
@@ -96,8 +97,9 @@ class ExternalClassGenerator(session: FirSession) : FirDeclarationGenerationExte
|
||||
}
|
||||
|
||||
@OptIn(SymbolInternals::class)
|
||||
override fun generateFunctions(callableId: CallableId, owner: FirClassSymbol<*>?): List<FirNamedFunctionSymbol> {
|
||||
override fun generateFunctions(callableId: CallableId, context: MemberGenerationContext?): List<FirNamedFunctionSymbol> {
|
||||
if (callableId.classId !in classIdsForMatchedClasses || callableId.callableName != MATERIALIZE_NAME) return emptyList()
|
||||
val owner = context?.owner
|
||||
require(owner is FirRegularClassSymbol)
|
||||
val matchedClassId = owner.fir.matchedClass ?: return emptyList()
|
||||
val matchedClassSymbol = session.symbolProvider.getClassLikeSymbolByClassId(matchedClassId) ?: return emptyList()
|
||||
|
||||
+2
-1
@@ -17,6 +17,7 @@ import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedDeclarationStatusIm
|
||||
import org.jetbrains.kotlin.fir.expressions.builder.buildBlock
|
||||
import org.jetbrains.kotlin.fir.extensions.FirDeclarationGenerationExtension
|
||||
import org.jetbrains.kotlin.fir.extensions.FirDeclarationPredicateRegistrar
|
||||
import org.jetbrains.kotlin.fir.extensions.MemberGenerationContext
|
||||
import org.jetbrains.kotlin.fir.extensions.predicate.annotated
|
||||
import org.jetbrains.kotlin.fir.extensions.predicateBasedProvider
|
||||
import org.jetbrains.kotlin.fir.moduleData
|
||||
@@ -57,7 +58,7 @@ class MembersOfSerializerGenerator(session: FirSession) : FirDeclarationGenerati
|
||||
serializableClassIds.associateBy { Name.identifier("serialize${it.shortClassName.identifier}") }
|
||||
}
|
||||
|
||||
override fun generateFunctions(callableId: CallableId, owner: FirClassSymbol<*>?): List<FirNamedFunctionSymbol> {
|
||||
override fun generateFunctions(callableId: CallableId, context: MemberGenerationContext?): List<FirNamedFunctionSymbol> {
|
||||
val argumentClassId = serializeMethodNames[callableId.callableName] ?: return emptyList()
|
||||
val dispatchReceiverClassId = callableId.classId ?: return emptyList()
|
||||
val function = buildSimpleFunction {
|
||||
|
||||
+3
-2
@@ -16,6 +16,7 @@ import org.jetbrains.kotlin.fir.declarations.builder.buildValueParameter
|
||||
import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedDeclarationStatusImpl
|
||||
import org.jetbrains.kotlin.fir.extensions.FirDeclarationGenerationExtension
|
||||
import org.jetbrains.kotlin.fir.extensions.FirDeclarationPredicateRegistrar
|
||||
import org.jetbrains.kotlin.fir.extensions.MemberGenerationContext
|
||||
import org.jetbrains.kotlin.fir.extensions.predicate.DeclarationPredicate
|
||||
import org.jetbrains.kotlin.fir.extensions.predicate.annotated
|
||||
import org.jetbrains.kotlin.fir.extensions.predicateBasedProvider
|
||||
@@ -41,8 +42,8 @@ class TopLevelDeclarationsGenerator(session: FirSession) : FirDeclarationGenerat
|
||||
predicateBasedProvider.getSymbolsByPredicate(PREDICATE).filterIsInstance<FirRegularClassSymbol>()
|
||||
}
|
||||
|
||||
override fun generateFunctions(callableId: CallableId, owner: FirClassSymbol<*>?): List<FirNamedFunctionSymbol> {
|
||||
if (owner != null) return emptyList()
|
||||
override fun generateFunctions(callableId: CallableId, context: MemberGenerationContext?): List<FirNamedFunctionSymbol> {
|
||||
if (context != null) return emptyList()
|
||||
val matchedClassSymbol = findMatchedClassForFunction(callableId) ?: return emptyList()
|
||||
val function = buildSimpleFunction {
|
||||
resolvePhase = FirResolvePhase.BODY_RESOLVE
|
||||
|
||||
+3
-2
@@ -17,6 +17,7 @@ import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedDeclarationStatusIm
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.modality
|
||||
import org.jetbrains.kotlin.fir.extensions.FirDeclarationGenerationExtension
|
||||
import org.jetbrains.kotlin.fir.extensions.FirDeclarationPredicateRegistrar
|
||||
import org.jetbrains.kotlin.fir.extensions.MemberGenerationContext
|
||||
import org.jetbrains.kotlin.fir.extensions.predicate.annotated
|
||||
import org.jetbrains.kotlin.fir.extensions.predicateBasedProvider
|
||||
import org.jetbrains.kotlin.fir.moduleData
|
||||
@@ -53,8 +54,8 @@ class FirParcelizeDeclarationGenerator(session: FirSession) : FirDeclarationGene
|
||||
.filterIsInstance<FirRegularClassSymbol>()
|
||||
}
|
||||
|
||||
override fun generateFunctions(callableId: CallableId, owner: FirClassSymbol<*>?): List<FirNamedFunctionSymbol> {
|
||||
if (owner == null) return emptyList()
|
||||
override fun generateFunctions(callableId: CallableId, context: MemberGenerationContext?): List<FirNamedFunctionSymbol> {
|
||||
val owner = context?.owner ?: return emptyList()
|
||||
require(owner is FirRegularClassSymbol)
|
||||
val functionSymbol = when (callableId.callableName) {
|
||||
DESCRIBE_CONTENTS_NAME -> {
|
||||
|
||||
Reference in New Issue
Block a user