[FIR] Pass symbol of containing class to FirStatusTransformerExtension instead of fir node
This commit is contained in:
committed by
Space Team
parent
67c504e6f0
commit
ff4c5c1d03
@@ -144,6 +144,10 @@ class FirJavaClass @FirImplementationDetail internal constructor(
|
||||
typeParameters.transformInplace(transformer, data)
|
||||
return this
|
||||
}
|
||||
|
||||
override fun replaceStatus(newStatus: FirDeclarationStatus) {
|
||||
status = newStatus
|
||||
}
|
||||
}
|
||||
|
||||
@FirBuilderDsl
|
||||
|
||||
@@ -156,6 +156,10 @@ class FirJavaConstructor @FirImplementationDetail constructor(
|
||||
override fun replaceBody(newBody: FirBlock?) {
|
||||
error("Body cannot be replaced for FirJavaConstructor")
|
||||
}
|
||||
|
||||
override fun replaceStatus(newStatus: FirDeclarationStatus) {
|
||||
status = newStatus
|
||||
}
|
||||
}
|
||||
|
||||
@FirBuilderDsl
|
||||
|
||||
@@ -166,6 +166,10 @@ class FirJavaField @FirImplementationDetail constructor(
|
||||
override fun replaceContextReceivers(newContextReceivers: List<FirContextReceiver>) {
|
||||
error("Body cannot be replaced for FirJavaField")
|
||||
}
|
||||
|
||||
override fun replaceStatus(newStatus: FirDeclarationStatus) {
|
||||
status = newStatus
|
||||
}
|
||||
}
|
||||
|
||||
@FirBuilderDsl
|
||||
|
||||
@@ -184,6 +184,10 @@ class FirJavaMethod @FirImplementationDetail constructor(
|
||||
override fun replaceContextReceivers(newContextReceivers: List<FirContextReceiver>) {
|
||||
error("Body cannot be replaced for FirJavaMethod")
|
||||
}
|
||||
|
||||
override fun replaceStatus(newStatus: FirDeclarationStatus) {
|
||||
status = newStatus
|
||||
}
|
||||
}
|
||||
|
||||
val ALL_JAVA_OPERATION_NAMES =
|
||||
|
||||
+4
@@ -196,6 +196,10 @@ class FirJavaValueParameter @FirImplementationDetail constructor(
|
||||
override fun replaceContextReceivers(newContextReceivers: List<FirContextReceiver>) {
|
||||
error("Body cannot be replaced for FirJavaValueParameter")
|
||||
}
|
||||
|
||||
override fun replaceStatus(newStatus: FirDeclarationStatus) {
|
||||
error("Status cannot be replaced for FirJavaValueParameter")
|
||||
}
|
||||
}
|
||||
|
||||
@FirBuilderDsl
|
||||
|
||||
+10
-9
@@ -10,6 +10,7 @@ import org.jetbrains.kotlin.descriptors.Visibility
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.declarations.impl.FirDeclarationStatusImpl
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol
|
||||
import kotlin.reflect.KClass
|
||||
|
||||
abstract class FirStatusTransformerExtension(session: FirSession) : FirExtension(session) {
|
||||
@@ -34,7 +35,7 @@ abstract class FirStatusTransformerExtension(session: FirSession) : FirExtension
|
||||
open fun transformStatus(
|
||||
status: FirDeclarationStatus,
|
||||
property: FirProperty,
|
||||
containingClass: FirClass?,
|
||||
containingClass: FirClassLikeSymbol<*>?,
|
||||
isLocal: Boolean
|
||||
): FirDeclarationStatus {
|
||||
return transformStatus(status, property)
|
||||
@@ -43,7 +44,7 @@ abstract class FirStatusTransformerExtension(session: FirSession) : FirExtension
|
||||
open fun transformStatus(
|
||||
status: FirDeclarationStatus,
|
||||
function: FirSimpleFunction,
|
||||
containingClass: FirClass?,
|
||||
containingClass: FirClassLikeSymbol<*>?,
|
||||
isLocal: Boolean
|
||||
): FirDeclarationStatus {
|
||||
return transformStatus(status, function)
|
||||
@@ -52,7 +53,7 @@ abstract class FirStatusTransformerExtension(session: FirSession) : FirExtension
|
||||
open fun transformStatus(
|
||||
status: FirDeclarationStatus,
|
||||
regularClass: FirRegularClass,
|
||||
containingClass: FirClass?,
|
||||
containingClass: FirClassLikeSymbol<*>?,
|
||||
isLocal: Boolean
|
||||
): FirDeclarationStatus {
|
||||
return transformStatus(status, regularClass)
|
||||
@@ -61,7 +62,7 @@ abstract class FirStatusTransformerExtension(session: FirSession) : FirExtension
|
||||
open fun transformStatus(
|
||||
status: FirDeclarationStatus,
|
||||
typeAlias: FirTypeAlias,
|
||||
containingClass: FirClass?,
|
||||
containingClass: FirClassLikeSymbol<*>?,
|
||||
isLocal: Boolean
|
||||
): FirDeclarationStatus {
|
||||
return transformStatus(status, typeAlias)
|
||||
@@ -70,7 +71,7 @@ abstract class FirStatusTransformerExtension(session: FirSession) : FirExtension
|
||||
open fun transformStatus(
|
||||
status: FirDeclarationStatus,
|
||||
propertyAccessor: FirPropertyAccessor,
|
||||
containingClass: FirClass?,
|
||||
containingClass: FirClassLikeSymbol<*>?,
|
||||
containingProperty: FirProperty?,
|
||||
isLocal: Boolean
|
||||
): FirDeclarationStatus {
|
||||
@@ -80,7 +81,7 @@ abstract class FirStatusTransformerExtension(session: FirSession) : FirExtension
|
||||
open fun transformStatus(
|
||||
status: FirDeclarationStatus,
|
||||
constructor: FirConstructor,
|
||||
containingClass: FirClass?,
|
||||
containingClass: FirClassLikeSymbol<*>?,
|
||||
isLocal: Boolean
|
||||
): FirDeclarationStatus {
|
||||
return transformStatus(status, constructor)
|
||||
@@ -89,7 +90,7 @@ abstract class FirStatusTransformerExtension(session: FirSession) : FirExtension
|
||||
open fun transformStatus(
|
||||
status: FirDeclarationStatus,
|
||||
field: FirField,
|
||||
containingClass: FirClass?,
|
||||
containingClass: FirClassLikeSymbol<*>?,
|
||||
isLocal: Boolean
|
||||
): FirDeclarationStatus {
|
||||
return transformStatus(status, field)
|
||||
@@ -98,7 +99,7 @@ abstract class FirStatusTransformerExtension(session: FirSession) : FirExtension
|
||||
open fun transformStatus(
|
||||
status: FirDeclarationStatus,
|
||||
backingField: FirBackingField,
|
||||
containingClass: FirClass?,
|
||||
containingClass: FirClassLikeSymbol<*>?,
|
||||
isLocal: Boolean
|
||||
): FirDeclarationStatus {
|
||||
return transformStatus(status, backingField)
|
||||
@@ -107,7 +108,7 @@ abstract class FirStatusTransformerExtension(session: FirSession) : FirExtension
|
||||
open fun transformStatus(
|
||||
status: FirDeclarationStatus,
|
||||
enumEntry: FirEnumEntry,
|
||||
containingClass: FirClass?,
|
||||
containingClass: FirClassLikeSymbol<*>?,
|
||||
isLocal: Boolean
|
||||
): FirDeclarationStatus {
|
||||
return transformStatus(status, enumEntry)
|
||||
|
||||
+18
-8
@@ -111,7 +111,7 @@ class FirStatusResolver(
|
||||
val statuses = overriddenStatuses
|
||||
?: getOverriddenProperties(property, containingClass).map { it.status as FirResolvedDeclarationStatus }
|
||||
|
||||
val status = property.applyExtensionTransformers { transformStatus(it, property, containingClass, isLocal) }
|
||||
val status = property.applyExtensionTransformers { transformStatus(it, property, containingClass?.symbol, isLocal) }
|
||||
return resolveStatus(property, status, containingClass, null, isLocal, statuses)
|
||||
}
|
||||
|
||||
@@ -142,7 +142,9 @@ class FirStatusResolver(
|
||||
}
|
||||
|
||||
fun resolveStatus(function: FirSimpleFunction, containingClass: FirClass?, isLocal: Boolean): FirResolvedDeclarationStatus {
|
||||
val status = function.applyExtensionTransformers { transformStatus(it, function, containingClass, isLocal) }
|
||||
val status = function.applyExtensionTransformers {
|
||||
transformStatus(it, function, containingClass?.symbol, isLocal)
|
||||
}
|
||||
val overriddenStatuses = getOverriddenStatuses(function, containingClass)
|
||||
return resolveStatus(function, status, containingClass, null, isLocal, overriddenStatuses)
|
||||
}
|
||||
@@ -153,7 +155,7 @@ class FirStatusResolver(
|
||||
isLocal: Boolean
|
||||
): FirResolvedDeclarationStatus {
|
||||
val status = when (firClass) {
|
||||
is FirRegularClass -> firClass.applyExtensionTransformers { transformStatus(it, firClass, containingClass, isLocal) }
|
||||
is FirRegularClass -> firClass.applyExtensionTransformers { transformStatus(it, firClass, containingClass?.symbol, isLocal) }
|
||||
else -> firClass.status
|
||||
}
|
||||
return resolveStatus(firClass, status, containingClass, null, isLocal, emptyList())
|
||||
@@ -164,7 +166,9 @@ class FirStatusResolver(
|
||||
containingClass: FirClass?,
|
||||
isLocal: Boolean
|
||||
): FirResolvedDeclarationStatus {
|
||||
val status = typeAlias.applyExtensionTransformers { transformStatus(it, typeAlias, containingClass, isLocal) }
|
||||
val status = typeAlias.applyExtensionTransformers {
|
||||
transformStatus(it, typeAlias, containingClass?.symbol, isLocal)
|
||||
}
|
||||
return resolveStatus(typeAlias, status, containingClass, null, isLocal, emptyList())
|
||||
}
|
||||
|
||||
@@ -176,13 +180,15 @@ class FirStatusResolver(
|
||||
overriddenStatuses: List<FirResolvedDeclarationStatus> = emptyList(),
|
||||
): FirResolvedDeclarationStatus {
|
||||
val status = propertyAccessor.applyExtensionTransformers {
|
||||
transformStatus(it, propertyAccessor, containingClass, containingProperty, isLocal)
|
||||
transformStatus(it, propertyAccessor, containingClass?.symbol, containingProperty, isLocal)
|
||||
}
|
||||
return resolveStatus(propertyAccessor, status, containingClass, containingProperty, isLocal, overriddenStatuses)
|
||||
}
|
||||
|
||||
fun resolveStatus(constructor: FirConstructor, containingClass: FirClass?, isLocal: Boolean): FirResolvedDeclarationStatus {
|
||||
val status = constructor.applyExtensionTransformers { transformStatus(it, constructor, containingClass, isLocal) }
|
||||
val status = constructor.applyExtensionTransformers {
|
||||
transformStatus(it, constructor, containingClass?.symbol, isLocal)
|
||||
}
|
||||
return resolveStatus(constructor, status, containingClass, null, isLocal, emptyList())
|
||||
}
|
||||
|
||||
@@ -195,12 +201,16 @@ class FirStatusResolver(
|
||||
containingClass: FirClass?,
|
||||
isLocal: Boolean
|
||||
): FirResolvedDeclarationStatus {
|
||||
val status = backingField.applyExtensionTransformers { transformStatus(it, backingField, containingClass, isLocal) }
|
||||
val status = backingField.applyExtensionTransformers {
|
||||
transformStatus(it, backingField, containingClass?.symbol, isLocal)
|
||||
}
|
||||
return resolveStatus(backingField, status, containingClass, null, isLocal, emptyList())
|
||||
}
|
||||
|
||||
fun resolveStatus(enumEntry: FirEnumEntry, containingClass: FirClass?, isLocal: Boolean): FirResolvedDeclarationStatus {
|
||||
val status = enumEntry.applyExtensionTransformers { transformStatus(it, enumEntry, containingClass, isLocal) }
|
||||
val status = enumEntry.applyExtensionTransformers {
|
||||
transformStatus(it, enumEntry, containingClass?.symbol, isLocal)
|
||||
}
|
||||
return resolveStatus(enumEntry, status, containingClass, null, isLocal, emptyList())
|
||||
}
|
||||
|
||||
|
||||
+5
-1
@@ -186,7 +186,11 @@ class FirSyntheticProperty(
|
||||
notSupported()
|
||||
}
|
||||
|
||||
override fun replaceStatus(newStatus: FirDeclarationStatus) {
|
||||
notSupported()
|
||||
}
|
||||
|
||||
private fun notSupported(): Nothing {
|
||||
throw AssertionError("Transformation of synthetic property isn't supported")
|
||||
error("Transformation of synthetic property isn't supported")
|
||||
}
|
||||
}
|
||||
|
||||
+27
-19
@@ -92,78 +92,86 @@ class FirSyntheticPropertyAccessor(
|
||||
}
|
||||
|
||||
override fun replaceBody(newBody: FirBlock?) {
|
||||
throw AssertionError("Transformation of synthetic property accessor isn't supported")
|
||||
notSupported()
|
||||
}
|
||||
|
||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirPropertyAccessorImpl {
|
||||
throw AssertionError("Transformation of synthetic property accessor isn't supported")
|
||||
notSupported()
|
||||
}
|
||||
|
||||
override fun <D> transformReturnTypeRef(transformer: FirTransformer<D>, data: D): FirPropertyAccessorImpl {
|
||||
throw AssertionError("Transformation of synthetic property accessor isn't supported")
|
||||
notSupported()
|
||||
}
|
||||
|
||||
override fun <D> transformReceiverParameter(transformer: FirTransformer<D>, data: D): FirPropertyAccessorImpl {
|
||||
throw AssertionError("Transformation of synthetic property accessor isn't supported")
|
||||
notSupported()
|
||||
}
|
||||
|
||||
override fun <D> transformValueParameters(transformer: FirTransformer<D>, data: D): FirPropertyAccessorImpl {
|
||||
throw AssertionError("Transformation of synthetic property accessor isn't supported")
|
||||
notSupported()
|
||||
}
|
||||
|
||||
override fun <D> transformContractDescription(transformer: FirTransformer<D>, data: D): FirPropertyAccessorImpl {
|
||||
throw AssertionError("Transformation of synthetic property accessor isn't supported")
|
||||
notSupported()
|
||||
}
|
||||
|
||||
override fun <D> transformStatus(transformer: FirTransformer<D>, data: D): FirPropertyAccessorImpl {
|
||||
throw AssertionError("Transformation of synthetic property accessor isn't supported")
|
||||
notSupported()
|
||||
}
|
||||
|
||||
override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirPropertyAccessor {
|
||||
throw AssertionError("Transformation of synthetic property accessor isn't supported")
|
||||
notSupported()
|
||||
}
|
||||
|
||||
override fun <D> transformBody(transformer: FirTransformer<D>, data: D): FirPropertyAccessor {
|
||||
throw AssertionError("Transformation of synthetic property accessor isn't supported")
|
||||
notSupported()
|
||||
}
|
||||
|
||||
override fun <D> transformTypeParameters(transformer: FirTransformer<D>, data: D): FirPropertyAccessor {
|
||||
throw AssertionError("Transformation of synthetic property accessor isn't supported")
|
||||
notSupported()
|
||||
}
|
||||
|
||||
override fun replaceResolvePhase(newResolvePhase: FirResolvePhase) {
|
||||
throw AssertionError("Mutation of synthetic property accessor isn't supported")
|
||||
notSupported()
|
||||
}
|
||||
|
||||
override fun replaceReturnTypeRef(newReturnTypeRef: FirTypeRef) {
|
||||
throw AssertionError("Mutation of synthetic property accessor isn't supported")
|
||||
notSupported()
|
||||
}
|
||||
|
||||
override fun replaceReceiverParameter(newReceiverParameter: FirReceiverParameter?) {
|
||||
throw AssertionError("Mutation of synthetic property accessor isn't supported")
|
||||
notSupported()
|
||||
}
|
||||
|
||||
override fun replaceDeprecationsProvider(newDeprecationsProvider: DeprecationsProvider) {
|
||||
throw AssertionError("Mutation of synthetic property accessor isn't supported")
|
||||
notSupported()
|
||||
}
|
||||
|
||||
override fun replaceValueParameters(newValueParameters: List<FirValueParameter>) {
|
||||
throw AssertionError("Mutation of synthetic property accessor isn't supported")
|
||||
notSupported()
|
||||
}
|
||||
|
||||
override fun replaceContractDescription(newContractDescription: FirContractDescription) {
|
||||
throw AssertionError("Mutation of synthetic property accessor isn't supported")
|
||||
notSupported()
|
||||
}
|
||||
|
||||
override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?) {
|
||||
throw AssertionError("Mutation of synthetic property accessor isn't supported")
|
||||
notSupported()
|
||||
}
|
||||
|
||||
override fun replaceContextReceivers(newContextReceivers: List<FirContextReceiver>) {
|
||||
throw AssertionError("Mutation of synthetic property accessor isn't supported")
|
||||
notSupported()
|
||||
}
|
||||
|
||||
override fun replaceAnnotations(newAnnotations: List<FirAnnotation>) {
|
||||
throw AssertionError("Mutation of synthetic property accessor isn't supported")
|
||||
notSupported()
|
||||
}
|
||||
|
||||
override fun replaceStatus(newStatus: FirDeclarationStatus) {
|
||||
notSupported()
|
||||
}
|
||||
|
||||
private fun notSupported(): Nothing {
|
||||
error("Mutation of synthetic property accessor isn't supported")
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user