[FIR] Introduce FirAssignExpressionAltererExtension

This extension can be used to override resolution of assign statements
  with custom statement
This commit is contained in:
Dmitriy Novozhilov
2022-08-12 12:55:50 +03:00
committed by teamcity
parent 42b1621b4b
commit bb38690273
11 changed files with 110 additions and 1 deletions
@@ -363,6 +363,15 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
token,
)
}
add(FirErrors.AMBIGUOUS_ALTERED_ASSIGN) { firDiagnostic ->
AmbiguousAlteredAssignImpl(
firDiagnostic.a.map { string ->
string
},
firDiagnostic as KtPsiDiagnostic,
token,
)
}
add(FirErrors.SUPER_IS_NOT_AN_EXPRESSION) { firDiagnostic ->
SuperIsNotAnExpressionImpl(
firDiagnostic as KtPsiDiagnostic,
@@ -291,6 +291,11 @@ sealed class KtFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI> {
abstract val classSymbol: KtClassLikeSymbol
}
abstract class AmbiguousAlteredAssign : KtFirDiagnostic<PsiElement>() {
override val diagnosticClass get() = AmbiguousAlteredAssign::class
abstract val altererNames: List<String?>
}
abstract class SuperIsNotAnExpression : KtFirDiagnostic<PsiElement>() {
override val diagnosticClass get() = SuperIsNotAnExpression::class
}
@@ -336,6 +336,12 @@ internal class ResolutionToClassifierImpl(
override val token: KtLifetimeToken,
) : KtFirDiagnostic.ResolutionToClassifier(), KtAbstractFirDiagnostic<PsiElement>
internal class AmbiguousAlteredAssignImpl(
override val altererNames: List<String?>,
override val firDiagnostic: KtPsiDiagnostic,
override val token: KtLifetimeToken,
) : KtFirDiagnostic.AmbiguousAlteredAssign(), KtAbstractFirDiagnostic<PsiElement>
internal class SuperIsNotAnExpressionImpl(
override val firDiagnostic: KtPsiDiagnostic,
override val token: KtLifetimeToken,