mirror of
https://github.com/davidhalter/jedi.git
synced 2026-05-25 01:38:36 +08:00
clean up the new _eval_statement_element method
This commit is contained in:
+15
-26
@@ -145,7 +145,7 @@ class Evaluator(object):
|
|||||||
return self._process_precedence_element(p)
|
return self._process_precedence_element(p)
|
||||||
calls_iterator = iter(expression_list)
|
calls_iterator = iter(expression_list)
|
||||||
for each in calls_iterator:
|
for each in calls_iterator:
|
||||||
result += self.eval_element(each)
|
result += self._eval_statement_element(each)
|
||||||
return set(result)
|
return set(result)
|
||||||
|
|
||||||
def _process_precedence_element(self, el):
|
def _process_precedence_element(self, el):
|
||||||
@@ -156,14 +156,14 @@ class Evaluator(object):
|
|||||||
return self._eval_precedence(el)
|
return self._eval_precedence(el)
|
||||||
else:
|
else:
|
||||||
# normal element, no operators
|
# normal element, no operators
|
||||||
return self.eval_element(el)
|
return self._eval_statement_element(el)
|
||||||
|
|
||||||
def _eval_precedence(self, _precedence):
|
def _eval_precedence(self, _precedence):
|
||||||
left = self._process_precedence_element(_precedence.left)
|
left = self._process_precedence_element(_precedence.left)
|
||||||
right = self._process_precedence_element(_precedence.right)
|
right = self._process_precedence_element(_precedence.right)
|
||||||
return precedence.calculate(left, _precedence.operator, right)
|
return precedence.calculate(left, _precedence.operator, right)
|
||||||
|
|
||||||
def eval_element(self, element):
|
def _eval_statement_element(self, element):
|
||||||
if pr.Array.is_type(element, pr.Array.NOARRAY):
|
if pr.Array.is_type(element, pr.Array.NOARRAY):
|
||||||
r = list(itertools.chain.from_iterable(self.eval_statement(s)
|
r = list(itertools.chain.from_iterable(self.eval_statement(s)
|
||||||
for s in element))
|
for s in element))
|
||||||
@@ -177,30 +177,19 @@ class Evaluator(object):
|
|||||||
# because nothing else uses it.
|
# because nothing else uses it.
|
||||||
element.stmt.parent = loop
|
element.stmt.parent = loop
|
||||||
return self.eval_statement(element.stmt)
|
return self.eval_statement(element.stmt)
|
||||||
|
elif isinstance(element, pr.Lambda):
|
||||||
|
return [er.Function(self, element)]
|
||||||
|
# With things like params, these can also be functions...
|
||||||
|
elif isinstance(element, pr.Base) and element.isinstance(
|
||||||
|
er.Function, er.Class, er.Instance, iterable.ArrayInstance):
|
||||||
|
return [element]
|
||||||
|
# The string tokens are just operations (+, -, etc.)
|
||||||
|
elif isinstance(element, compiled.CompiledObject):
|
||||||
|
return [element]
|
||||||
|
elif not isinstance(element, Token):
|
||||||
|
return self.eval_call(element)
|
||||||
else:
|
else:
|
||||||
if isinstance(element, pr.Lambda):
|
return []
|
||||||
return [er.Function(self, element)]
|
|
||||||
# With things like params, these can also be functions...
|
|
||||||
elif isinstance(element, pr.Base) and element.isinstance(
|
|
||||||
er.Function, er.Class, er.Instance, iterable.ArrayInstance):
|
|
||||||
return [element]
|
|
||||||
# The string tokens are just operations (+, -, etc.)
|
|
||||||
elif isinstance(element, compiled.CompiledObject):
|
|
||||||
return [element]
|
|
||||||
'''
|
|
||||||
elif call == 'if':
|
|
||||||
# Ternary operators.
|
|
||||||
for call in calls_iterator:
|
|
||||||
try:
|
|
||||||
if call == 'else':
|
|
||||||
break
|
|
||||||
except StopIteration:
|
|
||||||
break
|
|
||||||
continue
|
|
||||||
'''
|
|
||||||
elif not isinstance(element, Token):
|
|
||||||
return self.eval_call(element)
|
|
||||||
return []
|
|
||||||
|
|
||||||
def eval_call(self, call):
|
def eval_call(self, call):
|
||||||
"""Follow a call is following a function, variable, string, etc."""
|
"""Follow a call is following a function, variable, string, etc."""
|
||||||
|
|||||||
Reference in New Issue
Block a user