mirror of
https://gitflic.ru/project/openide/openide.git
synced 2025-12-13 06:59:44 +07:00
PY-77891 "Unused import" inspection is inconsistent in nightly
The logic for disabling the unused warning on unresolved imports was dependent on the visit order. Moving sustracting unresolved imports to the end of computation fixes the problem. (cherry picked from commit adeb85e59c17261a5bf9f64dfb4a7836a2403f43) IJ-CR-153189 GitOrigin-RevId: fac4173a0fac5b29be9301f9d5f04fed08cceff1
This commit is contained in:
committed by
intellij-monorepo-bot
parent
42ba97ccd8
commit
db6d06207c
@@ -67,6 +67,7 @@ public abstract class PyUnresolvedReferencesVisitor extends PyInspectionVisitor
|
||||
private final Set<PyImportedNameDefiner> myAllImports = Collections.synchronizedSet(new HashSet<>());
|
||||
private final Set<PyImportedNameDefiner> myImportsInsideGuard = Collections.synchronizedSet(new HashSet<>());
|
||||
private final Set<PyImportedNameDefiner> myUsedImports = Collections.synchronizedSet(new HashSet<>());
|
||||
private final Set<PyImportedNameDefiner> myUnresolvedImports = Collections.synchronizedSet(new HashSet<>());
|
||||
private final ImmutableSet<String> myIgnoredIdentifiers;
|
||||
private final PyInspection myInspection;
|
||||
private volatile Boolean myIsEnabled = null;
|
||||
@@ -226,8 +227,8 @@ public abstract class PyUnresolvedReferencesVisitor extends PyInspectionVisitor
|
||||
registerUnresolvedReferenceProblem(node, reference, severity);
|
||||
}
|
||||
// don't highlight unresolved imports as unused
|
||||
if (node.getParent() instanceof PyImportElement) {
|
||||
myAllImports.remove(node.getParent());
|
||||
if (node.getParent() instanceof PyImportElement importElement) {
|
||||
myUnresolvedImports.add(importElement);
|
||||
}
|
||||
}
|
||||
else if (reference instanceof PyImportReference &&
|
||||
@@ -605,6 +606,7 @@ public abstract class PyUnresolvedReferencesVisitor extends PyInspectionVisitor
|
||||
|
||||
Set<PyImportedNameDefiner> unusedImports = new HashSet<>(getAllImports());
|
||||
unusedImports.removeAll(getUsedImports());
|
||||
unusedImports.removeAll(myUnresolvedImports);
|
||||
|
||||
// Remove those unsed, that are reported to be skipped by extension points
|
||||
final Set<PyImportedNameDefiner> unusedImportToSkip = new HashSet<>();
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
import <error descr="No module named 'unresolved1'">unresolved1</error>
|
||||
import <error descr="No module named 'unresolved2'">unresolved2</error>
|
||||
import <error descr="No module named 'unresolved3'">unresolved3</error>
|
||||
<warning descr="Unused import statement 'import os'">import os</warning>
|
||||
@@ -37,6 +37,25 @@ public class PyUnusedImportTest extends PyTestCase {
|
||||
doTest("test1.py");
|
||||
}
|
||||
|
||||
public void testUnresolvedModule() {
|
||||
doTest("test.py");
|
||||
//myFixture.configureByText("test.py", """
|
||||
// <warning descr="Unused import statement 'import unresolved1'">import <error descr="No module named 'unresolved1'">unresolved1</error></warning>
|
||||
// <warning descr="Unused import statement 'import unresolved2'">import <error descr="No module named 'unresolved2'">unresolved2</error></warning>
|
||||
// <warning descr="Unused import statement 'import unresolved3'">import <error descr="No module named 'unresolved3'">unresolved3</error></warning>
|
||||
// """);
|
||||
//myFixture.enableInspections(PyUnresolvedReferencesInspection.class);
|
||||
//
|
||||
//
|
||||
//final ExpectedHighlightingData data = new ExpectedHighlightingData(myFixture.getEditor().getDocument(), true, true, false);
|
||||
//data.init();
|
||||
//
|
||||
//myFixture.type("\n");
|
||||
//myFixture.type("\b");
|
||||
//
|
||||
//((CodeInsightTestFixtureImpl)myFixture).collectAndCheckHighlighting(data);
|
||||
}
|
||||
|
||||
//PY-20075
|
||||
public void testMultipleSubmodules() {
|
||||
doTest("test1.py");
|
||||
|
||||
Reference in New Issue
Block a user