diff --git a/jedi/evaluate/context/iterable.py b/jedi/evaluate/context/iterable.py index 66d0b968..f145aa3a 100644 --- a/jedi/evaluate/context/iterable.py +++ b/jedi/evaluate/context/iterable.py @@ -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()) diff --git a/test/completion/stdlib.py b/test/completion/stdlib.py index 30d7ce07..058294cc 100644 --- a/test/completion/stdlib.py +++ b/test/completion/stdlib.py @@ -35,6 +35,12 @@ next(open('')) #? ['__itemsize__'] tuple.__itemsize__ +#? ['__iter__'] +dict().values().__iter__ + +#? int() +dict(a=3).values()[0] + # ----------------- # type() calls with one parameter # -----------------