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