From 1520ebf557857a608c5c8be86a495f4c3e268611 Mon Sep 17 00:00:00 2001 From: Dave Halter Date: Tue, 3 Mar 2015 02:39:02 +0100 Subject: [PATCH] Fixed an issue with ArrayInstances that were using name lookups, which it doesn't have. --- jedi/evaluate/compiled/fake/builtins.pym | 2 +- jedi/evaluate/iterable.py | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/jedi/evaluate/compiled/fake/builtins.pym b/jedi/evaluate/compiled/fake/builtins.pym index e0046d9c..1283de00 100644 --- a/jedi/evaluate/compiled/fake/builtins.pym +++ b/jedi/evaluate/compiled/fake/builtins.pym @@ -156,7 +156,7 @@ class set(): yield i def pop(self): - return self.__iterable.pop() + return list(self.__iterable)[-1] def copy(self): return self diff --git a/jedi/evaluate/iterable.py b/jedi/evaluate/iterable.py index 92d24bb4..21cc8e7e 100644 --- a/jedi/evaluate/iterable.py +++ b/jedi/evaluate/iterable.py @@ -550,6 +550,11 @@ class ArrayInstance(IterableWrapper): Used for the usage of set() and list(). This is definitely a hack, but a good one :-) It makes it possible to use set/list conversions. + + In contrast to Array, ListComprehension and all other iterable types, this + is something that is only used inside `evaluate/compiled/fake/builtins.py` + and therefore doesn't need `names_dicts`, `py__bool__` and so on, because + we don't use these operations in `builtins.py`. """ def __init__(self, evaluator, instance): self._evaluator = evaluator