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