FIR: Add replace method for contextReceiverNumber

This commit is contained in:
Denis.Zharkov
2022-03-24 14:53:48 +03:00
committed by teamcity
parent 445705369e
commit ac399321f0
5 changed files with 15 additions and 5 deletions
@@ -28,4 +28,6 @@ abstract class FirThisReference : FirReference() {
transformer.transformThisReference(this, data) as E
abstract fun replaceBoundSymbol(newBoundSymbol: FirBasedSymbol<*>?)
abstract fun replaceContextReceiverNumber(newContextReceiverNumber: Int)
}
@@ -18,7 +18,7 @@ import org.jetbrains.kotlin.fir.visitors.*
internal class FirExplicitThisReference(
override val source: KtSourceElement?,
override val labelName: String?,
override val contextReceiverNumber: Int,
override var contextReceiverNumber: Int,
) : FirThisReference() {
override var boundSymbol: FirBasedSymbol<*>? = null
@@ -31,4 +31,8 @@ internal class FirExplicitThisReference(
override fun replaceBoundSymbol(newBoundSymbol: FirBasedSymbol<*>?) {
boundSymbol = newBoundSymbol
}
override fun replaceContextReceiverNumber(newContextReceiverNumber: Int) {
contextReceiverNumber = newContextReceiverNumber
}
}
@@ -17,7 +17,7 @@ import org.jetbrains.kotlin.fir.visitors.*
internal class FirImplicitThisReference(
override val boundSymbol: FirBasedSymbol<*>?,
override val contextReceiverNumber: Int,
override var contextReceiverNumber: Int,
) : FirThisReference() {
override val source: KtSourceElement? get() = null
override val labelName: String? get() = null
@@ -29,4 +29,8 @@ internal class FirImplicitThisReference(
}
override fun replaceBoundSymbol(newBoundSymbol: FirBasedSymbol<*>?) {}
override fun replaceContextReceiverNumber(newContextReceiverNumber: Int) {
contextReceiverNumber = newContextReceiverNumber
}
}
@@ -623,7 +623,7 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
thisReference.configure {
+stringField("labelName", nullable = true)
+field("boundSymbol", firBasedSymbolType, "*", nullable = true, withReplace = true)
+intField("contextReceiverNumber")
+intField("contextReceiverNumber", withReplace = true)
}
typeRef.configure {
@@ -38,8 +38,8 @@ fun stringField(name: String, nullable: Boolean = false): Field {
return field(name, AbstractFirTreeBuilder.string, null, null, nullable)
}
fun intField(name: String): Field {
return field(name, AbstractFirTreeBuilder.int, null)
fun intField(name: String, withReplace: Boolean = false): Field {
return field(name, AbstractFirTreeBuilder.int, null, withReplace = withReplace)
}
// ----------- Fir field -----------