[FIR] Add dispatchReceiverType to FirAnonymousInitializer
This is needed to add ability to quickly find class to which initializer belongs
This commit is contained in:
committed by
Space Team
parent
edd7468d5b
commit
9ccbf8639d
+1
@@ -959,6 +959,7 @@ class DeclarationsConverter(
|
||||
moduleData = baseModuleData
|
||||
origin = FirDeclarationOrigin.Source
|
||||
body = firBlock ?: buildEmptyExpressionBlock()
|
||||
dispatchReceiverType = context.dispatchReceiverTypesStack.lastOrNull()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1815,6 +1815,7 @@ open class RawFirBuilder(
|
||||
moduleData = baseModuleData
|
||||
origin = FirDeclarationOrigin.Source
|
||||
body = buildOrLazyBlock { initializer.body.toFirBlock() }
|
||||
dispatchReceiverType = context.dispatchReceiverTypesStack.lastOrNull()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -12,6 +12,7 @@ import org.jetbrains.kotlin.fir.expressions.FirAnnotation
|
||||
import org.jetbrains.kotlin.fir.expressions.FirBlock
|
||||
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirAnonymousInitializerSymbol
|
||||
import org.jetbrains.kotlin.fir.types.ConeSimpleKotlinType
|
||||
import org.jetbrains.kotlin.fir.visitors.*
|
||||
|
||||
/*
|
||||
@@ -29,6 +30,7 @@ abstract class FirAnonymousInitializer : FirDeclaration(), FirControlFlowGraphOw
|
||||
abstract override val controlFlowGraphReference: FirControlFlowGraphReference?
|
||||
abstract val body: FirBlock?
|
||||
abstract override val symbol: FirAnonymousInitializerSymbol
|
||||
abstract val dispatchReceiverType: ConeSimpleKotlinType?
|
||||
|
||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitAnonymousInitializer(this, data)
|
||||
|
||||
|
||||
+3
@@ -22,6 +22,7 @@ import org.jetbrains.kotlin.fir.expressions.FirAnnotation
|
||||
import org.jetbrains.kotlin.fir.expressions.FirBlock
|
||||
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirAnonymousInitializerSymbol
|
||||
import org.jetbrains.kotlin.fir.types.ConeSimpleKotlinType
|
||||
import org.jetbrains.kotlin.fir.visitors.*
|
||||
|
||||
/*
|
||||
@@ -38,6 +39,7 @@ class FirAnonymousInitializerBuilder : FirDeclarationBuilder, FirAnnotationConta
|
||||
override var attributes: FirDeclarationAttributes = FirDeclarationAttributes()
|
||||
var body: FirBlock? = null
|
||||
var symbol: FirAnonymousInitializerSymbol = FirAnonymousInitializerSymbol()
|
||||
var dispatchReceiverType: ConeSimpleKotlinType? = null
|
||||
|
||||
override fun build(): FirAnonymousInitializer {
|
||||
return FirAnonymousInitializerImpl(
|
||||
@@ -48,6 +50,7 @@ class FirAnonymousInitializerBuilder : FirDeclarationBuilder, FirAnnotationConta
|
||||
attributes,
|
||||
body,
|
||||
symbol,
|
||||
dispatchReceiverType,
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
+2
@@ -17,6 +17,7 @@ import org.jetbrains.kotlin.fir.expressions.FirAnnotation
|
||||
import org.jetbrains.kotlin.fir.expressions.FirBlock
|
||||
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirAnonymousInitializerSymbol
|
||||
import org.jetbrains.kotlin.fir.types.ConeSimpleKotlinType
|
||||
import org.jetbrains.kotlin.fir.visitors.*
|
||||
|
||||
/*
|
||||
@@ -33,6 +34,7 @@ internal class FirAnonymousInitializerImpl(
|
||||
override val attributes: FirDeclarationAttributes,
|
||||
override var body: FirBlock?,
|
||||
override val symbol: FirAnonymousInitializerSymbol,
|
||||
override val dispatchReceiverType: ConeSimpleKotlinType?,
|
||||
) : FirAnonymousInitializer() {
|
||||
override val annotations: List<FirAnnotation> get() = emptyList()
|
||||
override var controlFlowGraphReference: FirControlFlowGraphReference? = null
|
||||
|
||||
+1
-1
@@ -428,7 +428,6 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
|
||||
needTransformOtherChildren()
|
||||
}
|
||||
|
||||
|
||||
functionTypeParameter.configure {
|
||||
+field("name", nameType, nullable = true)
|
||||
+field("returnTypeRef", typeRef)
|
||||
@@ -449,6 +448,7 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
|
||||
anonymousInitializer.configure {
|
||||
+body(nullable = true, withReplace = true)
|
||||
+symbol("FirAnonymousInitializerSymbol")
|
||||
+field("dispatchReceiverType", coneSimpleKotlinTypeType, nullable = true)
|
||||
}
|
||||
|
||||
file.configure {
|
||||
|
||||
Reference in New Issue
Block a user