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(TRAIT_CAN_NOT_BE_FINAL, removeFinalModifierFactory);
|
||||||
factories.put(REDUNDANT_PROJECTION, RemoveModifierFix.createRemoveProjectionFactory());
|
factories.put(REDUNDANT_PROJECTION, RemoveModifierFix.createRemoveProjectionFactory());
|
||||||
factories.put(INCOMPATIBLE_MODIFIERS, RemoveModifierFix.createRemoveModifierFactory(false));
|
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);
|
JetIntentionActionFactory removeOpenModifierFactory = RemoveModifierFix.createRemoveModifierFromListOwnerFactory(OPEN_KEYWORD);
|
||||||
factories.put(NON_FINAL_MEMBER_IN_FINAL_CLASS, AddModifierFix.createFactory(OPEN_KEYWORD, JetClass.class));
|
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.diagnostics.Diagnostic;
|
||||||
import org.jetbrains.jet.lang.psi.JetModifierList;
|
import org.jetbrains.jet.lang.psi.JetModifierList;
|
||||||
import org.jetbrains.jet.lang.psi.JetModifierListOwner;
|
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.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.JetKeywordToken;
|
||||||
import org.jetbrains.jet.lexer.JetToken;
|
import org.jetbrains.jet.lexer.JetToken;
|
||||||
import org.jetbrains.jet.lexer.JetTokens;
|
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");
|
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")
|
@TestMetadata("idea/testData/quickfix/uselessImports")
|
||||||
|
|||||||
Reference in New Issue
Block a user