FIR: make FunctionType class-like, refactor built-ins resolution

This breaks total kotlin resolve test because of incorrect rendering
of ConeClassErrorType (we are trying to read its symbol)
This commit is contained in:
Simon Ogorodnik
2019-02-12 14:04:31 +03:00
committed by Mikhail Glukhikh
parent 3edd82b602
commit 9ebefa3ba6
50 changed files with 144 additions and 126 deletions
@@ -579,7 +579,7 @@ class FirRenderer(builder: StringBuilder) : FirVisitorVoid() {
}
override fun visitImplicitTypeRef(implicitTypeRef: FirImplicitTypeRef) {
print(if (implicitTypeRef is FirImplicitBuiltinTypeRef) "kotlin.${implicitTypeRef.name}" else "<implicit>")
print(if (implicitTypeRef is FirImplicitBuiltinTypeRef) "${implicitTypeRef.id}" else "<implicit>")
}
override fun visitTypeRefWithNullability(typeRefWithNullability: FirTypeRefWithNullability) {
@@ -27,4 +27,11 @@ interface FirFunctionTypeRef : FirTypeRefWithNullability {
parameter.accept(visitor, data)
}
}
}
}
val FirFunctionTypeRef.parametersCount: Int
get() = if (receiverTypeRef != null)
valueParameters.size + 1
else
valueParameters.size
@@ -10,18 +10,19 @@ import org.jetbrains.kotlin.builtins.KotlinBuiltIns
import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.fir.types.FirImplicitTypeRef
import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.name.FqNameUnsafe
import org.jetbrains.kotlin.name.Name
sealed class FirImplicitBuiltinTypeRef(
override val session: FirSession,
override val psi: PsiElement?,
val name: Name
val id: ClassId
) : FirImplicitTypeRef {
override val annotations: List<FirAnnotationCall>
get() = emptyList()
constructor(session: FirSession, psi: PsiElement?, name: FqNameUnsafe) : this(session, psi, name.shortName())
constructor(session: FirSession, psi: PsiElement?, name: FqNameUnsafe) : this(session, psi, ClassId.topLevel(name.toSafe()))
}
class FirImplicitUnitTypeRef(