diff --git a/jedi/evaluate/__init__.py b/jedi/evaluate/__init__.py index 5e5dd936..8480c9d6 100644 --- a/jedi/evaluate/__init__.py +++ b/jedi/evaluate/__init__.py @@ -189,7 +189,7 @@ class Evaluator(object): elif isinstance(atom, pr.Literal): return [compiled.create(self, atom.eval())] else: - raise NotImplementedError + return iterable.Array(self, atom.children[1]) def eval_trailer(self, types, trailer): trailer_op, node = trailer.children[:2] diff --git a/jedi/evaluate/iterable.py b/jedi/evaluate/iterable.py index d576d848..dfab3285 100644 --- a/jedi/evaluate/iterable.py +++ b/jedi/evaluate/iterable.py @@ -124,9 +124,9 @@ class Array(use_metaclass(CachedMetaClass, IterableWrapper)): Used as a mirror to pr.Array, if needed. It defines some getter methods which are important in this module. """ - def __init__(self, evaluator, array): + def __init__(self, evaluator, array_node): self._evaluator = evaluator - self._array = array + self._array_node = array_node @property def name(self): @@ -216,13 +216,15 @@ class Array(use_metaclass(CachedMetaClass, IterableWrapper)): return getattr(self._array, name) def __iter__(self): - return iter(self._array) + if pr.is_node(self._array_node, 'testlist_comp'): + return iter(self._array_node.children[::2]) + raise NotImplementedError def __len__(self): return len(self._array) def __repr__(self): - return "" % (type(self).__name__, self._array) + return "" % (type(self).__name__, self._array_node) class MergedArray(Array): diff --git a/jedi/parser/pgen2/parse.py b/jedi/parser/pgen2/parse.py index 1b4cca87..011ec8b2 100644 --- a/jedi/parser/pgen2/parse.py +++ b/jedi/parser/pgen2/parse.py @@ -194,8 +194,6 @@ class Parser(object): allows using different grammars (even non-Python). However, error recovery is purely written for Python. """ - print(self.stack) - #import pdb; pdb.set_trace() if value == '\n': # Statement is not finished. # Now remove the whole statement. for i, (dfa, state, node) in reversed(list(enumerate(self.stack))):