From 9ce4decb732e66c9fbda3cb814825119591e8e5d Mon Sep 17 00:00:00 2001 From: Ilya Kirillov Date: Wed, 24 Feb 2021 12:44:50 +0100 Subject: [PATCH] FIR IDE: use WhenMissingCase in NoElseInWhen diagnostic --- .../frontend/api/fir/generator/HLDiagnosticConverter.kt | 6 +----- .../api/fir/diagnostics/KtFirDataClassConverters.kt | 3 +-- .../idea/frontend/api/fir/diagnostics/KtFirDiagnostics.kt | 3 ++- .../frontend/api/fir/diagnostics/KtFirDiagnosticsImpl.kt | 3 ++- 4 files changed, 6 insertions(+), 9 deletions(-) diff --git a/idea/idea-frontend-fir/idea-frontend-fir-generator/src/org/jetbrains/kotlin/idea/frontend/api/fir/generator/HLDiagnosticConverter.kt b/idea/idea-frontend-fir/idea-frontend-fir-generator/src/org/jetbrains/kotlin/idea/frontend/api/fir/generator/HLDiagnosticConverter.kt index 058c3885915..3b7f4726fcf 100644 --- a/idea/idea-frontend-fir/idea-frontend-fir-generator/src/org/jetbrains/kotlin/idea/frontend/api/fir/generator/HLDiagnosticConverter.kt +++ b/idea/idea-frontend-fir/idea-frontend-fir-generator/src/org/jetbrains/kotlin/idea/frontend/api/fir/generator/HLDiagnosticConverter.kt @@ -163,11 +163,6 @@ private object FirToKtConversionCreator { KtVariableSymbol::class.createType(), importsToAdd = listOf("org.jetbrains.kotlin.fir.declarations.FirProperty") ), - WhenMissingCase::class to HLFunctionCallConversion( - """TODO("WhenMissingCase conversion is not supported yet")""", - Any::class.createType(), - importsToAdd = listOf("org.jetbrains.kotlin.diagnostics.WhenMissingCase") - ), ) private val allowedTypesWithoutTypeParams = setOf( @@ -177,6 +172,7 @@ private object FirToKtConversionCreator { EventOccurrencesRange::class, KtModifierKeywordToken::class, Visibility::class, + WhenMissingCase::class, ) private val KType.kClass: KClass<*> diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDataClassConverters.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDataClassConverters.kt index eec540ccd9c..8a77f25db57 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDataClassConverters.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDataClassConverters.kt @@ -7,7 +7,6 @@ package org.jetbrains.kotlin.idea.frontend.api.fir.diagnostics import com.intellij.psi.PsiElement import com.intellij.psi.PsiTypeElement -import org.jetbrains.kotlin.diagnostics.WhenMissingCase import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors import org.jetbrains.kotlin.fir.analysis.diagnostics.FirPsiDiagnostic import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration @@ -1058,7 +1057,7 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert add(FirErrors.NO_ELSE_IN_WHEN) { firDiagnostic -> NoElseInWhenImpl( firDiagnostic.a.map { whenMissingCase -> - TODO("WhenMissingCase conversion is not supported yet") + whenMissingCase }, firDiagnostic as FirPsiDiagnostic<*>, token, diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDiagnostics.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDiagnostics.kt index 5c62ee4d561..3277233d7db 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDiagnostics.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDiagnostics.kt @@ -9,6 +9,7 @@ import com.intellij.psi.PsiElement import com.intellij.psi.PsiTypeElement import org.jetbrains.kotlin.contracts.description.EventOccurrencesRange import org.jetbrains.kotlin.descriptors.Visibility +import org.jetbrains.kotlin.diagnostics.WhenMissingCase import org.jetbrains.kotlin.idea.frontend.api.diagnostics.KtDiagnosticWithPsi import org.jetbrains.kotlin.idea.frontend.api.symbols.KtCallableSymbol import org.jetbrains.kotlin.idea.frontend.api.symbols.KtClassLikeSymbol @@ -745,7 +746,7 @@ sealed class KtFirDiagnostic : KtDiagnosticWithPsi { abstract class NoElseInWhen : KtFirDiagnostic() { override val diagnosticClass get() = NoElseInWhen::class - abstract val missingWhenCases: List + abstract val missingWhenCases: List } abstract class InvalidIfAsExpression : KtFirDiagnostic() { diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDiagnosticsImpl.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDiagnosticsImpl.kt index 62a6a0a3dd0..f9d0d8903d7 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDiagnosticsImpl.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDiagnosticsImpl.kt @@ -9,6 +9,7 @@ import com.intellij.psi.PsiElement import com.intellij.psi.PsiTypeElement import org.jetbrains.kotlin.contracts.description.EventOccurrencesRange import org.jetbrains.kotlin.descriptors.Visibility +import org.jetbrains.kotlin.diagnostics.WhenMissingCase import org.jetbrains.kotlin.fir.analysis.diagnostics.FirPsiDiagnostic import org.jetbrains.kotlin.idea.frontend.api.ValidityToken import org.jetbrains.kotlin.idea.frontend.api.fir.utils.weakRef @@ -1198,7 +1199,7 @@ internal class UnsafeOperatorCallImpl( } internal class NoElseInWhenImpl( - override val missingWhenCases: List, + override val missingWhenCases: List, firDiagnostic: FirPsiDiagnostic<*>, override val token: ValidityToken, ) : KtFirDiagnostic.NoElseInWhen(), KtAbstractFirDiagnostic {