FIR: support separate ANONYMOUS_FUNCTION_WITH_NAME

This commit is contained in:
Mikhail Glukhikh
2021-04-16 11:18:21 +03:00
parent 6b95bcdbdb
commit eb831b9afc
8 changed files with 28 additions and 9 deletions
@@ -1320,6 +1320,12 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
token,
)
}
add(FirErrors.ANONYMOUS_FUNCTION_WITH_NAME) { firDiagnostic ->
AnonymousFunctionWithNameImpl(
firDiagnostic as FirPsiDiagnostic<*>,
token,
)
}
add(FirErrors.ANONYMOUS_FUNCTION_PARAMETER_WITH_DEFAULT_VALUE) { firDiagnostic ->
AnonymousFunctionParameterWithDefaultValueImpl(
firDiagnostic as FirPsiDiagnostic<*>,
@@ -937,6 +937,10 @@ sealed class KtFirDiagnostic<PSI: PsiElement> : KtDiagnosticWithPsi<PSI> {
override val diagnosticClass get() = FunctionDeclarationWithNoName::class
}
abstract class AnonymousFunctionWithName : KtFirDiagnostic<KtFunction>() {
override val diagnosticClass get() = AnonymousFunctionWithName::class
}
abstract class AnonymousFunctionParameterWithDefaultValue : KtFirDiagnostic<KtParameter>() {
override val diagnosticClass get() = AnonymousFunctionParameterWithDefaultValue::class
}
@@ -1508,6 +1508,13 @@ internal class FunctionDeclarationWithNoNameImpl(
override val firDiagnostic: FirPsiDiagnostic<*> by weakRef(firDiagnostic)
}
internal class AnonymousFunctionWithNameImpl(
firDiagnostic: FirPsiDiagnostic<*>,
override val token: ValidityToken,
) : KtFirDiagnostic.AnonymousFunctionWithName(), KtAbstractFirDiagnostic<KtFunction> {
override val firDiagnostic: FirPsiDiagnostic<*> by weakRef(firDiagnostic)
}
internal class AnonymousFunctionParameterWithDefaultValueImpl(
firDiagnostic: FirPsiDiagnostic<*>,
override val token: ValidityToken,