From a352fc8595e529f020f6ae241b62096133707dbe Mon Sep 17 00:00:00 2001 From: Dave Halter Date: Fri, 26 Oct 2018 00:26:23 +0200 Subject: [PATCH] Fix an issue with recursion for arrays --- jedi/evaluate/context/instance.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/jedi/evaluate/context/instance.py b/jedi/evaluate/context/instance.py index 764b5188..a82c3dbb 100644 --- a/jedi/evaluate/context/instance.py +++ b/jedi/evaluate/context/instance.py @@ -264,8 +264,10 @@ class TreeInstance(AbstractInstanceContext): def name(self): return filters.ContextName(self, self.class_context.name.tree_name) - @evaluator_method_cache() - def get_annotated_class_object(self): + # This can recurse, if the initialization of the class includes a reference + # to itself. + @evaluator_method_cache(default=None) + def _get_annotated_class_object(self): from jedi.evaluate import pep0484 for func in self._get_annotation_init_functions(): @@ -287,7 +289,9 @@ class TreeInstance(AbstractInstanceContext): ) debug.dbg('Inferred instance context as %s', defined, color='BLUE') return defined - return self.class_context + + def get_annotated_class_object(self): + return self._get_annotated_class_object() or self.class_context def _get_annotation_init_functions(self): for init in self.class_context.py__getattribute__('__init__'):