diff --git a/idea/src/org/jetbrains/jet/plugin/quickfix/QuickFixes.java b/idea/src/org/jetbrains/jet/plugin/quickfix/QuickFixes.java index 09372bc9c71..868ad7e50d2 100644 --- a/idea/src/org/jetbrains/jet/plugin/quickfix/QuickFixes.java +++ b/idea/src/org/jetbrains/jet/plugin/quickfix/QuickFixes.java @@ -104,7 +104,7 @@ public class QuickFixes { factories.put(ABSTRACT_MODIFIER_IN_TRAIT, RemoveModifierFix.createRemoveModifierFromListOwnerFactory(ABSTRACT_KEYWORD, true)); factories.put(OPEN_MODIFIER_IN_TRAIT, RemoveModifierFix.createRemoveModifierFromListOwnerFactory(OPEN_KEYWORD, true)); factories.put(TRAIT_CAN_NOT_BE_FINAL, removeFinalModifierFactory); - factories.put(REDUNDANT_PROJECTION, RemoveModifierFix.createRemoveProjectionFactory()); + factories.put(REDUNDANT_PROJECTION, RemoveModifierFix.createRemoveProjectionFactory(true)); factories.put(INCOMPATIBLE_MODIFIERS, RemoveModifierFix.createRemoveModifierFactory(false)); factories.put(VARIANCE_ON_TYPE_PARAMETER_OF_FUNCTION_OR_PROPERTY, RemoveModifierFix.createRemoveVarianceFactory()); @@ -202,6 +202,8 @@ public class QuickFixes { factories.put(NESTED_CLASS_NOT_ALLOWED, AddModifierFix.createFactory(INNER_KEYWORD)); + factories.put(CONFLICTING_PROJECTION, RemoveModifierFix.createRemoveProjectionFactory(false)); + factories.put(NOT_AN_ANNOTATION_CLASS, MakeClassAnAnnotationClassFix.createFactory()); factories.put(DANGLING_FUNCTION_LITERAL_ARGUMENT_SUSPECTED, AddSemicolonAfterFunctionCallFix.createFactory()); diff --git a/idea/src/org/jetbrains/jet/plugin/quickfix/RemoveModifierFix.java b/idea/src/org/jetbrains/jet/plugin/quickfix/RemoveModifierFix.java index 3355b0a2d02..6dfe9a14c17 100644 --- a/idea/src/org/jetbrains/jet/plugin/quickfix/RemoveModifierFix.java +++ b/idea/src/org/jetbrains/jet/plugin/quickfix/RemoveModifierFix.java @@ -31,7 +31,6 @@ import org.jetbrains.jet.lang.psi.JetModifierList; import org.jetbrains.jet.lang.psi.JetModifierListOwner; import org.jetbrains.jet.lang.psi.JetTypeParameter; import org.jetbrains.jet.lang.psi.JetTypeProjection; -import org.jetbrains.jet.lang.psi.stubs.elements.JetTypeParameterElementType; import org.jetbrains.jet.lang.types.Variance; import org.jetbrains.jet.lexer.JetKeywordToken; import org.jetbrains.jet.lexer.JetToken; @@ -140,7 +139,7 @@ public class RemoveModifierFix extends JetIntentionAction }; } - public static JetIntentionActionFactory createRemoveProjectionFactory() { + public static JetIntentionActionFactory createRemoveProjectionFactory(final boolean isRedundant) { return new JetIntentionActionFactory() { @Nullable @Override @@ -152,7 +151,7 @@ public class RemoveModifierFix extends JetIntentionAction IElementType elementType = projectionAstNode.getElementType(); if (!(elementType instanceof JetKeywordToken)) return null; JetKeywordToken variance = (JetKeywordToken) elementType; - return new RemoveModifierFix(projection, variance, true); + return new RemoveModifierFix(projection, variance, isRedundant); } }; } diff --git a/idea/testData/quickfix/typeProjection/afterConflictingProjection.kt b/idea/testData/quickfix/typeProjection/afterConflictingProjection.kt new file mode 100644 index 00000000000..a35ff898abf --- /dev/null +++ b/idea/testData/quickfix/typeProjection/afterConflictingProjection.kt @@ -0,0 +1,4 @@ +// "Remove 'in' modifier" "true" +class Foo {} + +fun bar(x : Foo) {} diff --git a/idea/testData/quickfix/typeProjection/beforeConflictingProjection.kt b/idea/testData/quickfix/typeProjection/beforeConflictingProjection.kt new file mode 100644 index 00000000000..2fd88191dda --- /dev/null +++ b/idea/testData/quickfix/typeProjection/beforeConflictingProjection.kt @@ -0,0 +1,4 @@ +// "Remove 'in' modifier" "true" +class Foo {} + +fun bar(x : Foo<in Any>) {}