From e6e730d2a12a7f2949d4075c4e9369d85e3637d8 Mon Sep 17 00:00:00 2001 From: Andrey Vlasovskikh Date: Wed, 8 May 2013 19:20:34 +0400 Subject: [PATCH] Use inspection session type eval context --- .../PyUnresolvedReferencesInspection.java | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/python/src/com/jetbrains/python/inspections/PyUnresolvedReferencesInspection.java b/python/src/com/jetbrains/python/inspections/PyUnresolvedReferencesInspection.java index f2b8d4636468..4a519c2c4a6a 100644 --- a/python/src/com/jetbrains/python/inspections/PyUnresolvedReferencesInspection.java +++ b/python/src/com/jetbrains/python/inspections/PyUnresolvedReferencesInspection.java @@ -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 results = type.resolveMember(name, null, AccessDirection.READ, - PyResolveContext.noImplicits().withTypeEvalContext(context) - ); + final PyResolveContext resolveContext = PyResolveContext.noImplicits().withTypeEvalContext(context); + final List 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; }