1
0
forked from VimPlug/jedi

Start to use NameParts only in Definition contexts.

This commit is contained in:
Dave Halter
2014-09-09 14:13:01 +02:00
parent ff7680c15f
commit 1199defabb
5 changed files with 32 additions and 15 deletions
+5 -5
View File
@@ -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
+4
View File
@@ -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.
+8 -1
View File
@@ -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))