mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Migrate AddFixtureToFuncParametersQuickFix and PyUnpackTypeVarTupleQuickFix to ModCommand
PY-65297 GitOrigin-RevId: 2695f20eb27475245fb48a93c5ee874041e54463
This commit is contained in:
committed by
intellij-monorepo-bot
parent
abed593937
commit
4d1b5b0bd0
+8
-11
@@ -1,7 +1,7 @@
|
||||
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.intellij.psi.PsiFile;
|
||||
@@ -13,7 +13,7 @@ import com.jetbrains.python.psi.PyExpression;
|
||||
import com.jetbrains.python.psi.PyExpressionStatement;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class PyUnpackTypeVarTupleQuickFix implements LocalQuickFix {
|
||||
public class PyUnpackTypeVarTupleQuickFix extends PsiUpdateModCommandQuickFix {
|
||||
@Override
|
||||
@NotNull
|
||||
public String getFamilyName() {
|
||||
@@ -35,21 +35,18 @@ public class PyUnpackTypeVarTupleQuickFix implements LocalQuickFix {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void applyFix(@NotNull Project project, @NotNull ProblemDescriptor descriptor) {
|
||||
PsiElement psiElement = descriptor.getPsiElement();
|
||||
if (psiElement == null) return;
|
||||
|
||||
var languageLevel = LanguageLevel.forElement(psiElement);
|
||||
public void applyFix(@NotNull Project project, @NotNull PsiElement element, @NotNull ModPsiUpdater updater) {
|
||||
var languageLevel = LanguageLevel.forElement(element);
|
||||
PyElementGenerator elementGenerator = PyElementGenerator.getInstance(project);
|
||||
|
||||
if (languageLevel.isAtLeast(LanguageLevel.PYTHON311)) {
|
||||
String starred = "*" + psiElement.getText();
|
||||
String starred = "*" + element.getText();
|
||||
PyExpressionStatement expressionStatement = elementGenerator.createFromText(languageLevel, PyExpressionStatement.class, starred);
|
||||
PyExpression newElement = expressionStatement.getExpression();
|
||||
psiElement.replace(newElement);
|
||||
element.replace(newElement);
|
||||
}
|
||||
else {
|
||||
replaceToTypingExtensionsUnpack(psiElement, psiElement, psiElement.getContainingFile(), project);
|
||||
replaceToTypingExtensionsUnpack(element, element, element.getContainingFile(), project);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+10
-9
@@ -1,18 +1,19 @@
|
||||
// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package com.jetbrains.python.testing.pyTestFixtures
|
||||
|
||||
import com.intellij.codeInspection.*
|
||||
import com.intellij.codeInspection.LocalInspectionToolSession
|
||||
import com.intellij.codeInspection.ProblemHighlightType
|
||||
import com.intellij.codeInspection.ProblemsHolder
|
||||
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.PsiElementVisitor
|
||||
import com.intellij.psi.util.findParentOfType
|
||||
import com.jetbrains.python.PyPsiBundle
|
||||
import com.jetbrains.python.inspections.PyInspection
|
||||
import com.jetbrains.python.inspections.PyInspectionVisitor
|
||||
import com.jetbrains.python.psi.PyDecorator
|
||||
import com.jetbrains.python.psi.PyElementGenerator
|
||||
import com.jetbrains.python.psi.PyFunction
|
||||
import com.jetbrains.python.psi.PyReferenceExpression
|
||||
import com.jetbrains.python.psi.PyStringLiteralExpression
|
||||
import com.jetbrains.python.psi.*
|
||||
import com.jetbrains.python.psi.types.PyFunctionType
|
||||
import com.jetbrains.python.psi.types.TypeEvalContext
|
||||
|
||||
@@ -86,11 +87,11 @@ class PyTestUnpassedFixtureInspection : PyInspection() {
|
||||
}
|
||||
}
|
||||
|
||||
private inner class AddFixtureToFuncParametersQuickFix : LocalQuickFix {
|
||||
private inner class AddFixtureToFuncParametersQuickFix : PsiUpdateModCommandQuickFix() {
|
||||
override fun getFamilyName() = PyPsiBundle.message("QFIX.add.fixture.to.test.function.parameters.list")
|
||||
|
||||
override fun applyFix(project: Project, descriptor: ProblemDescriptor) {
|
||||
val element = descriptor.psiElement as? PyReferenceExpression ?: return
|
||||
override fun applyFix(project: Project, element: PsiElement, updater: ModPsiUpdater) {
|
||||
if (element !is PyReferenceExpression) return
|
||||
val newParameter = PyElementGenerator.getInstance(project).createParameter(element.text)
|
||||
findTestFunc(element)?.parameterList?.addParameter(newParameter)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user