1
0
forked from VimPlug/jedi

Fix a slice test with a better helper function

This commit is contained in:
Dave Halter
2017-11-26 22:18:51 +01:00
parent accf20226d
commit 02fb73655c
2 changed files with 17 additions and 6 deletions

View File

@@ -27,7 +27,8 @@ from jedi.evaluate import analysis
from jedi.evaluate import recursion
from jedi.evaluate.lazy_context import LazyKnownContext, LazyKnownContexts, \
LazyTreeContext
from jedi.evaluate.helpers import is_string, predefine_names, evaluate_call_of_leaf
from jedi.evaluate.helpers import get_int_or_none, is_string, \
predefine_names, evaluate_call_of_leaf
from jedi.evaluate.utils import safe_property
from jedi.evaluate.utils import to_list
from jedi.evaluate.cache import evaluator_method_cache
@@ -680,10 +681,9 @@ class Slice(Context):
# For simplicity, we want slices to be clear defined with just
# one type. Otherwise we will return an empty slice object.
raise IndexError
try:
return list(result)[0].obj
except AttributeError:
return None
context, = result
return get_int_or_none(context)
try:
return slice(get(self._start), get(self._stop), get(self._step))

View File

@@ -190,5 +190,16 @@ def is_literal(context):
return is_number(context) or is_string(context)
def _get_safe_value_or_none(context, accept):
if is_compiled(context):
value = context.get_safe_value(default=None)
if isinstance(value, accept):
return value
def get_int_or_none(context):
return _get_safe_value_or_none(context, int)
def is_number(context):
return is_compiled(context) and isinstance(context.get_safe_value(default=None), (int, float))
return _get_safe_value_or_none(context, (int, float)) is not None