From bf4ec2282f0553b5287d920a2c55ffbfbea840de Mon Sep 17 00:00:00 2001 From: Dave Halter Date: Sun, 10 May 2020 11:37:58 +0200 Subject: [PATCH] Fix getattr completions on very weird cases, fixes #1573 --- jedi/api/completion.py | 3 +++ test/completion/classes.py | 7 +++++++ 2 files changed, 10 insertions(+) diff --git a/jedi/api/completion.py b/jedi/api/completion.py index acfbd634..cdf72ce8 100644 --- a/jedi/api/completion.py +++ b/jedi/api/completion.py @@ -586,6 +586,9 @@ def _complete_getattr(user_context, instance): ) for func in functions: tree_node = func.tree_node + if tree_node.type != 'funcdef': + continue + for return_stmt in tree_node.iter_return_stmts(): # Basically until the next comment we just try to find out if a # return statement looks exactly like `return getattr(x, name)`. diff --git a/test/completion/classes.py b/test/completion/classes.py index 5b7b42da..9d5c7c3d 100644 --- a/test/completion/classes.py +++ b/test/completion/classes.py @@ -419,6 +419,13 @@ GetattrArray().something[0] #? [] GetattrArray().something +class WeirdGetattr: + class __getattr__(): + pass + +#? [] +WeirdGetattr().something + # ----------------- # private vars