FIR: resolve constructor delegated calls (types are all error yet)

This commit is contained in:
Mikhail Glukhikh
2018-04-03 21:59:08 +03:00
parent ea86c3d2b3
commit 78d45f3f90
3 changed files with 22 additions and 6 deletions
@@ -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)
}
}
@@ -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
@@ -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
}
}