slices should be ignored in __getitem__ settings (for now)

This commit is contained in:
Dave Halter
2014-04-28 18:15:25 +02:00
parent d106b2ce2b
commit 23b4a89d1d
4 changed files with 18 additions and 2 deletions

View File

@@ -109,7 +109,7 @@ class Evaluator(object):
return f.filter_name(scopes)
return f.find(scopes, resolve_decorator)
@memoize_default(default=(), evaluator_is_first_arg=True)
@memoize_default(default=[], evaluator_is_first_arg=True)
@recursion.recursion_decorator
@debug.increase_indent
def eval_statement(self, stmt, seek_name=None):

View File

@@ -11,7 +11,6 @@ would check whether a flow has the form of ``if isinstance(a, type_or_tuple)``.
Unfortunately every other thing is being ignored (e.g. a == '' would be easy to
check for -> a is a string). There's big potential in these checks.
"""
import copy
import sys
from jedi._compatibility import hasattr, unicode, u, reraise

View File

@@ -169,6 +169,12 @@ class Instance(use_metaclass(CachedMetaClass, Executable)):
return False
def get_index_types(self, indexes=[]):
if any([isinstance(i, iterable.Slice) for i in indexes]):
# Slice support in Jedi is very marginal, at the moment, so just
# ignore them in case of __getitem__.
# TODO support slices in a more general way.
indexes = []
try:
return self.execute_subscope_by_name('__getitem__', indexes)
except KeyError:

View File

@@ -30,6 +30,9 @@ b = [6,7]
#? int()
b[8-7]
# -----------------
# Slices
# -----------------
#? list()
b[8:]
@@ -37,6 +40,14 @@ b[8:]
b[int():]
class _StrangeSlice():
def __getitem__(self, slice):
return slice
#? []
_StrangeSlice()[1:2]
# -----------------
# iterable multiplication
# -----------------