1
0
forked from VimPlug/jedi

Modules also use a NamePart as a name, now.

This commit is contained in:
Dave Halter
2014-09-22 12:52:48 +02:00
parent 779618c08b
commit c4e45916c6
6 changed files with 22 additions and 16 deletions

View File

@@ -240,7 +240,6 @@ class CompiledName(FakeName):
super(CompiledName, self).__init__(name)
self._obj = obj
self.name = name
self.start_pos = 0, 0 # an illegal start_pos, to make sorting easy.
def __repr__(self):
try:

View File

@@ -102,14 +102,20 @@ class NameFinder(object):
or isinstance(scope, compiled.CompiledObject) \
or isinstance(stmt, pr.ExprStmt) and stmt.is_global():
# Always reachable.
names.append(name.names[-1])
if isinstance(name, pr.Name):
names.append(name.names[-1])
else:
names.append(name)
else:
check = flow_analysis.break_check(self._evaluator,
name_list_scope,
er.wrap(self._evaluator, scope),
self.scope)
if check is not flow_analysis.UNREACHABLE:
names.append(name.names[-1])
if isinstance(name, pr.Name):
names.append(name.names[-1])
else:
names.append(name)
if check is flow_analysis.REACHABLE:
break
@@ -141,7 +147,7 @@ class NameFinder(object):
for n in names:
definition = n.parent.parent
if isinstance(definition, (pr.Function, pr.Class, pr.Module)):
yield er.wrap(self._evaluator, definition).name.names[-1]
yield er.wrap(self._evaluator, definition).name
else:
yield n

View File

@@ -303,13 +303,9 @@ class FakeImport(pr.Import):
self.parent = parent
class FakeName(pr.Name):
def __init__(self, name_or_names, parent=None, start_pos=(0, 0)):
if isinstance(name_or_names, list):
names = [(n, start_pos) for n in name_or_names]
else:
names = [(name_or_names, start_pos)]
super(FakeName, self).__init__(FakeSubModule, names, start_pos, start_pos, parent)
class FakeName(pr.NamePart):
def __init__(self, name_str, parent=None, start_pos=(0, 0)):
super(FakeName, self).__init__(FakeSubModule, name_str, parent, start_pos)
def get_definition(self):
return self.parent

View File

@@ -670,6 +670,11 @@ class ModuleWrapper(use_metaclass(CachedMetaClass, pr.Module, Wrapper)):
# All the additional module attributes are strings.
return [helpers.LazyName(n, parent_callback) for n in names]
@property
@memoize_default()
def name(self):
return pr.NamePart(self, unicode(self.base.name), self, (1, 0))
@memoize_default()
def _sub_modules(self):
"""