forked from VimPlug/jedi
Start working with arithmetics.
This commit is contained in:
@@ -163,19 +163,21 @@ class Evaluator(object):
|
||||
return result
|
||||
|
||||
def eval_element(self, element):
|
||||
if isinstance(element, (pr.Name, pr.Literal)):
|
||||
return self.eval_atom(element)
|
||||
if isinstance(element, (pr.Name, pr.Literal)) or pr.is_node(element, 'atom'):
|
||||
return self._eval_atom(element)
|
||||
elif element.type == python_symbols.power:
|
||||
types = self.eval_atom(element.children[0])
|
||||
types = self._eval_atom(element.children[0])
|
||||
for trailer in element.children[1:]:
|
||||
if trailer == '**': # has a power operation.
|
||||
raise NotImplementedError
|
||||
types = self.eval_trailer(types, trailer)
|
||||
return types
|
||||
else:
|
||||
raise NotImplementedError
|
||||
left, operator, right = element.children
|
||||
return precedence.calculate(self, self.eval_element(left), operator,
|
||||
self.eval_element(right))
|
||||
|
||||
def eval_atom(self, atom):
|
||||
def _eval_atom(self, atom):
|
||||
"""
|
||||
Basically to process ``atom`` nodes. The parser sometimes doesn't
|
||||
generate the node (because it has just one child). In that case an atom
|
||||
|
||||
@@ -220,7 +220,8 @@ class Array(use_metaclass(CachedMetaClass, IterableWrapper)):
|
||||
def _items(self):
|
||||
if pr.is_node(self._array_node, 'testlist_comp'):
|
||||
return self._array_node.children[::2]
|
||||
raise NotImplementedError
|
||||
else:
|
||||
return [self._array_node]
|
||||
|
||||
def __iter__(self):
|
||||
return iter(self._items())
|
||||
|
||||
Reference in New Issue
Block a user