Fix comprehension parent issues, fixes #1215

This commit is contained in:
Dave Halter
2019-08-23 14:34:16 +02:00
parent ecc574025c
commit 7573e2033a
2 changed files with 11 additions and 3 deletions

View File

@@ -361,9 +361,10 @@ class BaseDefinition(object):
context = self._name.parent_context
if context is None:
return None
# TODO private access!
return Definition(self._inference_state, context._value.name)
while context.name is None:
# Happens for comprehension contexts
context = context.parent_context
return Definition(self._inference_state, context.name)
def __repr__(self):
return "<%s %sname=%r, description=%r>" % (

View File

@@ -134,6 +134,12 @@ class AbstractContext(object):
def py__name__(self):
return self._value.py__name__()
@property
def name(self):
if self._value is None:
return None
return self._value.name
def get_qualified_names(self):
return self._value.get_qualified_names()
@@ -223,6 +229,7 @@ class ClassContext(AbstractContext):
class CompForContext(AbstractContext):
def __init__(self, parent_context, comp_for):
self._value = None
self._parent_context = parent_context
self.inference_state = parent_context.inference_state
self._tree_node = comp_for