diff --git a/jedi/api/__init__.py b/jedi/api/__init__.py index 453873d7..3d204a01 100644 --- a/jedi/api/__init__.py +++ b/jedi/api/__init__.py @@ -195,7 +195,7 @@ class Script(object): if leaf is None: return [] - context = self._evaluator.create_context(self._get_module(), leaf) + context = self._evaluator.create_context(self._get_module(), leaf.parent) definitions = helpers.evaluate_goto_definition(self._evaluator, context, leaf) names = [s.name for s in definitions] diff --git a/jedi/evaluate/__init__.py b/jedi/evaluate/__init__.py index 4fbcdc62..80a6eade 100644 --- a/jedi/evaluate/__init__.py +++ b/jedi/evaluate/__init__.py @@ -431,8 +431,12 @@ class Evaluator(object): def_ = name.get_definition() is_simple_name = name.parent.type not in ('power', 'trailer') if is_simple_name: - if name.parent.type in ('file_input', 'classdef', 'funcdef'): - return [self.wrap(name.parent)] + if name.parent.type == 'classdef': + return [er.ClassContext(self, name.parent, context)] + elif name.parent.type == 'funcdef': + return [er.FunctionContext(self, context, name.parent)] + elif name.parent.type == 'file_input': + raise NotImplementedError if def_.type == 'expr_stmt' and name in def_.get_defined_names(): return self.eval_statement(context, def_, name) elif def_.type == 'for_stmt': diff --git a/test/test_regression.py b/test/test_regression.py index abb10727..26562e86 100644 --- a/test/test_regression.py +++ b/test/test_regression.py @@ -174,7 +174,8 @@ class TestRegression(TestCase): for i in range(2): completions = Script('').completions() c = get_str_completion(completions) - n = len(c._definition.subscopes[0].children[-1].children) + str_context, = c._name.infer() + n = len(str_context.classdef.children[-1].children) if i == 0: limit = n else: