diff --git a/python/src/com/jetbrains/python/inspections/PyUnnecessaryBackslashInspection.java b/python/src/com/jetbrains/python/inspections/PyUnnecessaryBackslashInspection.java index 2304e339dc10..fb10eb48e699 100644 --- a/python/src/com/jetbrains/python/inspections/PyUnnecessaryBackslashInspection.java +++ b/python/src/com/jetbrains/python/inspections/PyUnnecessaryBackslashInspection.java @@ -5,8 +5,8 @@ import com.intellij.codeInspection.ProblemsHolder; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiElementVisitor; import com.intellij.psi.PsiWhiteSpace; +import com.intellij.psi.search.PsiElementProcessor; import com.intellij.psi.util.PsiTreeUtil; -import com.intellij.util.containers.Stack; import com.jetbrains.python.PyBundle; import com.jetbrains.python.actions.RemoveUnnecessaryBackslashQuickFix; import com.jetbrains.python.psi.*; @@ -53,17 +53,7 @@ public class PyUnnecessaryBackslashInspection extends PyInspection { @Override public void visitPyParenthesizedExpression(final PyParenthesizedExpression expression) { - Stack stack = new Stack(); - stack.push(expression.getContainedExpression()); - while (!stack.isEmpty()) { - PsiElement element = stack.pop(); - findProblem(element); - if (element != null) { - for (PsiElement psiElement : element.getChildren()) { - stack.push(psiElement); - } - } - } + findProblem(expression); } @Override @@ -92,14 +82,15 @@ public class PyUnnecessaryBackslashInspection extends PyInspection { } private void findProblem(@Nullable final PsiElement expression) { - PsiWhiteSpace[] children = PsiTreeUtil.getChildrenOfType(expression, PsiWhiteSpace.class); - if (children != null) { - for (PsiWhiteSpace ws : children) { - if (ws.getText().contains("\\")) { + PsiTreeUtil.processElements(expression, new PsiElementProcessor() { + @Override + public boolean execute(@NotNull PsiElement ws) { + if (ws instanceof PsiWhiteSpace && ws.getText().contains("\\")) { registerProblem(ws, "Unnecessary backslash in expression.", new RemoveUnnecessaryBackslashQuickFix()); } + return true; } - } + }); } } } diff --git a/python/testData/inspections/PyUnnecessaryBackslashInspection/test.py b/python/testData/inspections/PyUnnecessaryBackslashInspection/test.py index 6b5297eb39c5..ad17263a9451 100644 --- a/python/testData/inspections/PyUnnecessaryBackslashInspection/test.py +++ b/python/testData/inspections/PyUnnecessaryBackslashInspection/test.py @@ -52,3 +52,9 @@ v = [ "some" \ a = func('some ' \ 'string') + + +#PY-6589 +a = ( \ +(1, \ +2),2) \ No newline at end of file