[FIR JS] Generate diagnostic componentss for JS FIR FE checks

Generate components for JS_NAME_CLASH and JS_FAKE_NAME_CLASH

^KT-59425 Related
^KT-59370 Related
This commit is contained in:
Alexander Korepanov
2023-09-04 20:36:39 +02:00
committed by Space Team
parent f5307173b5
commit 5ac277d058
7 changed files with 77 additions and 0 deletions
@@ -1326,6 +1326,27 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
token,
)
}
add(FirJsErrors.JS_NAME_CLASH) { firDiagnostic ->
JsNameClashImpl(
firDiagnostic.a,
firDiagnostic.b.map { firBasedSymbol ->
firSymbolBuilder.buildSymbol(firBasedSymbol)
},
firDiagnostic as KtPsiDiagnostic,
token,
)
}
add(FirJsErrors.JS_FAKE_NAME_CLASH) { firDiagnostic ->
JsFakeNameClashImpl(
firDiagnostic.a,
firSymbolBuilder.buildSymbol(firDiagnostic.b),
firDiagnostic.c.map { firBasedSymbol ->
firSymbolBuilder.buildSymbol(firBasedSymbol)
},
firDiagnostic as KtPsiDiagnostic,
token,
)
}
add(FirErrors.OPT_IN_USAGE) { firDiagnostic ->
OptInUsageImpl(
firDiagnostic.a,
@@ -956,6 +956,19 @@ sealed interface KtFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI> {
override val diagnosticClass get() = NameContainsIllegalChars::class
}
interface JsNameClash : KtFirDiagnostic<KtElement> {
override val diagnosticClass get() = JsNameClash::class
val name: String
val existing: List<KtSymbol>
}
interface JsFakeNameClash : KtFirDiagnostic<KtElement> {
override val diagnosticClass get() = JsFakeNameClash::class
val name: String
val override: KtSymbol
val existing: List<KtSymbol>
}
interface OptInUsage : KtFirDiagnostic<PsiElement> {
override val diagnosticClass get() = OptInUsage::class
val optInMarkerFqName: FqName
@@ -1148,6 +1148,21 @@ internal class NameContainsIllegalCharsImpl(
token: KtLifetimeToken,
) : KtAbstractFirDiagnostic<KtElement>(firDiagnostic, token), KtFirDiagnostic.NameContainsIllegalChars
internal class JsNameClashImpl(
override val name: String,
override val existing: List<KtSymbol>,
firDiagnostic: KtPsiDiagnostic,
token: KtLifetimeToken,
) : KtAbstractFirDiagnostic<KtElement>(firDiagnostic, token), KtFirDiagnostic.JsNameClash
internal class JsFakeNameClashImpl(
override val name: String,
override val override: KtSymbol,
override val existing: List<KtSymbol>,
firDiagnostic: KtPsiDiagnostic,
token: KtLifetimeToken,
) : KtAbstractFirDiagnostic<KtElement>(firDiagnostic, token), KtFirDiagnostic.JsFakeNameClash
internal class OptInUsageImpl(
override val optInMarkerFqName: FqName,
override val message: String,