mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Migrate ChangeTypeQuickFix and PyMoveAttributeToInitQuickFix to ModCommand
PY-65297 GitOrigin-RevId: 52f681116076ee12e18d24e19a6c1383a53b3d31
This commit is contained in:
committed by
intellij-monorepo-bot
parent
eb35f95a8d
commit
050cc32fec
+5
-4
@@ -2,6 +2,8 @@
|
||||
package com.jetbrains.python.inspections;
|
||||
|
||||
import com.intellij.codeInspection.*;
|
||||
import com.intellij.modcommand.ModPsiUpdater;
|
||||
import com.intellij.modcommand.PsiUpdateModCommandQuickFix;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.NlsSafe;
|
||||
import com.intellij.psi.PsiElement;
|
||||
@@ -121,9 +123,8 @@ public final class PyDocstringTypesInspection extends PyInspection {
|
||||
}
|
||||
|
||||
|
||||
private static final class ChangeTypeQuickFix implements LocalQuickFix {
|
||||
private static final class ChangeTypeQuickFix extends PsiUpdateModCommandQuickFix {
|
||||
private final String myParamName;
|
||||
@SafeFieldForPreview
|
||||
private final Substring myTypeSubstring;
|
||||
private final String myNewType;
|
||||
|
||||
@@ -146,12 +147,12 @@ public final class PyDocstringTypesInspection extends PyInspection {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void applyFix(@NotNull Project project, @NotNull ProblemDescriptor descriptor) {
|
||||
public void applyFix(@NotNull Project project, @NotNull PsiElement element, @NotNull ModPsiUpdater updater) {
|
||||
String newValue = myTypeSubstring.getTextRange().replace(myTypeSubstring.getSuperString(), myNewType);
|
||||
|
||||
PyElementGenerator elementGenerator = PyElementGenerator.getInstance(project);
|
||||
|
||||
final PyStringLiteralExpression stringLiteralExpression = as(descriptor.getPsiElement(), PyStringLiteralExpression.class);
|
||||
final PyStringLiteralExpression stringLiteralExpression = as(updater, PyStringLiteralExpression.class);
|
||||
if (stringLiteralExpression != null) {
|
||||
stringLiteralExpression.replace(elementGenerator.createDocstring(newValue).getExpression());
|
||||
}
|
||||
|
||||
+6
-18
@@ -1,10 +1,8 @@
|
||||
// Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
||||
package com.jetbrains.python.inspections.quickfix;
|
||||
|
||||
import com.intellij.codeInsight.FileModificationService;
|
||||
import com.intellij.codeInspection.LocalQuickFix;
|
||||
import com.intellij.codeInspection.ProblemDescriptor;
|
||||
import com.intellij.openapi.application.WriteAction;
|
||||
import com.intellij.modcommand.ModPsiUpdater;
|
||||
import com.intellij.modcommand.PsiUpdateModCommandQuickFix;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
@@ -15,7 +13,7 @@ import com.jetbrains.python.psi.PyStatementList;
|
||||
import com.jetbrains.python.psi.PyTargetExpression;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class PyMoveAttributeToInitQuickFix implements LocalQuickFix {
|
||||
public class PyMoveAttributeToInitQuickFix extends PsiUpdateModCommandQuickFix {
|
||||
|
||||
public PyMoveAttributeToInitQuickFix() {
|
||||
}
|
||||
@@ -27,25 +25,15 @@ public class PyMoveAttributeToInitQuickFix implements LocalQuickFix {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void applyFix(@NotNull final Project project, @NotNull final ProblemDescriptor descriptor) {
|
||||
final PsiElement element = descriptor.getPsiElement();
|
||||
public void applyFix(@NotNull final Project project, @NotNull final PsiElement element, @NotNull ModPsiUpdater updater) {
|
||||
if (!(element instanceof PyTargetExpression targetExpression)) return;
|
||||
|
||||
final PyClass containingClass = targetExpression.getContainingClass();
|
||||
final PyAssignmentStatement assignment = PsiTreeUtil.getParentOfType(element, PyAssignmentStatement.class);
|
||||
if (containingClass == null || assignment == null) return;
|
||||
|
||||
if (!FileModificationService.getInstance().preparePsiElementForWrite(containingClass)) return;
|
||||
|
||||
WriteAction.run(() -> {
|
||||
AddFieldQuickFix.addFieldToInit(project, containingClass, ((PyTargetExpression)element).getName(), x -> assignment);
|
||||
removeDefinition(assignment);
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean startInWriteAction() {
|
||||
return false;
|
||||
AddFieldQuickFix.addFieldToInit(project, containingClass, ((PyTargetExpression)element).getName(), x -> assignment);
|
||||
removeDefinition(assignment);
|
||||
}
|
||||
|
||||
private static void removeDefinition(PyAssignmentStatement assignment) {
|
||||
|
||||
Reference in New Issue
Block a user