FIR: resolve constructor delegated calls (types are all error yet)
This commit is contained in:
+12
-2
@@ -7,15 +7,25 @@ package org.jetbrains.kotlin.fir.declarations.impl
|
||||
|
||||
import com.intellij.psi.PsiElement
|
||||
import org.jetbrains.kotlin.descriptors.Visibility
|
||||
import org.jetbrains.kotlin.fir.FirElement
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.declarations.FirConstructor
|
||||
import org.jetbrains.kotlin.fir.expressions.FirBody
|
||||
import org.jetbrains.kotlin.fir.expressions.FirDelegatedConstructorCall
|
||||
import org.jetbrains.kotlin.fir.transformSingle
|
||||
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||
|
||||
open class FirConstructorImpl(
|
||||
session: FirSession,
|
||||
psi: PsiElement?,
|
||||
final override val visibility: Visibility,
|
||||
final override val delegatedConstructor: FirDelegatedConstructorCall?,
|
||||
final override var delegatedConstructor: FirDelegatedConstructorCall?,
|
||||
body: FirBody?
|
||||
) : FirAbstractFunction(session, psi, body), FirConstructor
|
||||
) : FirAbstractFunction(session, psi, body), FirConstructor {
|
||||
|
||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
||||
delegatedConstructor = delegatedConstructor?.transformSingle(transformer, data)
|
||||
|
||||
return super<FirAbstractFunction>.transformChildren(transformer, data)
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -9,7 +9,7 @@ import org.jetbrains.kotlin.fir.types.FirType
|
||||
import org.jetbrains.kotlin.fir.types.FirTypeProjectionContainer
|
||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||
|
||||
interface FirDelegatedConstructorCall : FirCall, FirTypeProjectionContainer {
|
||||
interface FirDelegatedConstructorCall : FirCall {
|
||||
// Do we need 'constructedType: FirType' here?
|
||||
val constructedType: FirType
|
||||
|
||||
|
||||
+9
-3
@@ -6,16 +6,22 @@
|
||||
package org.jetbrains.kotlin.fir.expressions.impl
|
||||
|
||||
import com.intellij.psi.PsiElement
|
||||
import org.jetbrains.kotlin.fir.FirElement
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.expressions.FirDelegatedConstructorCall
|
||||
import org.jetbrains.kotlin.fir.transformSingle
|
||||
import org.jetbrains.kotlin.fir.types.FirType
|
||||
import org.jetbrains.kotlin.fir.types.FirTypeProjection
|
||||
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||
|
||||
class FirDelegatedConstructorCallImpl(
|
||||
session: FirSession,
|
||||
psi: PsiElement?,
|
||||
override val constructedType: FirType,
|
||||
override var constructedType: FirType,
|
||||
override val isThis: Boolean
|
||||
) : FirAbstractCall(session, psi), FirDelegatedConstructorCall {
|
||||
override val typeArguments = mutableListOf<FirTypeProjection>()
|
||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
||||
constructedType = constructedType.transformSingle(transformer, data)
|
||||
|
||||
return this
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user