mirror of
https://gitflic.ru/project/openide/openide.git
synced 2025-12-16 22:51:17 +07:00
consistent behavior of PyFunction.getContainingClass() in stub-based and non-stub-based cases (PY-1448)
This commit is contained in:
@@ -23,6 +23,7 @@ import com.intellij.openapi.util.Ref;
|
|||||||
import com.intellij.openapi.util.text.StringUtil;
|
import com.intellij.openapi.util.text.StringUtil;
|
||||||
import com.intellij.openapi.vfs.VirtualFile;
|
import com.intellij.openapi.vfs.VirtualFile;
|
||||||
import com.intellij.psi.PsiElement;
|
import com.intellij.psi.PsiElement;
|
||||||
|
import com.intellij.psi.StubBasedPsiElement;
|
||||||
import com.intellij.psi.search.LocalSearchScope;
|
import com.intellij.psi.search.LocalSearchScope;
|
||||||
import com.intellij.psi.search.SearchScope;
|
import com.intellij.psi.search.SearchScope;
|
||||||
import com.intellij.psi.stubs.IStubElementType;
|
import com.intellij.psi.stubs.IStubElementType;
|
||||||
@@ -158,12 +159,9 @@ public class PyFunctionImpl extends PyPresentableElementImpl<PyFunctionStub> imp
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
final PsiElement parent = getParent();
|
final PsiElement parent = PsiTreeUtil.getParentOfType(this, StubBasedPsiElement.class);
|
||||||
if (parent instanceof PyStatementList) {
|
if (parent instanceof PyClass) {
|
||||||
PsiElement pparent = parent.getParent();
|
return (PyClass)parent;
|
||||||
if (pparent instanceof PyClass) {
|
|
||||||
return (PyClass)pparent;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
14
python/testData/findUsages/ConditionalFunctions.py
Normal file
14
python/testData/findUsages/ConditionalFunctions.py
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
import sys
|
||||||
|
|
||||||
|
var = (sys.platform == 'win32')
|
||||||
|
|
||||||
|
class A():
|
||||||
|
def __init__(self):
|
||||||
|
self.<caret>a = None
|
||||||
|
|
||||||
|
if var:
|
||||||
|
def func(self):
|
||||||
|
self.a = ""
|
||||||
|
else:
|
||||||
|
def func(self):
|
||||||
|
self.a = ()
|
||||||
@@ -147,6 +147,11 @@ public class PyFindUsagesTest extends PyTestCase {
|
|||||||
assertEquals(2, usages.size());
|
assertEquals(2, usages.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testConditionalFunctions() { // PY-1448
|
||||||
|
final Collection<UsageInfo> usages = myFixture.testFindUsages("findUsages/ConditionalFunctions.py");
|
||||||
|
assertEquals(3, usages.size());
|
||||||
|
}
|
||||||
|
|
||||||
private Collection<UsageInfo> findMultiFileUsages(String filename) {
|
private Collection<UsageInfo> findMultiFileUsages(String filename) {
|
||||||
final String testName = getTestName(false);
|
final String testName = getTestName(false);
|
||||||
myFixture.copyDirectoryToProject("findUsages/" + testName, "");
|
myFixture.copyDirectoryToProject("findUsages/" + testName, "");
|
||||||
|
|||||||
Reference in New Issue
Block a user