1
0
forked from VimPlug/jedi

Improvements towards arrays / predefined names logic.

This commit is contained in:
Dave Halter
2016-11-25 23:31:45 +01:00
parent 8fd08c86b7
commit bad1f85f8f
14 changed files with 158 additions and 167 deletions

View File

@@ -216,19 +216,17 @@ class Comprehension(AbstractSequence):
exprlist = comp_for.children[1]
for i, lazy_context in enumerate(iterated):
types = lazy_context.infer()
evaluator.predefined_if_name_dict_dict[comp_for] = \
unpack_tuple_to_dict(evaluator, types, exprlist)
try:
for result in self._nested(comp_fors[1:]):
yield result
except IndexError:
iterated = self._defining_context.eval_node(self._eval_node())
if self.array_type == 'dict':
yield iterated, self._defining_context.eval_node(self._eval_node(2))
else:
yield iterated
finally:
del evaluator.predefined_if_name_dict_dict[comp_for]
dct = unpack_tuple_to_dict(evaluator, types, exprlist)
with helpers.predefine_names(self._defining_context, comp_for, dct):
try:
for result in self._nested(comp_fors[1:]):
yield result
except IndexError:
iterated = self._defining_context.eval_node(self._eval_node())
if self.array_type == 'dict':
yield iterated, self._defining_context.eval_node(self._eval_node(2))
else:
yield iterated
@memoize_default(default=[])
@common.to_list
@@ -552,13 +550,12 @@ class MergedArray(_FakeArray):
self._arrays = arrays
def py__iter__(self):
raise NotImplementedError
for array in self._arrays:
for types in array.py__iter__():
yield types
for lazy_context in array.py__iter__():
yield lazy_context
def py__getitem__(self, index):
return unite(self.py__iter__())
return unite(lazy_context.infer() for lazy_context in self.py__iter__())
def _items(self):
for array in self._arrays: