FIR structure: include calleeReference into FirDelegatedConstructorCall
This commit is contained in:
+4
-2
@@ -5,10 +5,11 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.fir.expressions
|
package org.jetbrains.kotlin.fir.expressions
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.fir.VisitedSupertype
|
||||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||||
|
|
||||||
interface FirDelegatedConstructorCall : FirCall {
|
interface FirDelegatedConstructorCall : @VisitedSupertype FirCall, FirQualifiedAccess {
|
||||||
// Do we need 'constructedType: FirType' here?
|
// Do we need 'constructedType: FirType' here?
|
||||||
val constructedTypeRef: FirTypeRef
|
val constructedTypeRef: FirTypeRef
|
||||||
|
|
||||||
@@ -22,6 +23,7 @@ interface FirDelegatedConstructorCall : FirCall {
|
|||||||
|
|
||||||
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
||||||
constructedTypeRef.accept(visitor, data)
|
constructedTypeRef.accept(visitor, data)
|
||||||
super.acceptChildren(visitor, data)
|
calleeReference.accept(visitor, data)
|
||||||
|
super<FirCall>.acceptChildren(visitor, data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+13
@@ -7,8 +7,12 @@ package org.jetbrains.kotlin.fir.expressions.impl
|
|||||||
|
|
||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
import org.jetbrains.kotlin.fir.FirElement
|
import org.jetbrains.kotlin.fir.FirElement
|
||||||
|
import org.jetbrains.kotlin.fir.FirReference
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirDelegatedConstructorCall
|
import org.jetbrains.kotlin.fir.expressions.FirDelegatedConstructorCall
|
||||||
|
import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccess
|
||||||
|
import org.jetbrains.kotlin.fir.references.FirExplicitSuperReference
|
||||||
|
import org.jetbrains.kotlin.fir.references.FirExplicitThisReference
|
||||||
import org.jetbrains.kotlin.fir.transformSingle
|
import org.jetbrains.kotlin.fir.transformSingle
|
||||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||||
@@ -19,8 +23,17 @@ class FirDelegatedConstructorCallImpl(
|
|||||||
override var constructedTypeRef: FirTypeRef,
|
override var constructedTypeRef: FirTypeRef,
|
||||||
override val isThis: Boolean
|
override val isThis: Boolean
|
||||||
) : FirAbstractCall(session, psi), FirDelegatedConstructorCall {
|
) : FirAbstractCall(session, psi), FirDelegatedConstructorCall {
|
||||||
|
override var calleeReference: FirReference =
|
||||||
|
if (isThis) FirExplicitThisReference(session, psi, null) else FirExplicitSuperReference(session, psi, constructedTypeRef)
|
||||||
|
|
||||||
|
override fun <D> transformCalleeReference(transformer: FirTransformer<D>, data: D): FirQualifiedAccess {
|
||||||
|
calleeReference = calleeReference.transformSingle(transformer, data)
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
||||||
constructedTypeRef = constructedTypeRef.transformSingle(transformer, data)
|
constructedTypeRef = constructedTypeRef.transformSingle(transformer, data)
|
||||||
|
calleeReference = calleeReference.transformSingle(transformer, data)
|
||||||
|
|
||||||
return super<FirAbstractCall>.transformChildren(transformer, data)
|
return super<FirAbstractCall>.transformChildren(transformer, data)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user