1
0
forked from VimPlug/jedi

Rename Name.get_parent_stmt to Name.get_definition, because it's not always a statement. Also start using it in the NameFinder.

This commit is contained in:
Dave Halter
2014-09-06 10:43:26 +02:00
parent 99116cdcb7
commit f57d9ef675
5 changed files with 26 additions and 9 deletions

View File

@@ -85,7 +85,7 @@ class NameFinder(object):
if unicode(self.name_str) != name.get_code():
continue
stmt = name.parent
stmt = name.get_definition()
scope = stmt.parent
if scope in break_scopes:
continue
@@ -219,7 +219,7 @@ class NameFinder(object):
flow_scope = flow_scope.parent
for name in names:
typ = name.parent
typ = name.get_definition()
if typ.isinstance(pr.ForFlow):
types += self._handle_for_loops(typ)
elif isinstance(typ, pr.Param):

View File

@@ -309,6 +309,9 @@ class FakeName(pr.Name):
names = [(name_or_names, p)]
super(FakeName, self).__init__(FakeSubModule, names, p, p, parent)
def get_definition(self):
return self.parent
class LazyName(FakeName):
def __init__(self, name, parent_callback):

View File

@@ -232,8 +232,9 @@ class ArrayMethod(IterableWrapper):
def __getattr__(self, name):
# Set access privileges:
if name not in ['parent', 'names', 'start_pos', 'end_pos', 'get_code']:
raise AttributeError('Strange accesson %s: %s.' % (self, name))
if name not in ['parent', 'names', 'start_pos', 'end_pos', 'get_code',
'get_definition']:
raise AttributeError('Strange access on %s: %s.' % (self, name))
return getattr(self.name, name)
def get_parent_until(self):

View File

@@ -270,6 +270,9 @@ class InstanceElement(use_metaclass(CachedMetaClass, pr.Base)):
def get_parent_until(self, *args, **kwargs):
return pr.Simple.get_parent_until(self, *args, **kwargs)
def get_definition(self):
return self.get_parent_until((pr.Statement, pr.IsScope, pr.Import))
def get_decorated_func(self):
""" Needed because the InstanceElement should not be stripped """
func = self.var.get_decorated_func()