From 42b7b7e221eac1deefc4e9dc8f0e680da092ad18 Mon Sep 17 00:00:00 2001 From: "Kevin F. Chen" Date: Thu, 7 Feb 2013 13:17:33 -0500 Subject: [PATCH] Added quickfix for NULLABLE_SUPERTYPE --- .../jetbrains/jet/plugin/JetBundle.properties | 1 + .../jet/plugin/quickfix/QuickFixes.java | 3 ++- ...NullableFix.java => RemoveNullableFix.java} | 18 +++++++++++++----- .../nullables/afterRemoveSupertypeNullable1.kt | 3 +++ .../nullables/afterRemoveSupertypeNullable2.kt | 3 +++ .../beforeRemoveSupertypeNullable1.kt | 3 +++ .../beforeRemoveSupertypeNullable2.kt | 3 +++ .../plugin/quickfix/QuickFixTestGenerated.java | 10 ++++++++++ 8 files changed, 38 insertions(+), 6 deletions(-) rename idea/src/org/jetbrains/jet/plugin/quickfix/{RemoveRedundantNullableFix.java => RemoveNullableFix.java} (75%) create mode 100644 idea/testData/quickfix/nullables/afterRemoveSupertypeNullable1.kt create mode 100644 idea/testData/quickfix/nullables/afterRemoveSupertypeNullable2.kt create mode 100644 idea/testData/quickfix/nullables/beforeRemoveSupertypeNullable1.kt create mode 100644 idea/testData/quickfix/nullables/beforeRemoveSupertypeNullable2.kt diff --git a/idea/src/org/jetbrains/jet/plugin/JetBundle.properties b/idea/src/org/jetbrains/jet/plugin/JetBundle.properties index 136c2b243f8..fd6052d49e4 100644 --- a/idea/src/org/jetbrains/jet/plugin/JetBundle.properties +++ b/idea/src/org/jetbrains/jet/plugin/JetBundle.properties @@ -24,6 +24,7 @@ remove.right.part.of.binary.expression=Remove right part of a binary expression remove.cast=Remove cast remove.elvis.operator=Remove elvis operator remove.redundant.nullable=Remove redundant '?' +remove.supertype.nullable=Remove '?' remove.nullable.family=Remove '?' remove.useless.import=Remove useless import for ''{0}'' remove.useless.import.family=Remove useless import diff --git a/idea/src/org/jetbrains/jet/plugin/quickfix/QuickFixes.java b/idea/src/org/jetbrains/jet/plugin/quickfix/QuickFixes.java index bd59743ff08..486f7ff534c 100644 --- a/idea/src/org/jetbrains/jet/plugin/quickfix/QuickFixes.java +++ b/idea/src/org/jetbrains/jet/plugin/quickfix/QuickFixes.java @@ -134,7 +134,8 @@ public class QuickFixes { factories.put(UNRESOLVED_REFERENCE, MigrateSureInProjectFix.createFactory()); - factories.put(REDUNDANT_NULLABLE, RemoveRedundantNullableFix.createFactory()); + factories.put(REDUNDANT_NULLABLE, RemoveNullableFix.createFactory(false)); + factories.put(NULLABLE_SUPERTYPE, RemoveNullableFix.createFactory(true)); ImplementMethodsHandler implementMethodsHandler = new ImplementMethodsHandler(); actions.put(ABSTRACT_MEMBER_NOT_IMPLEMENTED, implementMethodsHandler); diff --git a/idea/src/org/jetbrains/jet/plugin/quickfix/RemoveRedundantNullableFix.java b/idea/src/org/jetbrains/jet/plugin/quickfix/RemoveNullableFix.java similarity index 75% rename from idea/src/org/jetbrains/jet/plugin/quickfix/RemoveRedundantNullableFix.java rename to idea/src/org/jetbrains/jet/plugin/quickfix/RemoveNullableFix.java index 5e95266b657..0ff28d86f3c 100644 --- a/idea/src/org/jetbrains/jet/plugin/quickfix/RemoveRedundantNullableFix.java +++ b/idea/src/org/jetbrains/jet/plugin/quickfix/RemoveNullableFix.java @@ -26,15 +26,23 @@ import org.jetbrains.jet.lang.psi.JetNullableType; import org.jetbrains.jet.lang.psi.JetTypeElement; import org.jetbrains.jet.plugin.JetBundle; -public class RemoveRedundantNullableFix extends JetIntentionAction { - public RemoveRedundantNullableFix(@NotNull JetNullableType element) { +public class RemoveNullableFix extends JetIntentionAction { + boolean isInSuperType; + + public RemoveNullableFix(@NotNull JetNullableType element, boolean isInSuperTypeArg) { super(element); + isInSuperType = isInSuperTypeArg; } @NotNull @Override public String getText() { - return JetBundle.message("remove.redundant.nullable"); + if (isInSuperType) { + return JetBundle.message("remove.supertype.nullable"); + } + else { + return JetBundle.message("remove.redundant.nullable"); + } } @NotNull @@ -49,13 +57,13 @@ public class RemoveRedundantNullableFix extends JetIntentionAction createAction(Diagnostic diagnostic) { JetNullableType type = QuickFixUtil.getParentElementOfType(diagnostic, JetNullableType.class); if (type == null) return null; - return new RemoveRedundantNullableFix(type); + return new RemoveNullableFix(type, isInSupertypeArg); } }; } diff --git a/idea/testData/quickfix/nullables/afterRemoveSupertypeNullable1.kt b/idea/testData/quickfix/nullables/afterRemoveSupertypeNullable1.kt new file mode 100644 index 00000000000..91610022427 --- /dev/null +++ b/idea/testData/quickfix/nullables/afterRemoveSupertypeNullable1.kt @@ -0,0 +1,3 @@ +// "Remove '?'" "true" +open class Foo() {} +class Bar() : Foo() {} \ No newline at end of file diff --git a/idea/testData/quickfix/nullables/afterRemoveSupertypeNullable2.kt b/idea/testData/quickfix/nullables/afterRemoveSupertypeNullable2.kt new file mode 100644 index 00000000000..bc0baf2a8c7 --- /dev/null +++ b/idea/testData/quickfix/nullables/afterRemoveSupertypeNullable2.kt @@ -0,0 +1,3 @@ +// "Remove '?'" "true" +trait Foo {} +class Bar : Foo {} \ No newline at end of file diff --git a/idea/testData/quickfix/nullables/beforeRemoveSupertypeNullable1.kt b/idea/testData/quickfix/nullables/beforeRemoveSupertypeNullable1.kt new file mode 100644 index 00000000000..dea659ec1de --- /dev/null +++ b/idea/testData/quickfix/nullables/beforeRemoveSupertypeNullable1.kt @@ -0,0 +1,3 @@ +// "Remove '?'" "true" +open class Foo() {} +class Bar() : Foo?() {} \ No newline at end of file diff --git a/idea/testData/quickfix/nullables/beforeRemoveSupertypeNullable2.kt b/idea/testData/quickfix/nullables/beforeRemoveSupertypeNullable2.kt new file mode 100644 index 00000000000..98eeb198fbb --- /dev/null +++ b/idea/testData/quickfix/nullables/beforeRemoveSupertypeNullable2.kt @@ -0,0 +1,3 @@ +// "Remove '?'" "true" +trait Foo {} +class Bar : Foo? {} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/jet/plugin/quickfix/QuickFixTestGenerated.java b/idea/tests/org/jetbrains/jet/plugin/quickfix/QuickFixTestGenerated.java index a91e52acd8d..78bd2cba92e 100644 --- a/idea/tests/org/jetbrains/jet/plugin/quickfix/QuickFixTestGenerated.java +++ b/idea/tests/org/jetbrains/jet/plugin/quickfix/QuickFixTestGenerated.java @@ -541,6 +541,16 @@ public class QuickFixTestGenerated extends AbstractQuickFixTest { doTest("idea/testData/quickfix/nullables/beforeRemoveRedundantNullable.kt"); } + @TestMetadata("beforeRemoveSupertypeNullable1.kt") + public void testRemoveSupertypeNullable1() throws Exception { + doTest("idea/testData/quickfix/nullables/beforeRemoveSupertypeNullable1.kt"); + } + + @TestMetadata("beforeRemoveSupertypeNullable2.kt") + public void testRemoveSupertypeNullable2() throws Exception { + doTest("idea/testData/quickfix/nullables/beforeRemoveSupertypeNullable2.kt"); + } + } @TestMetadata("idea/testData/quickfix/override")