diff --git a/jedi/api/__init__.py b/jedi/api/__init__.py index 620e44f4..16d3d997 100644 --- a/jedi/api/__init__.py +++ b/jedi/api/__init__.py @@ -451,7 +451,6 @@ class Script(object): if next(context) in ('class', 'def'): # The cursor is on a class/function name. - user_scope = self._parser.user_scope() definitions = set([user_scope.name]) elif isinstance(user_stmt, tree.Import): s, name = helpers.get_on_import_stmt(self._evaluator, diff --git a/jedi/evaluate/finder.py b/jedi/evaluate/finder.py index 11b087be..02f9b4e0 100644 --- a/jedi/evaluate/finder.py +++ b/jedi/evaluate/finder.py @@ -433,8 +433,10 @@ def check_flow_information(evaluator, flow, search_name, pos): break if isinstance(flow, (tree.IfStmt, tree.WhileStmt)): - element = flow.children[1] - result = _check_isinstance_type(evaluator, element, search_name) + potential_ifs = [c for c in flow.children[1::4] if c != ':'] + for if_test in reversed(potential_ifs): + if search_name.start_pos > if_test.end_pos: + return _check_isinstance_type(evaluator, if_test, search_name) return result diff --git a/test/completion/isinstance.py b/test/completion/isinstance.py index 008a1039..da0dd655 100644 --- a/test/completion/isinstance.py +++ b/test/completion/isinstance.py @@ -61,6 +61,9 @@ def isinstance_func(arr): # Shouldn't fail, even with the dot. #? 17 dict() value. + elif isinstance(value, int): + #? int() + value # ----------------- # Names with multiple indices.