diff --git a/jedi/inference/value/iterable.py b/jedi/inference/value/iterable.py index 3fc39e52..d23ca13e 100644 --- a/jedi/inference/value/iterable.py +++ b/jedi/inference/value/iterable.py @@ -192,13 +192,17 @@ class Sequence(LazyAttributeOverwrite, IterableMixin): def _get_generics(self): return (self.merge_types_of_iterate().py__class__(),) + @inference_state_method_cache(default=()) + def _cached_generics(self): + return self._get_generics() + def _get_wrapped_value(self): from jedi.inference.gradual.base import GenericClass from jedi.inference.gradual.generics import TupleGenericManager klass = compiled.builtin_from_name(self.inference_state, self.array_type) c, = GenericClass( klass, - TupleGenericManager(self._get_generics()) + TupleGenericManager(self._cached_generics()) ).execute_annotation() return c diff --git a/test/completion/recursion.py b/test/completion/recursion.py index 1e882bfa..e595497f 100644 --- a/test/completion/recursion.py +++ b/test/completion/recursion.py @@ -103,3 +103,15 @@ while True: bar = bar # type: bar #? int() bar + + +class Comprehension: + def __init__(self, foo): + self.foo = foo + + def update(self): + self.foo = (self.foo,) + + +#? int() tuple() +Comprehension(1).foo[0]