1
0
forked from VimPlug/jedi

Start working with arithmetics.

This commit is contained in:
Dave Halter
2014-10-21 12:18:03 +02:00
parent 2eed6b7b5f
commit ab53942e55
2 changed files with 9 additions and 6 deletions

View File

@@ -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

View File

@@ -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())