Added quickfix for VARIANCE_ON_TYPE_PARAMETER_OF_FUNCTION_OR_PROPERTY.
This commit is contained in:
committed by
Andrey Breslav
parent
e96d8ef475
commit
cf87f55085
@@ -104,6 +104,7 @@ public class QuickFixes {
|
||||
factories.put(TRAIT_CAN_NOT_BE_FINAL, removeFinalModifierFactory);
|
||||
factories.put(REDUNDANT_PROJECTION, RemoveModifierFix.createRemoveProjectionFactory());
|
||||
factories.put(INCOMPATIBLE_MODIFIERS, RemoveModifierFix.createRemoveModifierFactory(false));
|
||||
factories.put(VARIANCE_ON_TYPE_PARAMETER_OF_FUNCTION_OR_PROPERTY, RemoveModifierFix.createRemoveVarianceFactory());
|
||||
|
||||
JetIntentionActionFactory removeOpenModifierFactory = RemoveModifierFix.createRemoveModifierFromListOwnerFactory(OPEN_KEYWORD);
|
||||
factories.put(NON_FINAL_MEMBER_IN_FINAL_CLASS, AddModifierFix.createFactory(OPEN_KEYWORD, JetClass.class));
|
||||
|
||||
@@ -29,7 +29,10 @@ import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jet.lang.diagnostics.Diagnostic;
|
||||
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;
|
||||
import org.jetbrains.jet.lexer.JetTokens;
|
||||
@@ -153,4 +156,31 @@ public class RemoveModifierFix extends JetIntentionAction<JetModifierListOwner>
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
public static JetIntentionActionFactory createRemoveVarianceFactory() {
|
||||
return new JetIntentionActionFactory() {
|
||||
@Nullable
|
||||
@Override
|
||||
public JetIntentionAction<JetModifierListOwner> createAction(Diagnostic diagnostic) {
|
||||
JetModifierListOwner modifierListOwner = QuickFixUtil.getParentElementOfType(diagnostic, JetModifierListOwner.class);
|
||||
if (modifierListOwner == null) return null;
|
||||
PsiElement psiElement = diagnostic.getPsiElement();
|
||||
if (!(psiElement instanceof JetTypeParameter)) return null;
|
||||
JetTypeParameter parameter = (JetTypeParameter) psiElement;
|
||||
Variance variance = parameter.getVariance();
|
||||
JetKeywordToken modifier;
|
||||
switch (variance) {
|
||||
case IN_VARIANCE:
|
||||
modifier = JetTokens.IN_KEYWORD;
|
||||
break;
|
||||
case OUT_VARIANCE:
|
||||
modifier = JetTokens.OUT_KEYWORD;
|
||||
break;
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
return new RemoveModifierFix(modifierListOwner, modifier, false);
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
// "Remove 'out' modifier" "true"
|
||||
fun foo<String>() { }
|
||||
@@ -0,0 +1,2 @@
|
||||
// "Remove 'out' modifier" "true"
|
||||
fun foo<out<caret> String>() { }
|
||||
@@ -683,6 +683,11 @@ public class QuickFixTestGenerated extends AbstractQuickFixTest {
|
||||
doTest("idea/testData/quickfix/typeProjection/beforeRemoveRedundantProjection2.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("beforeRemoveVariance.kt")
|
||||
public void testRemoveVariance() throws Exception {
|
||||
doTest("idea/testData/quickfix/typeProjection/beforeRemoveVariance.kt");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@TestMetadata("idea/testData/quickfix/uselessImports")
|
||||
|
||||
Reference in New Issue
Block a user