diff --git a/jedi/api/__init__.py b/jedi/api/__init__.py index 46308ffa..a9ae4dae 100644 --- a/jedi/api/__init__.py +++ b/jedi/api/__init__.py @@ -471,16 +471,18 @@ class Script(object): goto_path = self._user_context.get_path_under_cursor() context = self._user_context.get_context() user_stmt = self._parser.user_stmt() + user_scope = self._parser.user_scope() + # TODO restructure this. stmt is not always needed. stmt = self._get_under_cursor_stmt(goto_path) if stmt is None: return [] - if user_stmt is None: + if user_scope is None: last_name = None else: # Try to use the parser if possible. - last_name = user_stmt.name_for_position(self._pos) + last_name = user_scope.name_for_position(self._pos) if last_name is None: last_name = stmt diff --git a/jedi/evaluate/__init__.py b/jedi/evaluate/__init__.py index d52bcd6b..21faa1a7 100644 --- a/jedi/evaluate/__init__.py +++ b/jedi/evaluate/__init__.py @@ -484,7 +484,7 @@ class Evaluator(object): self.find_types(typ, name, is_goto=True) for typ in types )) else: - return self.find_types(scope, name, name.start_pos, + return self.find_types(scope, name, stmt.start_pos, search_global=True, is_goto=True) diff --git a/test/completion/goto.py b/test/completion/goto.py index 663c15d7..ad438309 100644 --- a/test/completion/goto.py +++ b/test/completion/goto.py @@ -185,7 +185,7 @@ for i in range(1): i for key, value in [(1,2)]: - #! ['for key,value in [(1, 2)]: key'] + #! ['for key, value in [(1,2)]: key'] key for i in []: