From fbb19e3b50dbadd17a088ca459e3d6ab6a1d4dc7 Mon Sep 17 00:00:00 2001 From: Jinseong Jeon Date: Mon, 8 Feb 2021 23:23:47 -0800 Subject: [PATCH] FIR: ensure type ref transformed by type resolve transformer is resolved --- .../FirSpecificTypeResolverTransformer.kt | 11 +++++++---- .../resolve/transformers/FirTypeResolveTransformer.kt | 2 +- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirSpecificTypeResolverTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirSpecificTypeResolverTransformer.kt index dde33c42004..7443b9003aa 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirSpecificTypeResolverTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirSpecificTypeResolverTransformer.kt @@ -38,12 +38,15 @@ class FirSpecificTypeResolverTransformer( } } - override fun transformTypeRef(typeRef: FirTypeRef, data: FirScope): CompositeTransformResult { + override fun transformTypeRef(typeRef: FirTypeRef, data: FirScope): CompositeTransformResult { typeRef.transformChildren(this, data) return transformType(typeRef, typeResolver.resolveType(typeRef, data, areBareTypesAllowed)) } - override fun transformFunctionTypeRef(functionTypeRef: FirFunctionTypeRef, data: FirScope): CompositeTransformResult { + override fun transformFunctionTypeRef( + functionTypeRef: FirFunctionTypeRef, + data: FirScope + ): CompositeTransformResult { 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 { + private fun transformType(typeRef: FirTypeRef, resolvedType: ConeKotlinType): CompositeTransformResult { return if (resolvedType !is ConeClassErrorType) { buildResolvedTypeRef { source = typeRef.source - type = resolvedType.takeIfAcceptable() ?: return typeRef.compose() + type = resolvedType annotations += typeRef.annotations delegatedTypeRef = typeRef } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirTypeResolveTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirTypeResolveTransformer.kt index 64bbe27c43f..78ce3337228 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirTypeResolveTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirTypeResolveTransformer.kt @@ -168,7 +168,7 @@ class FirTypeResolveTransformer( return implicitTypeRef.compose() } - override fun transformTypeRef(typeRef: FirTypeRef, data: Nothing?): CompositeTransformResult { + override fun transformTypeRef(typeRef: FirTypeRef, data: Nothing?): CompositeTransformResult { return typeRef.transform(typeResolverTransformer, towerScope) }