FIR: partial function type resolve + some rendering fixes
This commit is contained in:
+5
@@ -25,6 +25,7 @@ import org.jetbrains.kotlin.name.FqName
|
||||
|
||||
open class FirTypeResolveTransformer : FirTransformer<Nothing?>() {
|
||||
override fun <E : FirElement> transformElement(element: E, data: Nothing?): CompositeTransformResult<E> {
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
return (element.transformChildren(this, data) as E).compose()
|
||||
}
|
||||
|
||||
@@ -112,6 +113,10 @@ open class FirTypeResolveTransformer : FirTransformer<Nothing?>() {
|
||||
return transformType(type, typeResolver.resolveType(type, scope, position = FirPosition.OTHER))
|
||||
}
|
||||
|
||||
override fun transformFunctionType(functionType: FirFunctionType, data: Nothing?): CompositeTransformResult<FirType> {
|
||||
return (functionType.transformChildren(this, data) as FirType).compose()
|
||||
}
|
||||
|
||||
private fun transformType(type: FirType, resolvedType: ConeKotlinType): CompositeTransformResult<FirType> {
|
||||
return FirResolvedTypeImpl(
|
||||
type.session,
|
||||
|
||||
@@ -14,6 +14,7 @@ import org.jetbrains.kotlin.fir.symbols.ConeSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirTypeParameterSymbol
|
||||
import org.jetbrains.kotlin.fir.types.*
|
||||
import org.jetbrains.kotlin.fir.visitors.FirVisitorVoid
|
||||
import org.jetbrains.kotlin.name.SpecialNames
|
||||
import org.jetbrains.kotlin.types.Variance
|
||||
import org.jetbrains.kotlin.utils.Printer
|
||||
|
||||
@@ -92,6 +93,7 @@ class FirRenderer(builder: StringBuilder) : FirVisitorVoid() {
|
||||
visitMemberDeclaration(callableMember)
|
||||
val receiverType = callableMember.receiverType
|
||||
if (receiverType != null) {
|
||||
print(" ")
|
||||
receiverType.accept(this)
|
||||
print(".")
|
||||
}
|
||||
@@ -324,7 +326,9 @@ class FirRenderer(builder: StringBuilder) : FirVisitorVoid() {
|
||||
if (valueParameter.isVararg) {
|
||||
print("vararg ")
|
||||
}
|
||||
print(valueParameter.name.toString() + ": ")
|
||||
if (valueParameter.name != SpecialNames.NO_NAME_PROVIDED) {
|
||||
print(valueParameter.name.toString() + ": ")
|
||||
}
|
||||
valueParameter.returnType.accept(this)
|
||||
valueParameter.defaultValue?.let {
|
||||
print(" = ")
|
||||
@@ -399,7 +403,7 @@ class FirRenderer(builder: StringBuilder) : FirVisitorVoid() {
|
||||
print(".")
|
||||
}
|
||||
functionType.valueParameters.renderParameters()
|
||||
print(": ")
|
||||
print(" -> ")
|
||||
functionType.returnType.accept(this)
|
||||
print(" )")
|
||||
visitTypeWithNullability(functionType)
|
||||
|
||||
Reference in New Issue
Block a user