diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirCatchParameterChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirCatchParameterChecker.kt index 79970e5eda7..1b1c1d5b400 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirCatchParameterChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirCatchParameterChecker.kt @@ -13,7 +13,7 @@ import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors import org.jetbrains.kotlin.fir.analysis.diagnostics.reportOn import org.jetbrains.kotlin.fir.expressions.FirTryExpression import org.jetbrains.kotlin.fir.types.ConeTypeParameterType -import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef +import org.jetbrains.kotlin.fir.types.coneType object FirCatchParameterChecker : FirTryExpressionChecker() { override fun check(expression: FirTryExpression, context: CheckerContext, reporter: DiagnosticReporter) { @@ -24,11 +24,7 @@ object FirCatchParameterChecker : FirTryExpressionChecker() { reporter.reportOn(catchParameter.source, FirErrors.CATCH_PARAMETER_WITH_DEFAULT_VALUE, context) } - val typeRef = catchParameter.returnTypeRef - // TODO: remaining implicit types should be resolved as an error type, along with proper error kind, most likely syntax error. - if (typeRef !is FirResolvedTypeRef) return - - val coneType = typeRef.type + val coneType = catchParameter.returnTypeRef.coneType if (coneType is ConeTypeParameterType) { val isReified = coneType.lookupTag.typeParameterSymbol.fir.isReified diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirBodyResolveTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirBodyResolveTransformer.kt index 976f182f23c..6f1d89db757 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirBodyResolveTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirBodyResolveTransformer.kt @@ -74,7 +74,7 @@ open class FirBodyResolveTransformer( return (element.transformChildren(this, data) as E).compose() } - override fun transformTypeRef(typeRef: FirTypeRef, data: ResolutionMode): CompositeTransformResult { + override fun transformTypeRef(typeRef: FirTypeRef, data: ResolutionMode): CompositeTransformResult { if (typeRef is FirResolvedTypeRef) { return typeRef.compose() } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirDeclarationsResolveTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirDeclarationsResolveTransformer.kt index 68734347c7d..6c735933fd5 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirDeclarationsResolveTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirDeclarationsResolveTransformer.kt @@ -704,6 +704,9 @@ open class FirDeclarationsResolveTransformer(transformer: FirBodyResolveTransfor context.storeVariable(valueParameter) if (valueParameter.returnTypeRef is FirImplicitTypeRef) { transformer.replaceDeclarationResolvePhaseIfNeeded(valueParameter, transformerPhase) + valueParameter.replaceReturnTypeRef( + valueParameter.returnTypeRef.errorTypeFromPrototype(ConeSimpleDiagnostic("Unresolved value parameter type")) + ) return valueParameter.compose() } diff --git a/idea/idea-completion/testData/basic/common/annotations/ParameterAnnotationArgs.kt b/idea/idea-completion/testData/basic/common/annotations/ParameterAnnotationArgs.kt index 862764e58f4..33701dda0e3 100644 --- a/idea/idea-completion/testData/basic/common/annotations/ParameterAnnotationArgs.kt +++ b/idea/idea-completion/testData/basic/common/annotations/ParameterAnnotationArgs.kt @@ -12,3 +12,4 @@ fun foo(@inlineOptions() { } // EXIST: InlineOption // EXIST: String // EXIST: v +// FIR_COMPARISON