FIR IDE: use WhenMissingCase in NoElseInWhen diagnostic
This commit is contained in:
+1
-5
@@ -163,11 +163,6 @@ private object FirToKtConversionCreator {
|
|||||||
KtVariableSymbol::class.createType(),
|
KtVariableSymbol::class.createType(),
|
||||||
importsToAdd = listOf("org.jetbrains.kotlin.fir.declarations.FirProperty")
|
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(
|
private val allowedTypesWithoutTypeParams = setOf(
|
||||||
@@ -177,6 +172,7 @@ private object FirToKtConversionCreator {
|
|||||||
EventOccurrencesRange::class,
|
EventOccurrencesRange::class,
|
||||||
KtModifierKeywordToken::class,
|
KtModifierKeywordToken::class,
|
||||||
Visibility::class,
|
Visibility::class,
|
||||||
|
WhenMissingCase::class,
|
||||||
)
|
)
|
||||||
|
|
||||||
private val KType.kClass: KClass<*>
|
private val KType.kClass: KClass<*>
|
||||||
|
|||||||
+1
-2
@@ -7,7 +7,6 @@ package org.jetbrains.kotlin.idea.frontend.api.fir.diagnostics
|
|||||||
|
|
||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
import com.intellij.psi.PsiTypeElement
|
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.FirErrors
|
||||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirPsiDiagnostic
|
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirPsiDiagnostic
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration
|
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 ->
|
add(FirErrors.NO_ELSE_IN_WHEN) { firDiagnostic ->
|
||||||
NoElseInWhenImpl(
|
NoElseInWhenImpl(
|
||||||
firDiagnostic.a.map { whenMissingCase ->
|
firDiagnostic.a.map { whenMissingCase ->
|
||||||
TODO("WhenMissingCase conversion is not supported yet")
|
whenMissingCase
|
||||||
},
|
},
|
||||||
firDiagnostic as FirPsiDiagnostic<*>,
|
firDiagnostic as FirPsiDiagnostic<*>,
|
||||||
token,
|
token,
|
||||||
|
|||||||
+2
-1
@@ -9,6 +9,7 @@ import com.intellij.psi.PsiElement
|
|||||||
import com.intellij.psi.PsiTypeElement
|
import com.intellij.psi.PsiTypeElement
|
||||||
import org.jetbrains.kotlin.contracts.description.EventOccurrencesRange
|
import org.jetbrains.kotlin.contracts.description.EventOccurrencesRange
|
||||||
import org.jetbrains.kotlin.descriptors.Visibility
|
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.diagnostics.KtDiagnosticWithPsi
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtCallableSymbol
|
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtCallableSymbol
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtClassLikeSymbol
|
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>() {
|
abstract class NoElseInWhen : KtFirDiagnostic<KtWhenExpression>() {
|
||||||
override val diagnosticClass get() = NoElseInWhen::class
|
override val diagnosticClass get() = NoElseInWhen::class
|
||||||
abstract val missingWhenCases: List<Any>
|
abstract val missingWhenCases: List<WhenMissingCase>
|
||||||
}
|
}
|
||||||
|
|
||||||
abstract class InvalidIfAsExpression : KtFirDiagnostic<KtIfExpression>() {
|
abstract class InvalidIfAsExpression : KtFirDiagnostic<KtIfExpression>() {
|
||||||
|
|||||||
+2
-1
@@ -9,6 +9,7 @@ import com.intellij.psi.PsiElement
|
|||||||
import com.intellij.psi.PsiTypeElement
|
import com.intellij.psi.PsiTypeElement
|
||||||
import org.jetbrains.kotlin.contracts.description.EventOccurrencesRange
|
import org.jetbrains.kotlin.contracts.description.EventOccurrencesRange
|
||||||
import org.jetbrains.kotlin.descriptors.Visibility
|
import org.jetbrains.kotlin.descriptors.Visibility
|
||||||
|
import org.jetbrains.kotlin.diagnostics.WhenMissingCase
|
||||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirPsiDiagnostic
|
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirPsiDiagnostic
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.ValidityToken
|
import org.jetbrains.kotlin.idea.frontend.api.ValidityToken
|
||||||
import org.jetbrains.kotlin.idea.frontend.api.fir.utils.weakRef
|
import org.jetbrains.kotlin.idea.frontend.api.fir.utils.weakRef
|
||||||
@@ -1198,7 +1199,7 @@ internal class UnsafeOperatorCallImpl(
|
|||||||
}
|
}
|
||||||
|
|
||||||
internal class NoElseInWhenImpl(
|
internal class NoElseInWhenImpl(
|
||||||
override val missingWhenCases: List<Any>,
|
override val missingWhenCases: List<WhenMissingCase>,
|
||||||
firDiagnostic: FirPsiDiagnostic<*>,
|
firDiagnostic: FirPsiDiagnostic<*>,
|
||||||
override val token: ValidityToken,
|
override val token: ValidityToken,
|
||||||
) : KtFirDiagnostic.NoElseInWhen(), KtAbstractFirDiagnostic<KtWhenExpression> {
|
) : KtFirDiagnostic.NoElseInWhen(), KtAbstractFirDiagnostic<KtWhenExpression> {
|
||||||
|
|||||||
Reference in New Issue
Block a user