[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
|
moduleData = baseModuleData
|
||||||
origin = FirDeclarationOrigin.Source
|
origin = FirDeclarationOrigin.Source
|
||||||
body = firBlock ?: buildEmptyExpressionBlock()
|
body = firBlock ?: buildEmptyExpressionBlock()
|
||||||
|
dispatchReceiverType = context.dispatchReceiverTypesStack.lastOrNull()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1815,6 +1815,7 @@ open class RawFirBuilder(
|
|||||||
moduleData = baseModuleData
|
moduleData = baseModuleData
|
||||||
origin = FirDeclarationOrigin.Source
|
origin = FirDeclarationOrigin.Source
|
||||||
body = buildOrLazyBlock { initializer.body.toFirBlock() }
|
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.expressions.FirBlock
|
||||||
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
|
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirAnonymousInitializerSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirAnonymousInitializerSymbol
|
||||||
|
import org.jetbrains.kotlin.fir.types.ConeSimpleKotlinType
|
||||||
import org.jetbrains.kotlin.fir.visitors.*
|
import org.jetbrains.kotlin.fir.visitors.*
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -29,6 +30,7 @@ abstract class FirAnonymousInitializer : FirDeclaration(), FirControlFlowGraphOw
|
|||||||
abstract override val controlFlowGraphReference: FirControlFlowGraphReference?
|
abstract override val controlFlowGraphReference: FirControlFlowGraphReference?
|
||||||
abstract val body: FirBlock?
|
abstract val body: FirBlock?
|
||||||
abstract override val symbol: FirAnonymousInitializerSymbol
|
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)
|
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.expressions.FirBlock
|
||||||
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
|
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirAnonymousInitializerSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirAnonymousInitializerSymbol
|
||||||
|
import org.jetbrains.kotlin.fir.types.ConeSimpleKotlinType
|
||||||
import org.jetbrains.kotlin.fir.visitors.*
|
import org.jetbrains.kotlin.fir.visitors.*
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -38,6 +39,7 @@ class FirAnonymousInitializerBuilder : FirDeclarationBuilder, FirAnnotationConta
|
|||||||
override var attributes: FirDeclarationAttributes = FirDeclarationAttributes()
|
override var attributes: FirDeclarationAttributes = FirDeclarationAttributes()
|
||||||
var body: FirBlock? = null
|
var body: FirBlock? = null
|
||||||
var symbol: FirAnonymousInitializerSymbol = FirAnonymousInitializerSymbol()
|
var symbol: FirAnonymousInitializerSymbol = FirAnonymousInitializerSymbol()
|
||||||
|
var dispatchReceiverType: ConeSimpleKotlinType? = null
|
||||||
|
|
||||||
override fun build(): FirAnonymousInitializer {
|
override fun build(): FirAnonymousInitializer {
|
||||||
return FirAnonymousInitializerImpl(
|
return FirAnonymousInitializerImpl(
|
||||||
@@ -48,6 +50,7 @@ class FirAnonymousInitializerBuilder : FirDeclarationBuilder, FirAnnotationConta
|
|||||||
attributes,
|
attributes,
|
||||||
body,
|
body,
|
||||||
symbol,
|
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.expressions.FirBlock
|
||||||
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
|
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirAnonymousInitializerSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirAnonymousInitializerSymbol
|
||||||
|
import org.jetbrains.kotlin.fir.types.ConeSimpleKotlinType
|
||||||
import org.jetbrains.kotlin.fir.visitors.*
|
import org.jetbrains.kotlin.fir.visitors.*
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -33,6 +34,7 @@ internal class FirAnonymousInitializerImpl(
|
|||||||
override val attributes: FirDeclarationAttributes,
|
override val attributes: FirDeclarationAttributes,
|
||||||
override var body: FirBlock?,
|
override var body: FirBlock?,
|
||||||
override val symbol: FirAnonymousInitializerSymbol,
|
override val symbol: FirAnonymousInitializerSymbol,
|
||||||
|
override val dispatchReceiverType: ConeSimpleKotlinType?,
|
||||||
) : FirAnonymousInitializer() {
|
) : FirAnonymousInitializer() {
|
||||||
override val annotations: List<FirAnnotation> get() = emptyList()
|
override val annotations: List<FirAnnotation> get() = emptyList()
|
||||||
override var controlFlowGraphReference: FirControlFlowGraphReference? = null
|
override var controlFlowGraphReference: FirControlFlowGraphReference? = null
|
||||||
|
|||||||
+1
-1
@@ -428,7 +428,6 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
|
|||||||
needTransformOtherChildren()
|
needTransformOtherChildren()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
functionTypeParameter.configure {
|
functionTypeParameter.configure {
|
||||||
+field("name", nameType, nullable = true)
|
+field("name", nameType, nullable = true)
|
||||||
+field("returnTypeRef", typeRef)
|
+field("returnTypeRef", typeRef)
|
||||||
@@ -449,6 +448,7 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
|
|||||||
anonymousInitializer.configure {
|
anonymousInitializer.configure {
|
||||||
+body(nullable = true, withReplace = true)
|
+body(nullable = true, withReplace = true)
|
||||||
+symbol("FirAnonymousInitializerSymbol")
|
+symbol("FirAnonymousInitializerSymbol")
|
||||||
|
+field("dispatchReceiverType", coneSimpleKotlinTypeType, nullable = true)
|
||||||
}
|
}
|
||||||
|
|
||||||
file.configure {
|
file.configure {
|
||||||
|
|||||||
Reference in New Issue
Block a user