forked from VimPlug/jedi
Start to use NameParts only in Definition contexts.
This commit is contained in:
@@ -304,13 +304,13 @@ class FakeImport(pr.Import):
|
||||
|
||||
|
||||
class FakeName(pr.Name):
|
||||
def __init__(self, name_or_names, parent=None):
|
||||
p = 0, 0
|
||||
def __init__(self, name_or_names, parent=None, start_pos=(0, 0)):
|
||||
start_pos = 0, 0
|
||||
if isinstance(name_or_names, list):
|
||||
names = [(n, p) for n in name_or_names]
|
||||
names = [(n, start_pos) for n in name_or_names]
|
||||
else:
|
||||
names = [(name_or_names, p)]
|
||||
super(FakeName, self).__init__(FakeSubModule, names, p, p, parent)
|
||||
names = [(name_or_names, start_pos)]
|
||||
super(FakeName, self).__init__(FakeSubModule, names, start_pos, start_pos, parent)
|
||||
|
||||
def get_definition(self):
|
||||
return self.parent
|
||||
|
||||
@@ -128,6 +128,10 @@ class Array(use_metaclass(CachedMetaClass, IterableWrapper)):
|
||||
self._evaluator = evaluator
|
||||
self._array = array
|
||||
|
||||
@property
|
||||
def name(self):
|
||||
return helpers.FakeName(self._array.type, parent=self)
|
||||
|
||||
def py__bool__(self):
|
||||
return None # We don't know the length, because of appends.
|
||||
|
||||
|
||||
@@ -35,6 +35,7 @@ from jedi.parser import representation as pr
|
||||
from jedi.parser.tokenize import Token
|
||||
from jedi import debug
|
||||
from jedi import common
|
||||
from jedi.cache import underscore_memoization
|
||||
from jedi.evaluate.cache import memoize_default, CachedMetaClass
|
||||
from jedi.evaluate import compiled
|
||||
from jedi.evaluate import recursion
|
||||
@@ -218,8 +219,14 @@ class Instance(use_metaclass(CachedMetaClass, Executed)):
|
||||
debug.warning('No __getitem__, cannot access the array.')
|
||||
return []
|
||||
|
||||
@property
|
||||
@underscore_memoization
|
||||
def name(self):
|
||||
name = self.base.name
|
||||
return helpers.FakeName(unicode(name), self, name.start_pos)
|
||||
|
||||
def __getattr__(self, name):
|
||||
if name not in ['start_pos', 'end_pos', 'name', 'get_imports',
|
||||
if name not in ['start_pos', 'end_pos', 'get_imports',
|
||||
'doc', 'raw_doc', 'asserts']:
|
||||
raise AttributeError("Instance %s: Don't touch this (%s)!"
|
||||
% (self, name))
|
||||
|
||||
Reference in New Issue
Block a user