forked from VimPlug/jedi
Fix a slice test with a better helper function
This commit is contained in:
@@ -27,7 +27,8 @@ from jedi.evaluate import analysis
|
|||||||
from jedi.evaluate import recursion
|
from jedi.evaluate import recursion
|
||||||
from jedi.evaluate.lazy_context import LazyKnownContext, LazyKnownContexts, \
|
from jedi.evaluate.lazy_context import LazyKnownContext, LazyKnownContexts, \
|
||||||
LazyTreeContext
|
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 safe_property
|
||||||
from jedi.evaluate.utils import to_list
|
from jedi.evaluate.utils import to_list
|
||||||
from jedi.evaluate.cache import evaluator_method_cache
|
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
|
# For simplicity, we want slices to be clear defined with just
|
||||||
# one type. Otherwise we will return an empty slice object.
|
# one type. Otherwise we will return an empty slice object.
|
||||||
raise IndexError
|
raise IndexError
|
||||||
try:
|
|
||||||
return list(result)[0].obj
|
context, = result
|
||||||
except AttributeError:
|
return get_int_or_none(context)
|
||||||
return None
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
return slice(get(self._start), get(self._stop), get(self._step))
|
return slice(get(self._start), get(self._stop), get(self._step))
|
||||||
|
|||||||
@@ -190,5 +190,16 @@ def is_literal(context):
|
|||||||
return is_number(context) or is_string(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):
|
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
|
||||||
|
|||||||
Reference in New Issue
Block a user