[JS FIR] Support JS_BUILTIN_NAME_CLASH diagnostic

^KT-59391 Fixed
This commit is contained in:
Alexander Korepanov
2023-07-19 15:46:46 +02:00
committed by Space Team
parent f061215ee9
commit 37c8ec1e51
12 changed files with 319 additions and 57 deletions
@@ -1227,6 +1227,13 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
token,
)
}
add(FirJsErrors.JS_BUILTIN_NAME_CLASH) { firDiagnostic ->
JsBuiltinNameClashImpl(
firDiagnostic.a,
firDiagnostic as KtPsiDiagnostic,
token,
)
}
add(FirErrors.OPT_IN_USAGE) { firDiagnostic ->
OptInUsageImpl(
firDiagnostic.a,
@@ -881,6 +881,11 @@ sealed interface KtFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI> {
override val diagnosticClass get() = JsNameProhibitedForExtensionProperty::class
}
interface JsBuiltinNameClash : KtFirDiagnostic<KtElement> {
override val diagnosticClass get() = JsBuiltinNameClash::class
val name: String
}
interface OptInUsage : KtFirDiagnostic<PsiElement> {
override val diagnosticClass get() = OptInUsage::class
val optInMarkerFqName: FqName
@@ -1059,6 +1059,12 @@ internal class JsNameProhibitedForExtensionPropertyImpl(
token: KtLifetimeToken,
) : KtAbstractFirDiagnostic<KtElement>(firDiagnostic, token), KtFirDiagnostic.JsNameProhibitedForExtensionProperty
internal class JsBuiltinNameClashImpl(
override val name: String,
firDiagnostic: KtPsiDiagnostic,
token: KtLifetimeToken,
) : KtAbstractFirDiagnostic<KtElement>(firDiagnostic, token), KtFirDiagnostic.JsBuiltinNameClash
internal class OptInUsageImpl(
override val optInMarkerFqName: FqName,
override val message: String,