diff --git a/python/src/com/jetbrains/python/inspections/PyUnusedLocalInspectionVisitor.java b/python/src/com/jetbrains/python/inspections/PyUnusedLocalInspectionVisitor.java index 968a723045f8..a025521bc240 100644 --- a/python/src/com/jetbrains/python/inspections/PyUnusedLocalInspectionVisitor.java +++ b/python/src/com/jetbrains/python/inspections/PyUnusedLocalInspectionVisitor.java @@ -297,9 +297,18 @@ public class PyUnusedLocalInspectionVisitor extends PyInspectionVisitor { } } } - final LocalQuickFix[] fixes = mayBeField - ? new LocalQuickFix[] { new AddFieldQuickFix(name, name, containingClass.getName()) } - : new LocalQuickFix[] { new PyRemoveParameterQuickFix() }; + boolean canRemove = !(PsiTreeUtil.getPrevSiblingOfType(element, PyParameter.class) instanceof PySingleStarParameter); + + final LocalQuickFix[] fixes; + if (mayBeField) { + fixes = new LocalQuickFix[]{new AddFieldQuickFix(name, name, containingClass.getName())}; + } + else if (canRemove) { + fixes = new LocalQuickFix[]{new PyRemoveParameterQuickFix()}; + } + else { + fixes = LocalQuickFix.EMPTY_ARRAY; + } registerWarning(element, PyBundle.message("INSP.unused.locals.parameter.isnot.used", name), fixes); } else { diff --git a/python/testData/quickFixes/PyRemoveParameterQuickFixTest/singleStar.py b/python/testData/quickFixes/PyRemoveParameterQuickFixTest/singleStar.py new file mode 100644 index 000000000000..5d9d0543244f --- /dev/null +++ b/python/testData/quickFixes/PyRemoveParameterQuickFixTest/singleStar.py @@ -0,0 +1,2 @@ +def f1(*, up): + pass \ No newline at end of file diff --git a/python/testSrc/com/jetbrains/python/quickFixes/PyRemoveParameterQuickFixTest.java b/python/testSrc/com/jetbrains/python/quickFixes/PyRemoveParameterQuickFixTest.java index 32fc35d31e11..721ecc4d03b8 100644 --- a/python/testSrc/com/jetbrains/python/quickFixes/PyRemoveParameterQuickFixTest.java +++ b/python/testSrc/com/jetbrains/python/quickFixes/PyRemoveParameterQuickFixTest.java @@ -15,10 +15,13 @@ */ package com.jetbrains.python.quickFixes; +import com.intellij.codeInsight.intention.IntentionAction; import com.intellij.testFramework.TestDataPath; import com.jetbrains.python.PyBundle; import com.jetbrains.python.PyQuickFixTestCase; import com.jetbrains.python.inspections.PyUnusedLocalInspection; +import com.jetbrains.python.psi.LanguageLevel; +import com.jetbrains.python.psi.impl.PythonLanguageLevelPusher; @TestDataPath("$CONTENT_ROOT/../testData//quickFixes/PyRemoveParameterQuickFixTest/") public class PyRemoveParameterQuickFixTest extends PyQuickFixTestCase { @@ -34,4 +37,20 @@ public class PyRemoveParameterQuickFixTest extends PyQuickFixTestCase { public void testDocstring() { doQuickFixTest(PyUnusedLocalInspection.class, PyBundle.message("QFIX.NAME.remove.parameter")); } + + public void testSingleStar() { + PythonLanguageLevelPusher.setForcedLanguageLevel(myFixture.getProject(), LanguageLevel.PYTHON33); + try { + final String testFileName = getTestName(true); + myFixture.enableInspections(PyUnusedLocalInspection.class); + myFixture.configureByFile(testFileName + ".py"); + myFixture.checkHighlighting(true, false, false); + final IntentionAction intentionAction = myFixture.getAvailableIntention(PyBundle.message("QFIX.NAME.remove.parameter")); + assertNull(intentionAction); + } + finally { + PythonLanguageLevelPusher.setForcedLanguageLevel(myFixture.getProject(), null); + } + + } }