Analysis API: add validity assertions to diagnostics

This commit is contained in:
Ilya Kirillov
2021-09-22 18:24:10 +02:00
committed by TeamCityServer
parent 9fd988d727
commit 7d4d035287
@@ -7,20 +7,22 @@ package org.jetbrains.kotlin.analysis.api.fir.diagnostics
import com.intellij.openapi.util.TextRange import com.intellij.openapi.util.TextRange
import com.intellij.psi.PsiElement import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.analysis.api.ValidityTokenOwner
import org.jetbrains.kotlin.diagnostics.Severity import org.jetbrains.kotlin.diagnostics.Severity
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirDefaultErrorMessages import org.jetbrains.kotlin.fir.analysis.diagnostics.FirDefaultErrorMessages
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirDiagnostic import org.jetbrains.kotlin.fir.analysis.diagnostics.FirDiagnostic
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirPsiDiagnostic import org.jetbrains.kotlin.fir.analysis.diagnostics.FirPsiDiagnostic
import org.jetbrains.kotlin.analysis.api.diagnostics.KtDiagnosticWithPsi import org.jetbrains.kotlin.analysis.api.diagnostics.KtDiagnosticWithPsi
import org.jetbrains.kotlin.analysis.api.withValidityAssertion
internal interface KtAbstractFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI> { internal interface KtAbstractFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI>, ValidityTokenOwner {
val firDiagnostic: FirPsiDiagnostic val firDiagnostic: FirPsiDiagnostic
override val factoryName: String override val factoryName: String
get() = firDiagnostic.factory.name get() = withValidityAssertion { firDiagnostic.factory.name }
override val defaultMessage: String override val defaultMessage: String
get() { get() = withValidityAssertion {
val diagnostic = firDiagnostic as FirDiagnostic val diagnostic = firDiagnostic as FirDiagnostic
val firDiagnosticRenderer = FirDefaultErrorMessages.getRendererForDiagnostic(diagnostic) val firDiagnosticRenderer = FirDefaultErrorMessages.getRendererForDiagnostic(diagnostic)
@@ -28,12 +30,12 @@ internal interface KtAbstractFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithP
} }
override val textRanges: Collection<TextRange> override val textRanges: Collection<TextRange>
get() = firDiagnostic.textRanges get() = withValidityAssertion { firDiagnostic.textRanges }
@Suppress("UNCHECKED_CAST") @Suppress("UNCHECKED_CAST")
override val psi: PSI override val psi: PSI
get() = firDiagnostic.psiElement as PSI get() = withValidityAssertion { firDiagnostic.psiElement as PSI }
override val severity: Severity override val severity: Severity
get() = firDiagnostic.severity get() = withValidityAssertion { firDiagnostic.severity }
} }