forked from VimPlug/jedi
Modules also use a NamePart as a name, now.
This commit is contained in:
@@ -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:
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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):
|
||||
"""
|
||||
|
||||
Reference in New Issue
Block a user