mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-01-05 01:50:56 +07:00
correct withinOurClass check for completing class members (PY-3246)
This commit is contained in:
@@ -8,6 +8,7 @@ import com.intellij.openapi.util.Key;
|
||||
import com.intellij.openapi.util.Pair;
|
||||
import com.intellij.openapi.util.UserDataHolderBase;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.psi.util.PsiUtilBase;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.util.ProcessingContext;
|
||||
@@ -17,7 +18,6 @@ import com.jetbrains.python.codeInsight.PyDynamicMember;
|
||||
import com.jetbrains.python.psi.*;
|
||||
import com.jetbrains.python.psi.impl.PyBuiltinCache;
|
||||
import com.jetbrains.python.psi.impl.PyClassImpl;
|
||||
import com.jetbrains.python.psi.patterns.ParentMatcher;
|
||||
import com.jetbrains.python.psi.resolve.PyResolveContext;
|
||||
import com.jetbrains.python.psi.resolve.PyResolveUtil;
|
||||
import com.jetbrains.python.psi.resolve.ResolveProcessor;
|
||||
@@ -200,8 +200,11 @@ public class PyClassType extends UserDataHolderBase implements PyType {
|
||||
}
|
||||
|
||||
private void addOwnClassMembers(PyExpression expressionHook, Set<String> namesAlready, List<Object> ret) {
|
||||
List<? extends PsiElement> classList = new ParentMatcher(PyClass.class).search(expressionHook);
|
||||
boolean withinOurClass = classList != null && classList.get(0) == this;
|
||||
PyClass containingClass = PsiTreeUtil.getParentOfType(expressionHook, PyClass.class);
|
||||
if (containingClass != null) {
|
||||
containingClass = PsiUtilBase.getOriginalElement(containingClass, PyClass.class);
|
||||
}
|
||||
boolean withinOurClass = containingClass == getPyClass();
|
||||
|
||||
final VariantsProcessor processor = new VariantsProcessor(
|
||||
expressionHook, new PyResolveUtil.FilterNotInstance(myClass), null
|
||||
|
||||
7
python/testData/completion/veryPrivate.after.py
Normal file
7
python/testData/completion/veryPrivate.after.py
Normal file
@@ -0,0 +1,7 @@
|
||||
class PrivateTest(object):
|
||||
|
||||
def __init__(self):
|
||||
self.__veryPrivate = list()
|
||||
|
||||
def showList(self):
|
||||
print self.__veryPrivate
|
||||
7
python/testData/completion/veryPrivate.py
Normal file
7
python/testData/completion/veryPrivate.py
Normal file
@@ -0,0 +1,7 @@
|
||||
class PrivateTest(object):
|
||||
|
||||
def __init__(self):
|
||||
self.__veryPrivate = list()
|
||||
|
||||
def showList(self):
|
||||
print self.__v<caret>
|
||||
@@ -311,4 +311,8 @@ public class PythonCompletionTest extends PyLightFixtureTestCase {
|
||||
public void testLambdaInExpression() { // PY-3150
|
||||
doTest();
|
||||
}
|
||||
|
||||
public void testVeryPrivate() { // PY-3246
|
||||
doTest();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user