diff --git a/jedi/evaluate/__init__.py b/jedi/evaluate/__init__.py index a98514d5..5b6c8f93 100644 --- a/jedi/evaluate/__init__.py +++ b/jedi/evaluate/__init__.py @@ -468,7 +468,7 @@ class Evaluator(object): return helpers.evaluate_call_of_leaf(context, name) def goto(self, context, name): - definition = name._get_definition(import_name_always=True) + definition = name._get_definition(import_name_always=True) or name par = name.parent typ = par.type @@ -501,9 +501,9 @@ class Evaluator(object): # Only take the parent, because if it's more complicated than just # a name it's something you can "goto" again. return [TreeNameDefinition(context, name)] - elif typ == 'param' and par.name: + elif definition.type == 'param': return [ParamName(context, name)] - elif typ in ('param', 'funcdef', 'classdef') and par.name is name: + elif typ in ('funcdef', 'classdef') and par.name is name: return [TreeNameDefinition(context, name)] elif isinstance(definition, tree.Import): module_names = imports.infer_import(context, name, is_goto=True) diff --git a/test/completion/goto.py b/test/completion/goto.py index 33ca4103..adff012d 100644 --- a/test/completion/goto.py +++ b/test/completion/goto.py @@ -184,7 +184,7 @@ param = ClassDef def ab1(param): pass #! 9 ['param param'] def ab2(param): pass -#! 11 ['param a=param'] +#! 11 ['param = ClassDef'] def ab3(a=param): pass ab1(ClassDef);ab2(ClassDef);ab3(ClassDef)