mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Use inspection session type eval context
This commit is contained in:
@@ -640,7 +640,7 @@ public class PyUnresolvedReferencesInspection extends PyInspection {
|
||||
}
|
||||
if (qtype instanceof PyClassTypeImpl) {
|
||||
PyClass cls = ((PyClassType)qtype).getPyClass();
|
||||
if (overridesGetAttr(cls)) {
|
||||
if (overridesGetAttr(cls, myTypeEvalContext)) {
|
||||
return true;
|
||||
}
|
||||
if (cls.findProperty(refText) != null) {
|
||||
@@ -799,13 +799,11 @@ public class PyUnresolvedReferencesInspection extends PyInspection {
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private static PsiElement resolveClassMember(@NotNull PyClass cls, @NotNull String name) {
|
||||
final TypeEvalContext context = TypeEvalContext.fastStubOnly(null);
|
||||
private static PsiElement resolveClassMember(@NotNull PyClass cls, @NotNull String name, @NotNull TypeEvalContext context) {
|
||||
final PyType type = context.getType(cls);
|
||||
if (type != null) {
|
||||
final List<? extends RatedResolveResult> results = type.resolveMember(name, null, AccessDirection.READ,
|
||||
PyResolveContext.noImplicits().withTypeEvalContext(context)
|
||||
);
|
||||
final PyResolveContext resolveContext = PyResolveContext.noImplicits().withTypeEvalContext(context);
|
||||
final List<? extends RatedResolveResult> results = type.resolveMember(name, null, AccessDirection.READ, resolveContext);
|
||||
if (results != null && !results.isEmpty()) {
|
||||
return results.get(0).getElement();
|
||||
}
|
||||
@@ -813,12 +811,12 @@ public class PyUnresolvedReferencesInspection extends PyInspection {
|
||||
return null;
|
||||
}
|
||||
|
||||
private static boolean overridesGetAttr(@NotNull PyClass cls) {
|
||||
PsiElement method = resolveClassMember(cls, PyNames.GETATTR);
|
||||
private static boolean overridesGetAttr(@NotNull PyClass cls, @NotNull TypeEvalContext context) {
|
||||
PsiElement method = resolveClassMember(cls, PyNames.GETATTR, context);
|
||||
if (method != null) {
|
||||
return true;
|
||||
}
|
||||
method = resolveClassMember(cls, PyNames.GETATTRIBUTE);
|
||||
method = resolveClassMember(cls, PyNames.GETATTRIBUTE, context);
|
||||
if (method != null && !PyBuiltinCache.getInstance(cls).hasInBuiltins(method)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user