FIR: resolve bounds of function type arguments

This commit is contained in:
Mikhail Glukhikh
2018-04-03 21:35:27 +03:00
parent 6c3fe5dc98
commit ea86c3d2b3
9 changed files with 65 additions and 6 deletions
@@ -31,10 +31,9 @@ abstract class FirAbstractCallableMember(
) : FirAbstractMemberDeclaration(session, psi, name, visibility, modality, platformStatus), FirCallableMember {
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
annotations.transformInplace(transformer, data)
receiverType = receiverType?.transformSingle(transformer, data)
returnType = returnType.transformSingle(transformer, data)
return this
return super<FirAbstractMemberDeclaration>.transformChildren(transformer, data)
}
}
@@ -8,10 +8,14 @@ package org.jetbrains.kotlin.fir.declarations.impl
import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.descriptors.Modality
import org.jetbrains.kotlin.descriptors.Visibility
import org.jetbrains.kotlin.fir.FirElement
import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration
import org.jetbrains.kotlin.fir.declarations.FirMemberPlatformStatus
import org.jetbrains.kotlin.fir.declarations.FirTypeParameter
import org.jetbrains.kotlin.fir.transformInplace
import org.jetbrains.kotlin.fir.transformSingle
import org.jetbrains.kotlin.fir.visitors.FirTransformer
import org.jetbrains.kotlin.name.Name
abstract class FirAbstractMemberDeclaration(
@@ -23,4 +27,11 @@ abstract class FirAbstractMemberDeclaration(
override val platformStatus: FirMemberPlatformStatus
) : FirAbstractNamedAnnotatedDeclaration(session, psi, name), FirMemberDeclaration {
final override val typeParameters = mutableListOf<FirTypeParameter>()
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
annotations.transformInplace(transformer, data)
typeParameters.transformInplace(transformer, data)
return this
}
}
@@ -47,11 +47,9 @@ open class FirClassImpl(
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirClass {
annotations.transformInplace(transformer, data)
typeParameters.transformInplace(transformer, data)
superTypes.transformInplace(transformer, data)
declarations.transformInplace(transformer, data)
return this
return super<FirAbstractMemberDeclaration>.transformChildren(transformer, data) as FirClass
}
}