FIR checker: report PROPERTY_AS_OPERATOR

This commit is contained in:
Tianyu Geng
2021-08-31 16:57:18 -07:00
committed by Mikhail Glukhikh
parent 4915d8dda3
commit 05fbed68e2
21 changed files with 154 additions and 27 deletions
@@ -3131,6 +3131,13 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
token,
)
}
add(FirErrors.PROPERTY_AS_OPERATOR) { firDiagnostic ->
PropertyAsOperatorImpl(
firSymbolBuilder.variableLikeBuilder.buildVariableSymbol(firDiagnostic.a.fir),
firDiagnostic as FirPsiDiagnostic,
token,
)
}
add(FirErrors.TOPLEVEL_TYPEALIASES_ONLY) { firDiagnostic ->
ToplevelTypealiasesOnlyImpl(
firDiagnostic as FirPsiDiagnostic,
@@ -2186,6 +2186,11 @@ sealed class KtFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI> {
abstract val operator: String
}
abstract class PropertyAsOperator : KtFirDiagnostic<PsiElement>() {
override val diagnosticClass get() = PropertyAsOperator::class
abstract val property: KtVariableSymbol
}
abstract class ToplevelTypealiasesOnly : KtFirDiagnostic<KtTypeAlias>() {
override val diagnosticClass get() = ToplevelTypealiasesOnly::class
}
@@ -3522,6 +3522,14 @@ internal class AssignmentOperatorShouldReturnUnitImpl(
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}
internal class PropertyAsOperatorImpl(
override val property: KtVariableSymbol,
firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken,
) : KtFirDiagnostic.PropertyAsOperator(), KtAbstractFirDiagnostic<PsiElement> {
override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic)
}
internal class ToplevelTypealiasesOnlyImpl(
firDiagnostic: FirPsiDiagnostic,
override val token: ValidityToken,