diff --git a/idea/src/org/jetbrains/jet/plugin/JetBundle.properties b/idea/src/org/jetbrains/jet/plugin/JetBundle.properties index 1565caf6c05..ca3baf69497 100644 --- a/idea/src/org/jetbrains/jet/plugin/JetBundle.properties +++ b/idea/src/org/jetbrains/jet/plugin/JetBundle.properties @@ -29,6 +29,7 @@ remove.cast=Remove cast remove.elvis.operator=Remove elvis operator remove.redundant.nullable=Remove redundant '?' remove.supertype.nullable=Remove '?' +remove.type.arguments=Remove type arguments remove.useless.nullable=Remove useless '?' remove.nullable.family=Remove '?' remove.spread.sign=Remove '*' diff --git a/idea/src/org/jetbrains/jet/plugin/quickfix/QuickFixes.java b/idea/src/org/jetbrains/jet/plugin/quickfix/QuickFixes.java index 9a7c837c5fa..ca38321cbf3 100644 --- a/idea/src/org/jetbrains/jet/plugin/quickfix/QuickFixes.java +++ b/idea/src/org/jetbrains/jet/plugin/quickfix/QuickFixes.java @@ -21,7 +21,6 @@ import com.google.common.collect.Multimap; import com.intellij.codeInsight.intention.IntentionAction; import org.jetbrains.jet.lang.diagnostics.AbstractDiagnosticFactory; import org.jetbrains.jet.lang.psi.JetClass; -import org.jetbrains.jet.plugin.JetBundle; import org.jetbrains.jet.plugin.codeInsight.ImplementMethodsHandler; import java.util.Collection; @@ -184,6 +183,8 @@ public class QuickFixes { factories.put(NO_TYPE_ARGUMENTS_ON_RHS_OF_IS_EXPRESSION, AddStarProjectionsFix.createFactoryForIsExpression()); factories.put(WRONG_NUMBER_OF_TYPE_ARGUMENTS, AddStarProjectionsFix.createFactoryForJavaClass()); + factories.put(TYPE_ARGUMENTS_REDUNDANT_IN_SUPER_QUALIFIER, RemoveTypeArgumentsFix.createFactory()); + JetIntentionActionFactory changeToStarProjectionFactory = ChangeToStarProjectionFix.createFactory(); factories.put(UNCHECKED_CAST, changeToStarProjectionFactory); factories.put(CANNOT_CHECK_FOR_ERASED, changeToStarProjectionFactory); diff --git a/idea/src/org/jetbrains/jet/plugin/quickfix/RemoveTypeArgumentsFix.java b/idea/src/org/jetbrains/jet/plugin/quickfix/RemoveTypeArgumentsFix.java new file mode 100644 index 00000000000..efd2e979e70 --- /dev/null +++ b/idea/src/org/jetbrains/jet/plugin/quickfix/RemoveTypeArgumentsFix.java @@ -0,0 +1,63 @@ +/* + * Copyright 2010-2013 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jetbrains.jet.plugin.quickfix; + +import com.intellij.openapi.editor.Editor; +import com.intellij.openapi.project.Project; +import com.intellij.psi.PsiFile; +import com.intellij.util.IncorrectOperationException; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.jet.lang.diagnostics.Diagnostic; +import org.jetbrains.jet.lang.psi.JetTypeArgumentList; +import org.jetbrains.jet.plugin.JetBundle; + +public class RemoveTypeArgumentsFix extends JetIntentionAction { + private final JetTypeArgumentList typeArgList; + + public RemoveTypeArgumentsFix(@NotNull JetTypeArgumentList element) { + super(element); + typeArgList = element; + } + + @NotNull + @Override + public String getText() { + return JetBundle.message("remove.type.arguments"); + } + + @NotNull + @Override + public String getFamilyName() { + return JetBundle.message("remove.type.arguments"); + } + + @Override + public void invoke(@NotNull Project project, Editor editor, PsiFile file) throws IncorrectOperationException { + typeArgList.delete(); + } + + public static JetIntentionActionFactory createFactory() { + return new JetIntentionActionFactory() { + @Override + public JetIntentionAction createAction(Diagnostic diagnostic) { + JetTypeArgumentList element = QuickFixUtil.getParentElementOfType(diagnostic, JetTypeArgumentList.class); + if (element == null) return null; + return new RemoveTypeArgumentsFix(element); + } + }; + } +} \ No newline at end of file diff --git a/idea/testData/quickfix/supercalls/afterTypeArgumentsRedundantInSuperQualifier.kt b/idea/testData/quickfix/supercalls/afterTypeArgumentsRedundantInSuperQualifier.kt new file mode 100644 index 00000000000..917da27869a --- /dev/null +++ b/idea/testData/quickfix/supercalls/afterTypeArgumentsRedundantInSuperQualifier.kt @@ -0,0 +1,10 @@ +// "Remove type arguments" "true" +trait Foo { + fun f() {} +} + +class Bar: Foo { + fun g() { + super>.f(); + } +} \ No newline at end of file diff --git a/idea/testData/quickfix/supercalls/beforeTypeArgumentsRedundantInSuperQualifier.kt b/idea/testData/quickfix/supercalls/beforeTypeArgumentsRedundantInSuperQualifier.kt new file mode 100644 index 00000000000..38c54874ba1 --- /dev/null +++ b/idea/testData/quickfix/supercalls/beforeTypeArgumentsRedundantInSuperQualifier.kt @@ -0,0 +1,10 @@ +// "Remove type arguments" "true" +trait Foo { + fun f() {} +} + +class Bar: Foo { + fun g() { + superBoolean>>.f(); + } +} \ 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 998debc1ae1..064fa629eb9 100644 --- a/idea/tests/org/jetbrains/jet/plugin/quickfix/QuickFixTestGenerated.java +++ b/idea/tests/org/jetbrains/jet/plugin/quickfix/QuickFixTestGenerated.java @@ -31,7 +31,7 @@ import org.jetbrains.jet.plugin.quickfix.AbstractQuickFixTest; /** This class is generated by {@link org.jetbrains.jet.generators.tests.GenerateTests}. DO NOT MODIFY MANUALLY */ @SuppressWarnings("all") @TestMetadata("idea/testData/quickfix") -@InnerTestClasses({QuickFixTestGenerated.Abstract.class, QuickFixTestGenerated.AddStarProjections.class, QuickFixTestGenerated.AutoImports.class, QuickFixTestGenerated.CheckArguments.class, QuickFixTestGenerated.Expressions.class, QuickFixTestGenerated.Migration.class, QuickFixTestGenerated.Modifiers.class, QuickFixTestGenerated.Nullables.class, QuickFixTestGenerated.Override.class, QuickFixTestGenerated.PlatformClasses.class, QuickFixTestGenerated.SupertypeInitialization.class, QuickFixTestGenerated.TypeAddition.class, QuickFixTestGenerated.TypeImports.class, QuickFixTestGenerated.TypeProjection.class, QuickFixTestGenerated.UselessImports.class, QuickFixTestGenerated.Variables.class, QuickFixTestGenerated.When.class}) +@InnerTestClasses({QuickFixTestGenerated.Abstract.class, QuickFixTestGenerated.AddStarProjections.class, QuickFixTestGenerated.AutoImports.class, QuickFixTestGenerated.CheckArguments.class, QuickFixTestGenerated.Expressions.class, QuickFixTestGenerated.Migration.class, QuickFixTestGenerated.Modifiers.class, QuickFixTestGenerated.Nullables.class, QuickFixTestGenerated.Override.class, QuickFixTestGenerated.PlatformClasses.class, QuickFixTestGenerated.Supercalls.class, QuickFixTestGenerated.SupertypeInitialization.class, QuickFixTestGenerated.TypeAddition.class, QuickFixTestGenerated.TypeImports.class, QuickFixTestGenerated.TypeProjection.class, QuickFixTestGenerated.UselessImports.class, QuickFixTestGenerated.Variables.class, QuickFixTestGenerated.When.class}) public class QuickFixTestGenerated extends AbstractQuickFixTest { public void testAllFilesPresentInQuickfix() throws Exception { JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.GenerateTests", new File("idea/testData/quickfix"), Pattern.compile("^before(\\w+)\\.kt$"), true); @@ -835,6 +835,19 @@ public class QuickFixTestGenerated extends AbstractQuickFixTest { } + @TestMetadata("idea/testData/quickfix/supercalls") + public static class Supercalls extends AbstractQuickFixTest { + public void testAllFilesPresentInSupercalls() throws Exception { + JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.GenerateTests", new File("idea/testData/quickfix/supercalls"), Pattern.compile("^before(\\w+)\\.kt$"), true); + } + + @TestMetadata("beforeTypeArgumentsRedundantInSuperQualifier.kt") + public void testTypeArgumentsRedundantInSuperQualifier() throws Exception { + doTest("idea/testData/quickfix/supercalls/beforeTypeArgumentsRedundantInSuperQualifier.kt"); + } + + } + @TestMetadata("idea/testData/quickfix/supertypeInitialization") public static class SupertypeInitialization extends AbstractQuickFixTest { public void testAllFilesPresentInSupertypeInitialization() throws Exception { @@ -1161,6 +1174,7 @@ public class QuickFixTestGenerated extends AbstractQuickFixTest { suite.addTest(Nullables.innerSuite()); suite.addTest(Override.innerSuite()); suite.addTestSuite(PlatformClasses.class); + suite.addTestSuite(Supercalls.class); suite.addTestSuite(SupertypeInitialization.class); suite.addTestSuite(TypeAddition.class); suite.addTestSuite(TypeImports.class);