[FIR] Resolve infix calls to infix functions only
Implements INFIX_MODIFIER_REQUIRED diagnostics
This commit is contained in:
committed by
TeamCityServer
parent
df14deb5a0
commit
b1c8669b43
+7
@@ -813,6 +813,13 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
|
||||
token,
|
||||
)
|
||||
}
|
||||
add(FirErrors.INFIX_MODIFIER_REQUIRED) { firDiagnostic ->
|
||||
InfixModifierRequiredImpl(
|
||||
firSymbolBuilder.functionLikeBuilder.buildFunctionSymbol(firDiagnostic.a.fir),
|
||||
firDiagnostic as FirPsiDiagnostic<*>,
|
||||
token,
|
||||
)
|
||||
}
|
||||
add(FirErrors.INLINE_CLASS_NOT_TOP_LEVEL) { firDiagnostic ->
|
||||
InlineClassNotTopLevelImpl(
|
||||
firDiagnostic as FirPsiDiagnostic<*>,
|
||||
|
||||
+5
@@ -586,6 +586,11 @@ sealed class KtFirDiagnostic<PSI: PsiElement> : KtDiagnosticWithPsi<PSI> {
|
||||
abstract val name: String
|
||||
}
|
||||
|
||||
abstract class InfixModifierRequired : KtFirDiagnostic<PsiElement>() {
|
||||
override val diagnosticClass get() = InfixModifierRequired::class
|
||||
abstract val functionSymbol: KtFunctionLikeSymbol
|
||||
}
|
||||
|
||||
abstract class InlineClassNotTopLevel : KtFirDiagnostic<KtDeclaration>() {
|
||||
override val diagnosticClass get() = InlineClassNotTopLevel::class
|
||||
}
|
||||
|
||||
+8
@@ -938,6 +938,14 @@ internal class OperatorModifierRequiredImpl(
|
||||
override val firDiagnostic: FirPsiDiagnostic<*> by weakRef(firDiagnostic)
|
||||
}
|
||||
|
||||
internal class InfixModifierRequiredImpl(
|
||||
override val functionSymbol: KtFunctionLikeSymbol,
|
||||
firDiagnostic: FirPsiDiagnostic<*>,
|
||||
override val token: ValidityToken,
|
||||
) : KtFirDiagnostic.InfixModifierRequired(), KtAbstractFirDiagnostic<PsiElement> {
|
||||
override val firDiagnostic: FirPsiDiagnostic<*> by weakRef(firDiagnostic)
|
||||
}
|
||||
|
||||
internal class InlineClassNotTopLevelImpl(
|
||||
firDiagnostic: FirPsiDiagnostic<*>,
|
||||
override val token: ValidityToken,
|
||||
|
||||
Reference in New Issue
Block a user