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 transformer.transformThisReference(this, data) as E
abstract fun replaceBoundSymbol(newBoundSymbol: FirBasedSymbol<*>?) abstract fun replaceBoundSymbol(newBoundSymbol: FirBasedSymbol<*>?)
abstract fun replaceContextReceiverNumber(newContextReceiverNumber: Int)
} }
@@ -18,7 +18,7 @@ import org.jetbrains.kotlin.fir.visitors.*
internal class FirExplicitThisReference( internal class FirExplicitThisReference(
override val source: KtSourceElement?, override val source: KtSourceElement?,
override val labelName: String?, override val labelName: String?,
override val contextReceiverNumber: Int, override var contextReceiverNumber: Int,
) : FirThisReference() { ) : FirThisReference() {
override var boundSymbol: FirBasedSymbol<*>? = null override var boundSymbol: FirBasedSymbol<*>? = null
@@ -31,4 +31,8 @@ internal class FirExplicitThisReference(
override fun replaceBoundSymbol(newBoundSymbol: FirBasedSymbol<*>?) { override fun replaceBoundSymbol(newBoundSymbol: FirBasedSymbol<*>?) {
boundSymbol = newBoundSymbol boundSymbol = newBoundSymbol
} }
override fun replaceContextReceiverNumber(newContextReceiverNumber: Int) {
contextReceiverNumber = newContextReceiverNumber
}
} }
@@ -17,7 +17,7 @@ import org.jetbrains.kotlin.fir.visitors.*
internal class FirImplicitThisReference( internal class FirImplicitThisReference(
override val boundSymbol: FirBasedSymbol<*>?, override val boundSymbol: FirBasedSymbol<*>?,
override val contextReceiverNumber: Int, override var contextReceiverNumber: Int,
) : FirThisReference() { ) : FirThisReference() {
override val source: KtSourceElement? get() = null override val source: KtSourceElement? get() = null
override val labelName: String? get() = null override val labelName: String? get() = null
@@ -29,4 +29,8 @@ internal class FirImplicitThisReference(
} }
override fun replaceBoundSymbol(newBoundSymbol: FirBasedSymbol<*>?) {} override fun replaceBoundSymbol(newBoundSymbol: FirBasedSymbol<*>?) {}
override fun replaceContextReceiverNumber(newContextReceiverNumber: Int) {
contextReceiverNumber = newContextReceiverNumber
}
} }
@@ -623,7 +623,7 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
thisReference.configure { thisReference.configure {
+stringField("labelName", nullable = true) +stringField("labelName", nullable = true)
+field("boundSymbol", firBasedSymbolType, "*", nullable = true, withReplace = true) +field("boundSymbol", firBasedSymbolType, "*", nullable = true, withReplace = true)
+intField("contextReceiverNumber") +intField("contextReceiverNumber", withReplace = true)
} }
typeRef.configure { typeRef.configure {
@@ -38,8 +38,8 @@ fun stringField(name: String, nullable: Boolean = false): Field {
return field(name, AbstractFirTreeBuilder.string, null, null, nullable) return field(name, AbstractFirTreeBuilder.string, null, null, nullable)
} }
fun intField(name: String): Field { fun intField(name: String, withReplace: Boolean = false): Field {
return field(name, AbstractFirTreeBuilder.int, null) return field(name, AbstractFirTreeBuilder.int, null, withReplace = withReplace)
} }
// ----------- Fir field ----------- // ----------- Fir field -----------