Fix merged array values.

This commit is contained in:
Dave Halter
2015-02-27 11:23:53 +01:00
parent a5728f8767
commit 610068dde4
2 changed files with 14 additions and 6 deletions

View File

@@ -29,7 +29,7 @@ from jedi._compatibility import use_metaclass, is_py3, unicode
from jedi.parser import tree as pr from jedi.parser import tree as pr
from jedi.evaluate import compiled from jedi.evaluate import compiled
from jedi.evaluate import helpers from jedi.evaluate import helpers
from jedi.evaluate.cache import CachedMetaClass, memoize_default, NO_DEFAULT from jedi.evaluate.cache import CachedMetaClass, memoize_default
from jedi.evaluate import analysis from jedi.evaluate import analysis
@@ -206,7 +206,7 @@ class Array(IterableWrapper, ArrayMixin):
def py__bool__(self): def py__bool__(self):
return None # We don't know the length, because of appends. return None # We don't know the length, because of appends.
@memoize_default(NO_DEFAULT) @memoize_default()
def get_index_types(self, evaluator, index=()): def get_index_types(self, evaluator, index=()):
""" """
Get the types of a specific index or all, if not given. Get the types of a specific index or all, if not given.
@@ -228,7 +228,7 @@ class Array(IterableWrapper, ArrayMixin):
return types if lookup_done else self.values() return types if lookup_done else self.values()
@memoize_default(NO_DEFAULT) @memoize_default()
def values(self): def values(self):
result = unite(self._evaluator.eval_element(v) for v in self._values()) result = unite(self._evaluator.eval_element(v) for v in self._values())
result += check_array_additions(self._evaluator, self) result += check_array_additions(self._evaluator, self)
@@ -363,12 +363,12 @@ class MergedArray(_FakeArray):
super(MergedArray, self).__init__(evaluator, arrays, arrays[-1].type) super(MergedArray, self).__init__(evaluator, arrays, arrays[-1].type)
self._arrays = arrays self._arrays = arrays
def get_index_types(self, evaluator, mixed_index):
return list(chain(*(a.values() for a in self._arrays)))
def get_exact_index_types(self, mixed_index): def get_exact_index_types(self, mixed_index):
raise IndexError raise IndexError
def values(self):
return list(chain(*(a.values() for a in self._arrays)))
def __iter__(self): def __iter__(self):
for array in self._arrays: for array in self._arrays:
for a in array: for a in array:

View File

@@ -352,3 +352,11 @@ def recursion1(foo):
#? int() #? int()
recursion1([1,2])[0] recursion1([1,2])[0]
# -----------------
# Merged Arrays
# -----------------
for x in [1] + ['']:
#? int() str()
x