FIR IDE: use WhenMissingCase in NoElseInWhen diagnostic

This commit is contained in:
Ilya Kirillov
2021-02-24 12:44:50 +01:00
parent f19a9af7b3
commit 9ce4decb73
4 changed files with 6 additions and 9 deletions
@@ -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<*>
@@ -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,
@@ -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<PSI: PsiElement> : KtDiagnosticWithPsi<PSI> {
abstract class NoElseInWhen : KtFirDiagnostic<KtWhenExpression>() {
override val diagnosticClass get() = NoElseInWhen::class
abstract val missingWhenCases: List<Any>
abstract val missingWhenCases: List<WhenMissingCase>
}
abstract class InvalidIfAsExpression : KtFirDiagnostic<KtIfExpression>() {
@@ -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<Any>,
override val missingWhenCases: List<WhenMissingCase>,
firDiagnostic: FirPsiDiagnostic<*>,
override val token: ValidityToken,
) : KtFirDiagnostic.NoElseInWhen(), KtAbstractFirDiagnostic<KtWhenExpression> {