forked from VimPlug/jedi
Fix some issues with array arguments.
This commit is contained in:
@@ -16,7 +16,8 @@ class Arguments(pr.Base):
|
|||||||
def __init__(self, evaluator, argument_node, trailer=None):
|
def __init__(self, evaluator, argument_node, trailer=None):
|
||||||
"""
|
"""
|
||||||
The argument_node is either a parser node or a list of evaluated
|
The argument_node is either a parser node or a list of evaluated
|
||||||
objects.
|
objects. Those evaluated objects may be lists of evaluated objects
|
||||||
|
themselves (one list for the first argument, one for the second, etc).
|
||||||
"""
|
"""
|
||||||
self.argument_node = argument_node
|
self.argument_node = argument_node
|
||||||
self._evaluator = evaluator
|
self._evaluator = evaluator
|
||||||
@@ -68,6 +69,8 @@ class Arguments(pr.Base):
|
|||||||
else:
|
else:
|
||||||
if pr.is_node(el, 'argument'):
|
if pr.is_node(el, 'argument'):
|
||||||
named_args.append((el.children[0].value, (el.children[2],)))
|
named_args.append((el.children[0].value, (el.children[2],)))
|
||||||
|
elif isinstance(el, (list, tuple)):
|
||||||
|
yield None, el
|
||||||
else:
|
else:
|
||||||
yield None, (el,)
|
yield None, (el,)
|
||||||
|
|
||||||
|
|||||||
@@ -199,7 +199,7 @@ class Instance(use_metaclass(CachedMetaClass, Executed)):
|
|||||||
yield self, [get_instance_el(self._evaluator, self, var, True)
|
yield self, [get_instance_el(self._evaluator, self, var, True)
|
||||||
for var in names]
|
for var in names]
|
||||||
|
|
||||||
def get_index_types(self, index_array):
|
def get_index_types(self, evaluator, index_array):
|
||||||
|
|
||||||
indexes = iterable.create_indexes_or_slices(self._evaluator, index_array)
|
indexes = iterable.create_indexes_or_slices(self._evaluator, index_array)
|
||||||
if any([isinstance(i, iterable.Slice) for i in indexes]):
|
if any([isinstance(i, iterable.Slice) for i in indexes]):
|
||||||
@@ -208,9 +208,8 @@ class Instance(use_metaclass(CachedMetaClass, Executed)):
|
|||||||
# TODO support slices in a more general way.
|
# TODO support slices in a more general way.
|
||||||
indexes = []
|
indexes = []
|
||||||
|
|
||||||
index = helpers.FakeStatement(indexes, parent=compiled.builtin)
|
|
||||||
try:
|
try:
|
||||||
return self.execute_subscope_by_name('__getitem__', [index])
|
return self.execute_subscope_by_name('__getitem__', [indexes])
|
||||||
except KeyError:
|
except KeyError:
|
||||||
debug.warning('No __getitem__, cannot access the array.')
|
debug.warning('No __getitem__, cannot access the array.')
|
||||||
return []
|
return []
|
||||||
|
|||||||
Reference in New Issue
Block a user