FIR: support type alias resolve

This commit is contained in:
Mikhail Glukhikh
2018-03-20 18:10:56 +03:00
parent d5463193fd
commit f82ad6ac20
13 changed files with 130 additions and 19 deletions
@@ -393,6 +393,9 @@ class FirRenderer(builder: StringBuilder) : FirVisitorVoid() {
is ConeKotlinType -> it.asString()
}
})
if (this is ConeAbbreviatedType) {
sb.append(" = ${this.directExpansion.asString()}")
}
sb.toString()
}
else -> "Unsupported: $this"
@@ -8,9 +8,12 @@ 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.FirTypeAlias
import org.jetbrains.kotlin.fir.transformSingle
import org.jetbrains.kotlin.fir.types.FirType
import org.jetbrains.kotlin.fir.visitors.FirTransformer
import org.jetbrains.kotlin.name.Name
class FirTypeAliasImpl(
@@ -18,5 +21,11 @@ class FirTypeAliasImpl(
psi: PsiElement?,
name: Name,
visibility: Visibility,
override val abbreviatedType: FirType
) : FirAbstractMemberDeclaration(session, psi, name, visibility, Modality.FINAL), FirTypeAlias
override var abbreviatedType: FirType
) : FirAbstractMemberDeclaration(session, psi, name, visibility, Modality.FINAL), FirTypeAlias {
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
abbreviatedType = abbreviatedType.transformSingle(transformer, data)
return this
}
}
@@ -13,4 +13,6 @@ interface FirResolvedType : FirTypeWithNullability {
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
visitor.visitResolvedType(this, data)
}
}
inline fun <reified T> FirType.coneTypeUnsafe() = (this as FirResolvedType).type as T