[FIR JS] Implement FirJsNativeAnnotationChecker
This commit is contained in:
committed by
Space Team
parent
a20e29e8b7
commit
5b3a73f7cd
+41
@@ -1019,6 +1019,47 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
|
||||
token,
|
||||
)
|
||||
}
|
||||
add(FirJsErrors.NATIVE_ANNOTATIONS_ALLOWED_ONLY_ON_MEMBER_OR_EXTENSION_FUN) { firDiagnostic ->
|
||||
NativeAnnotationsAllowedOnlyOnMemberOrExtensionFunImpl(
|
||||
firSymbolBuilder.typeBuilder.buildKtType(firDiagnostic.a),
|
||||
firDiagnostic as KtPsiDiagnostic,
|
||||
token,
|
||||
)
|
||||
}
|
||||
add(FirJsErrors.NATIVE_INDEXER_KEY_SHOULD_BE_STRING_OR_NUMBER) { firDiagnostic ->
|
||||
NativeIndexerKeyShouldBeStringOrNumberImpl(
|
||||
firDiagnostic.a,
|
||||
firDiagnostic as KtPsiDiagnostic,
|
||||
token,
|
||||
)
|
||||
}
|
||||
add(FirJsErrors.NATIVE_INDEXER_WRONG_PARAMETER_COUNT) { firDiagnostic ->
|
||||
NativeIndexerWrongParameterCountImpl(
|
||||
firDiagnostic.a,
|
||||
firDiagnostic.b,
|
||||
firDiagnostic as KtPsiDiagnostic,
|
||||
token,
|
||||
)
|
||||
}
|
||||
add(FirJsErrors.NATIVE_INDEXER_CAN_NOT_HAVE_DEFAULT_ARGUMENTS) { firDiagnostic ->
|
||||
NativeIndexerCanNotHaveDefaultArgumentsImpl(
|
||||
firDiagnostic.a,
|
||||
firDiagnostic as KtPsiDiagnostic,
|
||||
token,
|
||||
)
|
||||
}
|
||||
add(FirJsErrors.NATIVE_GETTER_RETURN_TYPE_SHOULD_BE_NULLABLE) { firDiagnostic ->
|
||||
NativeGetterReturnTypeShouldBeNullableImpl(
|
||||
firDiagnostic as KtPsiDiagnostic,
|
||||
token,
|
||||
)
|
||||
}
|
||||
add(FirJsErrors.NATIVE_SETTER_WRONG_RETURN_TYPE) { firDiagnostic ->
|
||||
NativeSetterWrongReturnTypeImpl(
|
||||
firDiagnostic as KtPsiDiagnostic,
|
||||
token,
|
||||
)
|
||||
}
|
||||
add(FirErrors.OPT_IN_USAGE) { firDiagnostic ->
|
||||
OptInUsageImpl(
|
||||
firDiagnostic.a,
|
||||
|
||||
+29
@@ -732,6 +732,35 @@ sealed class KtFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI> {
|
||||
override val diagnosticClass get() = RuntimeAnnotationOnExternalDeclaration::class
|
||||
}
|
||||
|
||||
abstract class NativeAnnotationsAllowedOnlyOnMemberOrExtensionFun : KtFirDiagnostic<KtElement>() {
|
||||
override val diagnosticClass get() = NativeAnnotationsAllowedOnlyOnMemberOrExtensionFun::class
|
||||
abstract val type: KtType
|
||||
}
|
||||
|
||||
abstract class NativeIndexerKeyShouldBeStringOrNumber : KtFirDiagnostic<KtElement>() {
|
||||
override val diagnosticClass get() = NativeIndexerKeyShouldBeStringOrNumber::class
|
||||
abstract val kind: String
|
||||
}
|
||||
|
||||
abstract class NativeIndexerWrongParameterCount : KtFirDiagnostic<KtElement>() {
|
||||
override val diagnosticClass get() = NativeIndexerWrongParameterCount::class
|
||||
abstract val parametersCount: Int
|
||||
abstract val kind: String
|
||||
}
|
||||
|
||||
abstract class NativeIndexerCanNotHaveDefaultArguments : KtFirDiagnostic<KtElement>() {
|
||||
override val diagnosticClass get() = NativeIndexerCanNotHaveDefaultArguments::class
|
||||
abstract val kind: String
|
||||
}
|
||||
|
||||
abstract class NativeGetterReturnTypeShouldBeNullable : KtFirDiagnostic<KtDeclaration>() {
|
||||
override val diagnosticClass get() = NativeGetterReturnTypeShouldBeNullable::class
|
||||
}
|
||||
|
||||
abstract class NativeSetterWrongReturnType : KtFirDiagnostic<KtDeclaration>() {
|
||||
override val diagnosticClass get() = NativeSetterWrongReturnType::class
|
||||
}
|
||||
|
||||
abstract class OptInUsage : KtFirDiagnostic<PsiElement>() {
|
||||
override val diagnosticClass get() = OptInUsage::class
|
||||
abstract val optInMarkerFqName: FqName
|
||||
|
||||
+35
@@ -880,6 +880,41 @@ internal class RuntimeAnnotationOnExternalDeclarationImpl(
|
||||
override val token: KtLifetimeToken,
|
||||
) : KtFirDiagnostic.RuntimeAnnotationOnExternalDeclaration(), KtAbstractFirDiagnostic<PsiElement>
|
||||
|
||||
internal class NativeAnnotationsAllowedOnlyOnMemberOrExtensionFunImpl(
|
||||
override val type: KtType,
|
||||
override val firDiagnostic: KtPsiDiagnostic,
|
||||
override val token: KtLifetimeToken,
|
||||
) : KtFirDiagnostic.NativeAnnotationsAllowedOnlyOnMemberOrExtensionFun(), KtAbstractFirDiagnostic<KtElement>
|
||||
|
||||
internal class NativeIndexerKeyShouldBeStringOrNumberImpl(
|
||||
override val kind: String,
|
||||
override val firDiagnostic: KtPsiDiagnostic,
|
||||
override val token: KtLifetimeToken,
|
||||
) : KtFirDiagnostic.NativeIndexerKeyShouldBeStringOrNumber(), KtAbstractFirDiagnostic<KtElement>
|
||||
|
||||
internal class NativeIndexerWrongParameterCountImpl(
|
||||
override val parametersCount: Int,
|
||||
override val kind: String,
|
||||
override val firDiagnostic: KtPsiDiagnostic,
|
||||
override val token: KtLifetimeToken,
|
||||
) : KtFirDiagnostic.NativeIndexerWrongParameterCount(), KtAbstractFirDiagnostic<KtElement>
|
||||
|
||||
internal class NativeIndexerCanNotHaveDefaultArgumentsImpl(
|
||||
override val kind: String,
|
||||
override val firDiagnostic: KtPsiDiagnostic,
|
||||
override val token: KtLifetimeToken,
|
||||
) : KtFirDiagnostic.NativeIndexerCanNotHaveDefaultArguments(), KtAbstractFirDiagnostic<KtElement>
|
||||
|
||||
internal class NativeGetterReturnTypeShouldBeNullableImpl(
|
||||
override val firDiagnostic: KtPsiDiagnostic,
|
||||
override val token: KtLifetimeToken,
|
||||
) : KtFirDiagnostic.NativeGetterReturnTypeShouldBeNullable(), KtAbstractFirDiagnostic<KtDeclaration>
|
||||
|
||||
internal class NativeSetterWrongReturnTypeImpl(
|
||||
override val firDiagnostic: KtPsiDiagnostic,
|
||||
override val token: KtLifetimeToken,
|
||||
) : KtFirDiagnostic.NativeSetterWrongReturnType(), KtAbstractFirDiagnostic<KtDeclaration>
|
||||
|
||||
internal class OptInUsageImpl(
|
||||
override val optInMarkerFqName: FqName,
|
||||
override val message: String,
|
||||
|
||||
Reference in New Issue
Block a user