diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/QuickFixRegistrar.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/QuickFixRegistrar.kt index f01b07c2d96..56d1f0a05c5 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/QuickFixRegistrar.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/QuickFixRegistrar.kt @@ -50,6 +50,7 @@ import org.jetbrains.kotlin.psi.KtClass import org.jetbrains.kotlin.psi.KtClassOrObject import org.jetbrains.kotlin.psi.KtProperty import org.jetbrains.kotlin.resolve.jvm.diagnostics.ErrorsJvm.* +import org.jetbrains.kotlin.resolve.konan.diagnostics.ErrorsNative.INCOMPATIBLE_THROWS_OVERRIDE import org.jetbrains.kotlin.resolve.konan.diagnostics.ErrorsNative.MISSING_EXCEPTION_IN_THROWS_ON_SUSPEND import org.jetbrains.kotlin.resolve.konan.diagnostics.ErrorsNative.THROWS_LIST_EMPTY @@ -656,5 +657,6 @@ class QuickFixRegistrar : QuickFixContributor { MISSING_EXCEPTION_IN_THROWS_ON_SUSPEND.registerFactory(AddExceptionToThrowsFix) THROWS_LIST_EMPTY.registerFactory(RemoveAnnotationFix) + INCOMPATIBLE_THROWS_OVERRIDE.registerFactory(RemoveAnnotationFix) } } diff --git a/idea/testData/multiModuleQuickFix/fixNativeThrowsErrors/removeThrowsOnIncompatibleOverride/native/kotlin.kt b/idea/testData/multiModuleQuickFix/fixNativeThrowsErrors/removeThrowsOnIncompatibleOverride/native/kotlin.kt new file mode 100644 index 00000000000..2741c5635a4 --- /dev/null +++ b/idea/testData/multiModuleQuickFix/fixNativeThrowsErrors/removeThrowsOnIncompatibleOverride/native/kotlin.kt @@ -0,0 +1,7 @@ +package kotlin + +import kotlin.reflect.KClass + +@Target(AnnotationTarget.FUNCTION, AnnotationTarget.CONSTRUCTOR) +@Retention(AnnotationRetention.SOURCE) +public annotation class Throws(vararg val exceptionClasses: KClass) diff --git a/idea/testData/multiModuleQuickFix/fixNativeThrowsErrors/removeThrowsOnIncompatibleOverride/native/test.kt b/idea/testData/multiModuleQuickFix/fixNativeThrowsErrors/removeThrowsOnIncompatibleOverride/native/test.kt new file mode 100644 index 00000000000..9c921dd1b09 --- /dev/null +++ b/idea/testData/multiModuleQuickFix/fixNativeThrowsErrors/removeThrowsOnIncompatibleOverride/native/test.kt @@ -0,0 +1,13 @@ +// "Remove annotation" "true" + +class MyException : Throwable() + +interface Base { + @Throws(Throwable::class) + fun foo() +} + +class Derived : Base { + @Throws(MyException::class) + override fun foo() {} +} diff --git a/idea/testData/multiModuleQuickFix/fixNativeThrowsErrors/removeThrowsOnIncompatibleOverride/native/test.kt.after b/idea/testData/multiModuleQuickFix/fixNativeThrowsErrors/removeThrowsOnIncompatibleOverride/native/test.kt.after new file mode 100644 index 00000000000..08e63804cff --- /dev/null +++ b/idea/testData/multiModuleQuickFix/fixNativeThrowsErrors/removeThrowsOnIncompatibleOverride/native/test.kt.after @@ -0,0 +1,12 @@ +// "Remove annotation" "true" + +class MyException : Throwable() + +interface Base { + @Throws(Throwable::class) + fun foo() +} + +class Derived : Base { + override fun foo() {} +} diff --git a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixMultiModuleTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixMultiModuleTestGenerated.java index 91ff87fab71..0103e0a3b57 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixMultiModuleTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixMultiModuleTestGenerated.java @@ -830,6 +830,11 @@ public class QuickFixMultiModuleTestGenerated extends AbstractQuickFixMultiModul public void testRemoveEmptyThrows() throws Exception { runTest("idea/testData/multiModuleQuickFix/fixNativeThrowsErrors/removeEmptyThrows/"); } + + @TestMetadata("removeThrowsOnIncompatibleOverride") + public void testRemoveThrowsOnIncompatibleOverride() throws Exception { + runTest("idea/testData/multiModuleQuickFix/fixNativeThrowsErrors/removeThrowsOnIncompatibleOverride/"); + } } @TestMetadata("idea/testData/multiModuleQuickFix/makeOverridenMemberOpen")