FIR: Support type aliases to function types in resolution

This commit is contained in:
Denis Zharkov
2020-02-05 15:23:02 +03:00
parent 7249d2f889
commit 6f6281a3f3
15 changed files with 172 additions and 104 deletions
@@ -769,7 +769,9 @@ class FirRenderer(builder: StringBuilder) : FirVisitorVoid() {
annotations.renderAnnotations()
print("R|")
val coneType = resolvedTypeRef.type
print(coneType.renderFunctionType(kind, resolvedTypeRef.isExtensionFunctionType()))
print(coneType.renderFunctionType(kind, resolvedTypeRef.annotations.any {
it.isExtensionFunctionAnnotationCall
}))
print("|")
}
@@ -5,6 +5,7 @@
package org.jetbrains.kotlin.fir.types
import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.fir.expressions.FirConstKind
import org.jetbrains.kotlin.fir.symbols.StandardClassIds
@@ -38,12 +39,6 @@ val FirFunctionTypeRef.parametersCount: Int
const val EXTENSION_FUNCTION_ANNOTATION = "kotlin/ExtensionFunctionType"
fun FirTypeRef.isExtensionFunctionType(): Boolean {
return annotations.any {
it.isExtensionFunctionAnnotationCall
}
}
val FirAnnotationCall.isExtensionFunctionAnnotationCall: Boolean
get() = (this as? FirAnnotationCall)?.let {
(it.annotationTypeRef as? FirResolvedTypeRef)?.let {
@@ -64,4 +59,4 @@ fun ConeClassLikeType.toConstKind(): FirConstKind<*>? = when (lookupTag.classId)
StandardClassIds.Int -> FirConstKind.Int
StandardClassIds.Long -> FirConstKind.Long
else -> null
}
}