mirror of
https://github.com/davidhalter/jedi.git
synced 2025-12-20 20:41:13 +08:00
Implememnt dict.values for FakeDict to avoid a recursion error. Fixes #1014.
This commit is contained in:
@@ -438,6 +438,7 @@ class FakeSequence(_FakeArray):
|
||||
return "<%s of %s>" % (type(self).__name__, self._lazy_context_list)
|
||||
|
||||
|
||||
@has_builtin_methods
|
||||
class FakeDict(_FakeArray):
|
||||
def __init__(self, evaluator, dct):
|
||||
super(FakeDict, self).__init__(evaluator, dct, u'dict')
|
||||
@@ -465,6 +466,13 @@ class FakeDict(_FakeArray):
|
||||
|
||||
return self._dct[index].infer()
|
||||
|
||||
@register_builtin_method('values')
|
||||
def _values(self):
|
||||
return ContextSet(FakeSequence(
|
||||
self.evaluator, 'tuple',
|
||||
[LazyKnownContext(v) for v in self.dict_values()]
|
||||
))
|
||||
|
||||
def dict_values(self):
|
||||
return ContextSet.from_sets(lazy_context.infer() for lazy_context in self._dct.values())
|
||||
|
||||
|
||||
@@ -35,6 +35,12 @@ next(open(''))
|
||||
#? ['__itemsize__']
|
||||
tuple.__itemsize__
|
||||
|
||||
#? ['__iter__']
|
||||
dict().values().__iter__
|
||||
|
||||
#? int()
|
||||
dict(a=3).values()[0]
|
||||
|
||||
# -----------------
|
||||
# type() calls with one parameter
|
||||
# -----------------
|
||||
|
||||
Reference in New Issue
Block a user