diff --git a/python/python-psi-impl/src/com/jetbrains/python/inspections/PyDocstringTypesInspection.java b/python/python-psi-impl/src/com/jetbrains/python/inspections/PyDocstringTypesInspection.java index 68863e724a52..3d734276fc8e 100644 --- a/python/python-psi-impl/src/com/jetbrains/python/inspections/PyDocstringTypesInspection.java +++ b/python/python-psi-impl/src/com/jetbrains/python/inspections/PyDocstringTypesInspection.java @@ -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()); } diff --git a/python/python-psi-impl/src/com/jetbrains/python/inspections/quickfix/PyMoveAttributeToInitQuickFix.java b/python/python-psi-impl/src/com/jetbrains/python/inspections/quickfix/PyMoveAttributeToInitQuickFix.java index a877e81dc705..1f63b7d14e2b 100644 --- a/python/python-psi-impl/src/com/jetbrains/python/inspections/quickfix/PyMoveAttributeToInitQuickFix.java +++ b/python/python-psi-impl/src/com/jetbrains/python/inspections/quickfix/PyMoveAttributeToInitQuickFix.java @@ -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) {