mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
PY-14234 Fix false positive when underscored module imported inside the package
This commit is contained in:
@@ -21,6 +21,7 @@ import com.intellij.codeInspection.ProblemHighlightType;
|
||||
import com.intellij.codeInspection.ProblemsHolder;
|
||||
import com.intellij.codeInspection.ui.MultipleCheckboxOptionsPanel;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.psi.PsiDirectory;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiElementVisitor;
|
||||
import com.intellij.psi.PsiReference;
|
||||
@@ -85,8 +86,18 @@ public class PyProtectedMemberInspection extends PyInspection {
|
||||
if (!(statement instanceof PyFromImportStatement)) return;
|
||||
final PyReferenceExpression importReferenceExpression = node.getImportReferenceExpression();
|
||||
final PyReferenceExpression importSource = ((PyFromImportStatement)statement).getImportSource();
|
||||
if (importReferenceExpression != null && importSource != null)
|
||||
if (importReferenceExpression != null && importSource != null && !isImportFromTheSamePackage(importSource)) {
|
||||
checkReference(importReferenceExpression, importSource);
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isImportFromTheSamePackage(PyReferenceExpression importSource) {
|
||||
PsiDirectory directory = importSource.getContainingFile().getContainingDirectory();
|
||||
if (PyUtil.isPackage(directory, true, importSource.getContainingFile()) &&
|
||||
directory.getName().equals(importSource.getName())) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
def very_smart_func(param):
|
||||
return None
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
from my_package import _package_internal_module # False positive here
|
||||
|
||||
_package_internal_module.very_smart_func("spam")
|
||||
@@ -69,6 +69,15 @@ public class PyProtectedMemberInspectionTest extends PyTestCase {
|
||||
myFixture.checkHighlighting(false, false, true);
|
||||
}
|
||||
|
||||
//PY-14234
|
||||
public void testImportFromTheSamePackage() {
|
||||
String path = getTestName(true);
|
||||
myFixture.copyDirectoryToProject(path + "/my_package", "./my_package");
|
||||
myFixture.configureByFile("/my_package/my_public_module.py");
|
||||
myFixture.enableInspections(PyProtectedMemberInspection.class);
|
||||
myFixture.checkHighlighting(false, false, true);
|
||||
}
|
||||
|
||||
public void testModule() {
|
||||
myFixture.configureByFiles(getTestName(true) + ".py", "tmp.py");
|
||||
myFixture.enableInspections(PyProtectedMemberInspection.class);
|
||||
|
||||
Reference in New Issue
Block a user