From 82c0265cb3ab7cfc219a27dbd45656f01b24aed6 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Fri, 9 Oct 2015 17:42:55 +0300 Subject: [PATCH] Quick fix for implicit nothing with a test --- .../idea/quickfix/ChangeFunctionReturnTypeFix.java | 12 ++++++++++++ .../kotlin/idea/quickfix/QuickFixRegistrar.kt | 1 + .../quickfix/changeSignature/addNothingReturnType.kt | 2 ++ .../changeSignature/addNothingReturnType.kt.after | 2 ++ .../kotlin/idea/quickfix/QuickFixTestGenerated.java | 6 ++++++ 5 files changed, 23 insertions(+) create mode 100644 idea/testData/quickfix/changeSignature/addNothingReturnType.kt create mode 100644 idea/testData/quickfix/changeSignature/addNothingReturnType.kt.after diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeFunctionReturnTypeFix.java b/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeFunctionReturnTypeFix.java index 524d5367bc3..dfaa1c47418 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeFunctionReturnTypeFix.java +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeFunctionReturnTypeFix.java @@ -248,4 +248,16 @@ public class ChangeFunctionReturnTypeFix extends JetIntentionAction } }; } + + @NotNull + public static JetSingleIntentionActionFactory createFactoryForChangingReturnTypeToNothing() { + return new JetSingleIntentionActionFactory() { + @Nullable + @Override + public IntentionAction createAction(@NotNull Diagnostic diagnostic) { + JetFunction function = QuickFixUtil.getParentElementOfType(diagnostic, JetFunction.class); + return function == null ? null : new ChangeFunctionReturnTypeFix(function, getPlatform(function).getBuiltIns().getNothingType()); + } + }; + } } diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/QuickFixRegistrar.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/QuickFixRegistrar.kt index f0ffe84cc46..8ac0bc1a535 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/QuickFixRegistrar.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/QuickFixRegistrar.kt @@ -219,6 +219,7 @@ public class QuickFixRegistrar : QuickFixContributor { COMPONENT_FUNCTION_RETURN_TYPE_MISMATCH.registerFactory(ChangeFunctionReturnTypeFix.createFactoryForComponentFunctionReturnTypeMismatch()) HAS_NEXT_FUNCTION_TYPE_MISMATCH.registerFactory(ChangeFunctionReturnTypeFix.createFactoryForHasNextFunctionTypeMismatch()) COMPARE_TO_TYPE_MISMATCH.registerFactory(ChangeFunctionReturnTypeFix.createFactoryForCompareToTypeMismatch()) + IMPLICIT_NOTHING_RETURN_TYPE.registerFactory(ChangeFunctionReturnTypeFix.createFactoryForChangingReturnTypeToNothing()) TOO_MANY_ARGUMENTS.registerFactory(ChangeFunctionSignatureFix.createFactory()) NO_VALUE_FOR_PARAMETER.registerFactory(ChangeFunctionSignatureFix.createFactory()) diff --git a/idea/testData/quickfix/changeSignature/addNothingReturnType.kt b/idea/testData/quickfix/changeSignature/addNothingReturnType.kt new file mode 100644 index 00000000000..5330514b3d8 --- /dev/null +++ b/idea/testData/quickfix/changeSignature/addNothingReturnType.kt @@ -0,0 +1,2 @@ +// "Specify return type explicitly" "true" +fun foo() = throw IllegalArgumentException() \ No newline at end of file diff --git a/idea/testData/quickfix/changeSignature/addNothingReturnType.kt.after b/idea/testData/quickfix/changeSignature/addNothingReturnType.kt.after new file mode 100644 index 00000000000..aab9be44ed0 --- /dev/null +++ b/idea/testData/quickfix/changeSignature/addNothingReturnType.kt.after @@ -0,0 +1,2 @@ +// "Specify return type explicitly" "true" +fun foo(): Nothing = throw IllegalArgumentException() \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java index 1ea06fd4f8a..25e3c775a3a 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java @@ -525,6 +525,12 @@ public class QuickFixTestGenerated extends AbstractQuickFixTest { doTest(fileName); } + @TestMetadata("addNothingReturnType.kt") + public void testAddNothingReturnType() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/changeSignature/addNothingReturnType.kt"); + doTest(fileName); + } + @TestMetadata("addParameterNotAvailableForBuiltins.kt") public void testAddParameterNotAvailableForBuiltins() throws Exception { String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/changeSignature/addParameterNotAvailableForBuiltins.kt");