1
0
forked from VimPlug/jedi

Fixes towards better MergedArray and partial functions.

This commit is contained in:
Dave Halter
2014-11-20 13:33:05 +01:00
parent a6e1348757
commit cc465364d3
4 changed files with 20 additions and 10 deletions

View File

@@ -35,6 +35,11 @@ from jedi.cache import underscore_memoization
from jedi.evaluate import analysis
def unite(iterable):
"""Turns a two dimensional array into a one dimensional."""
return list(chain.from_iterable(iterable))
class IterableWrapper(pr.Base):
def is_class(self):
return False
@@ -212,8 +217,7 @@ class Array(IterableWrapper):
@memoize_default(NO_DEFAULT)
def values(self):
result = list(chain.from_iterable(self._evaluator.eval_element(v)
for v in self._values()))
result = unite(self._evaluator.eval_element(v) for v in self._values())
# TODO reenable
#result += check_array_additions(self._evaluator, self)
return result
@@ -260,6 +264,7 @@ class Array(IterableWrapper):
return getattr(self._atom, name)
def _values(self):
"""Returns a list of a list of node."""
if self.type == pr.Array.DICT:
return list(chain.from_iterable(v for k, v in self._items()))
else:
@@ -330,6 +335,10 @@ class AlreadyEvaluated(frozenset):
pass
class MergedNodes(frozenset):
pass
class FakeDict(_FakeArray):
def __init__(self, evaluator, dct):
super(FakeDict, self).__init__(evaluator, dct, pr.Array.DICT)
@@ -343,9 +352,9 @@ class FakeDict(_FakeArray):
return self._dct.items()
class MergedArray(Array):
class MergedArray(_FakeArray):
def __init__(self, evaluator, arrays):
super(MergedArray, self).__init__(evaluator, arrays[-1]._atom)
super(MergedArray, self).__init__(evaluator, arrays, arrays[-1].type)
self._arrays = arrays
def get_index_types(self, evaluator, mixed_index):