Migrate ReplaceFunctionWithSetLiteralQuickFix and ReplaceListComprehensionsQuickFix to ModCommand

PY-65297

GitOrigin-RevId: c5cd524b2c845f45267fa2820d0a4793c132f403
This commit is contained in:
Georgii Ustinov
2024-01-04 15:58:15 +02:00
committed by intellij-monorepo-bot
parent 2fffdde734
commit c90238e42d
2 changed files with 14 additions and 15 deletions

View File

@@ -15,8 +15,8 @@
*/
package com.jetbrains.python.inspections.quickfix;
import com.intellij.codeInspection.LocalQuickFix;
import com.intellij.codeInspection.ProblemDescriptor;
import com.intellij.modcommand.ModPsiUpdater;
import com.intellij.modcommand.PsiUpdateModCommandQuickFix;
import com.intellij.openapi.project.Project;
import com.intellij.psi.PsiElement;
import com.jetbrains.python.PyPsiBundle;
@@ -29,7 +29,7 @@ import org.jetbrains.annotations.NotNull;
* Quick Fix to replace function call of built-in function "set" with
* set literal if applicable
*/
public class ReplaceFunctionWithSetLiteralQuickFix implements LocalQuickFix {
public class ReplaceFunctionWithSetLiteralQuickFix extends PsiUpdateModCommandQuickFix {
@Override
@NotNull
public String getFamilyName() {
@@ -37,10 +37,9 @@ public class ReplaceFunctionWithSetLiteralQuickFix implements LocalQuickFix {
}
@Override
public void applyFix(@NotNull Project project, @NotNull ProblemDescriptor descriptor) {
PyElement[] elements = PySetFunctionToLiteralInspection.getSetCallArguments((PyCallExpression)descriptor.getPsiElement());
public void applyFix(@NotNull Project project, @NotNull PsiElement element, @NotNull ModPsiUpdater updater) {
PyElement[] elements = PySetFunctionToLiteralInspection.getSetCallArguments((PyCallExpression)element);
PyElementGenerator elementGenerator = PyElementGenerator.getInstance(project);
PsiElement functionCall = descriptor.getPsiElement();
StringBuilder str = new StringBuilder("{");
for (int i = 0; i != elements.length; ++i) {
PyElement e = elements[i];
@@ -49,7 +48,7 @@ public class ReplaceFunctionWithSetLiteralQuickFix implements LocalQuickFix {
str.append(", ");
}
str.append("}");
functionCall.replace(elementGenerator.createFromText(LanguageLevel.forElement(functionCall), PyExpressionStatement.class,
element.replace(elementGenerator.createFromText(LanguageLevel.forElement(element), PyExpressionStatement.class,
str.toString()).getExpression());
}
}

View File

@@ -15,8 +15,9 @@
*/
package com.jetbrains.python.inspections.quickfix;
import com.intellij.codeInspection.LocalQuickFix;
import com.intellij.codeInspection.ProblemDescriptor;
import com.intellij.modcommand.ModPsiUpdater;
import com.intellij.modcommand.PsiUpdateModCommandQuickFix;
import com.intellij.openapi.project.Project;
import com.intellij.psi.PsiElement;
import com.jetbrains.python.PyPsiBundle;
@@ -26,7 +27,7 @@ import com.jetbrains.python.psi.PyExpressionStatement;
import com.jetbrains.python.psi.PyTupleExpression;
import org.jetbrains.annotations.NotNull;
public class ReplaceListComprehensionsQuickFix implements LocalQuickFix {
public class ReplaceListComprehensionsQuickFix extends PsiUpdateModCommandQuickFix {
@NotNull
@Override
public String getFamilyName() {
@@ -34,13 +35,12 @@ public class ReplaceListComprehensionsQuickFix implements LocalQuickFix {
}
@Override
public void applyFix(@NotNull Project project, @NotNull ProblemDescriptor descriptor) {
PsiElement expression = descriptor.getPsiElement();
if (expression instanceof PyTupleExpression) {
public void applyFix(@NotNull Project project, @NotNull PsiElement element, @NotNull ModPsiUpdater updater) {
if (element instanceof PyTupleExpression) {
PyElementGenerator elementGenerator = PyElementGenerator.getInstance(project);
PyExpressionStatement statement = elementGenerator.createFromText(LanguageLevel.forElement(expression), PyExpressionStatement.class,
"(" + expression.getText() + ")");
expression.replace(statement.getExpression());
PyExpressionStatement statement = elementGenerator.createFromText(LanguageLevel.forElement(element), PyExpressionStatement.class,
"(" + element.getText() + ")");
element.replace(statement.getExpression());
}
}
}