mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
fixed PY-6589 Unnecessary backslash in expression: false negative for double parenthesis
This commit is contained in:
@@ -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<PsiElement> stack = new Stack<PsiElement>();
|
||||
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<PsiElement>() {
|
||||
@Override
|
||||
public boolean execute(@NotNull PsiElement ws) {
|
||||
if (ws instanceof PsiWhiteSpace && ws.getText().contains("\\")) {
|
||||
registerProblem(ws, "Unnecessary backslash in expression.", new RemoveUnnecessaryBackslashQuickFix());
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -52,3 +52,9 @@ v = [ "some"<warning descr="Unnecessary backslash in expression."> \</warning>
|
||||
|
||||
a = func('some '<warning descr="Unnecessary backslash in expression."> \</warning>
|
||||
'string')
|
||||
|
||||
|
||||
#PY-6589
|
||||
a = ( <warning descr="Unnecessary backslash in expression."> \</warning>
|
||||
(1, <warning descr="Unnecessary backslash in expression."> \</warning>
|
||||
2),2)
|
||||
Reference in New Issue
Block a user