diff --git a/jedi/api/__init__.py b/jedi/api/__init__.py index 8a239051..9cde1d42 100644 --- a/jedi/api/__init__.py +++ b/jedi/api/__init__.py @@ -253,8 +253,6 @@ class Script(object): context = self._evaluator.create_context(self._get_module(), leaf) definitions = helpers.evaluate_goto_definition(self._evaluator, context, leaf) - # We don't want stubs here we want the actual contexts, if possible. - definitions = try_stubs_to_actual_context_set(definitions, prefer_stub_to_compiled=True) names = [s.name for s in definitions] defs = [classes.Definition(self._evaluator, name) for name in names] diff --git a/jedi/evaluate/__init__.py b/jedi/evaluate/__init__.py index e7aa53da..ce458087 100644 --- a/jedi/evaluate/__init__.py +++ b/jedi/evaluate/__init__.py @@ -85,7 +85,7 @@ from jedi.evaluate.context.iterable import CompForContext from jedi.evaluate.syntax_tree import eval_trailer, eval_expr_stmt, \ eval_node, check_tuple_assignments from jedi.evaluate.gradual.conversion import try_stub_to_actual_names, \ - stub_to_actual_context_set + try_stubs_to_actual_context_set def _execute(context, arguments): @@ -261,6 +261,13 @@ class Evaluator(object): return eval_node(context, element) def goto_definitions(self, context, name): + # We don't want stubs here we want the actual contexts, if possible. + return try_stubs_to_actual_context_set( + self._goto_definitions(context, name), + prefer_stub_to_compiled=True + ) + + def _goto_definitions(self, context, name): def_ = name.get_definition(import_name_always=True) if def_ is not None: type_ = def_.type @@ -270,10 +277,7 @@ class Evaluator(object): c = ClassContext(self, context, name.parent) else: c = FunctionContext.from_context(context, name.parent) - if context.is_stub(): - return stub_to_actual_context_set(c) - else: - return ContextSet([c]) + return ContextSet([c]) if type_ == 'expr_stmt': is_simple_name = name.parent.type not in ('power', 'trailer') diff --git a/test/run.py b/test/run.py index f398ab0a..a438e1d2 100755 --- a/test/run.py +++ b/test/run.py @@ -126,6 +126,7 @@ from jedi.api.classes import Definition from jedi.api.completion import get_user_scope from jedi import parser_utils from jedi.api.environment import get_default_environment, get_system_environment +from jedi.evaluate.gradual.conversion import try_stubs_to_actual_context_set TEST_COMPLETIONS = 0 @@ -230,7 +231,10 @@ class IntegrationTestCase(object): if user_context.api_type == 'function': user_context = user_context.get_function_execution() element.parent = user_context.tree_node - results = evaluator.eval_element(user_context, element) + results = try_stubs_to_actual_context_set( + evaluator.eval_element(user_context, element), + prefer_stub_to_compiled=True + ) if not results: raise Exception('Could not resolve %s on line %s' % (match.string, self.line_nr - 1))