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:
committed by
Mikhail Glukhikh
parent
3edd82b602
commit
9ebefa3ba6
@@ -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
|
||||
+3
-2
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user