[FIR JS] Implement FirJsNameChecker

This commit is contained in:
Nikolay Lunyak
2023-01-04 17:17:04 +02:00
committed by Space Team
parent 2f9831ed99
commit 5817155616
21 changed files with 208 additions and 46 deletions
@@ -1060,6 +1060,42 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
token,
)
}
add(FirJsErrors.JS_NAME_IS_NOT_ON_ALL_ACCESSORS) { firDiagnostic ->
JsNameIsNotOnAllAccessorsImpl(
firDiagnostic as KtPsiDiagnostic,
token,
)
}
add(FirJsErrors.JS_NAME_PROHIBITED_FOR_NAMED_NATIVE) { firDiagnostic ->
JsNameProhibitedForNamedNativeImpl(
firDiagnostic as KtPsiDiagnostic,
token,
)
}
add(FirJsErrors.JS_NAME_PROHIBITED_FOR_OVERRIDE) { firDiagnostic ->
JsNameProhibitedForOverrideImpl(
firDiagnostic as KtPsiDiagnostic,
token,
)
}
add(FirJsErrors.JS_NAME_ON_PRIMARY_CONSTRUCTOR_PROHIBITED) { firDiagnostic ->
JsNameOnPrimaryConstructorProhibitedImpl(
firDiagnostic as KtPsiDiagnostic,
token,
)
}
add(FirJsErrors.JS_NAME_ON_ACCESSOR_AND_PROPERTY) { firDiagnostic ->
JsNameOnAccessorAndPropertyImpl(
firDiagnostic as KtPsiDiagnostic,
token,
)
}
add(FirJsErrors.JS_NAME_PROHIBITED_FOR_EXTENSION_PROPERTY) { firDiagnostic ->
JsNameProhibitedForExtensionPropertyImpl(
firDiagnostic as KtPsiDiagnostic,
token,
)
}
add(FirErrors.OPT_IN_USAGE) { firDiagnostic ->
OptInUsageImpl(
firDiagnostic.a,
@@ -761,6 +761,30 @@ sealed class KtFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI> {
override val diagnosticClass get() = NativeSetterWrongReturnType::class
}
abstract class JsNameIsNotOnAllAccessors : KtFirDiagnostic<KtElement>() {
override val diagnosticClass get() = JsNameIsNotOnAllAccessors::class
}
abstract class JsNameProhibitedForNamedNative : KtFirDiagnostic<KtElement>() {
override val diagnosticClass get() = JsNameProhibitedForNamedNative::class
}
abstract class JsNameProhibitedForOverride : KtFirDiagnostic<KtElement>() {
override val diagnosticClass get() = JsNameProhibitedForOverride::class
}
abstract class JsNameOnPrimaryConstructorProhibited : KtFirDiagnostic<KtElement>() {
override val diagnosticClass get() = JsNameOnPrimaryConstructorProhibited::class
}
abstract class JsNameOnAccessorAndProperty : KtFirDiagnostic<KtElement>() {
override val diagnosticClass get() = JsNameOnAccessorAndProperty::class
}
abstract class JsNameProhibitedForExtensionProperty : KtFirDiagnostic<KtElement>() {
override val diagnosticClass get() = JsNameProhibitedForExtensionProperty::class
}
abstract class OptInUsage : KtFirDiagnostic<PsiElement>() {
override val diagnosticClass get() = OptInUsage::class
abstract val optInMarkerFqName: FqName
@@ -915,6 +915,36 @@ internal class NativeSetterWrongReturnTypeImpl(
override val token: KtLifetimeToken,
) : KtFirDiagnostic.NativeSetterWrongReturnType(), KtAbstractFirDiagnostic<KtDeclaration>
internal class JsNameIsNotOnAllAccessorsImpl(
override val firDiagnostic: KtPsiDiagnostic,
override val token: KtLifetimeToken,
) : KtFirDiagnostic.JsNameIsNotOnAllAccessors(), KtAbstractFirDiagnostic<KtElement>
internal class JsNameProhibitedForNamedNativeImpl(
override val firDiagnostic: KtPsiDiagnostic,
override val token: KtLifetimeToken,
) : KtFirDiagnostic.JsNameProhibitedForNamedNative(), KtAbstractFirDiagnostic<KtElement>
internal class JsNameProhibitedForOverrideImpl(
override val firDiagnostic: KtPsiDiagnostic,
override val token: KtLifetimeToken,
) : KtFirDiagnostic.JsNameProhibitedForOverride(), KtAbstractFirDiagnostic<KtElement>
internal class JsNameOnPrimaryConstructorProhibitedImpl(
override val firDiagnostic: KtPsiDiagnostic,
override val token: KtLifetimeToken,
) : KtFirDiagnostic.JsNameOnPrimaryConstructorProhibited(), KtAbstractFirDiagnostic<KtElement>
internal class JsNameOnAccessorAndPropertyImpl(
override val firDiagnostic: KtPsiDiagnostic,
override val token: KtLifetimeToken,
) : KtFirDiagnostic.JsNameOnAccessorAndProperty(), KtAbstractFirDiagnostic<KtElement>
internal class JsNameProhibitedForExtensionPropertyImpl(
override val firDiagnostic: KtPsiDiagnostic,
override val token: KtLifetimeToken,
) : KtFirDiagnostic.JsNameProhibitedForExtensionProperty(), KtAbstractFirDiagnostic<KtElement>
internal class OptInUsageImpl(
override val optInMarkerFqName: FqName,
override val message: String,