FIR: ensure type ref transformed by type resolve transformer is resolved
This commit is contained in:
committed by
Mikhail Glukhikh
parent
52ea7fdb72
commit
fbb19e3b50
+7
-4
@@ -38,12 +38,15 @@ class FirSpecificTypeResolverTransformer(
|
||||
}
|
||||
}
|
||||
|
||||
override fun transformTypeRef(typeRef: FirTypeRef, data: FirScope): CompositeTransformResult<FirTypeRef> {
|
||||
override fun transformTypeRef(typeRef: FirTypeRef, data: FirScope): CompositeTransformResult<FirResolvedTypeRef> {
|
||||
typeRef.transformChildren(this, data)
|
||||
return transformType(typeRef, typeResolver.resolveType(typeRef, data, areBareTypesAllowed))
|
||||
}
|
||||
|
||||
override fun transformFunctionTypeRef(functionTypeRef: FirFunctionTypeRef, data: FirScope): CompositeTransformResult<FirTypeRef> {
|
||||
override fun transformFunctionTypeRef(
|
||||
functionTypeRef: FirFunctionTypeRef,
|
||||
data: FirScope
|
||||
): CompositeTransformResult<FirResolvedTypeRef> {
|
||||
functionTypeRef.transformChildren(this, data)
|
||||
val resolvedType = typeResolver.resolveType(functionTypeRef, data, areBareTypesAllowed).takeIfAcceptable()
|
||||
return if (resolvedType != null && resolvedType !is ConeClassErrorType) {
|
||||
@@ -62,11 +65,11 @@ class FirSpecificTypeResolverTransformer(
|
||||
}.compose()
|
||||
}
|
||||
|
||||
private fun transformType(typeRef: FirTypeRef, resolvedType: ConeKotlinType): CompositeTransformResult<FirTypeRef> {
|
||||
private fun transformType(typeRef: FirTypeRef, resolvedType: ConeKotlinType): CompositeTransformResult<FirResolvedTypeRef> {
|
||||
return if (resolvedType !is ConeClassErrorType) {
|
||||
buildResolvedTypeRef {
|
||||
source = typeRef.source
|
||||
type = resolvedType.takeIfAcceptable() ?: return typeRef.compose()
|
||||
type = resolvedType
|
||||
annotations += typeRef.annotations
|
||||
delegatedTypeRef = typeRef
|
||||
}
|
||||
|
||||
+1
-1
@@ -168,7 +168,7 @@ class FirTypeResolveTransformer(
|
||||
return implicitTypeRef.compose()
|
||||
}
|
||||
|
||||
override fun transformTypeRef(typeRef: FirTypeRef, data: Nothing?): CompositeTransformResult<FirTypeRef> {
|
||||
override fun transformTypeRef(typeRef: FirTypeRef, data: Nothing?): CompositeTransformResult<FirResolvedTypeRef> {
|
||||
return typeRef.transform(typeResolverTransformer, towerScope)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user