mirror of
https://github.com/davidhalter/jedi.git
synced 2025-12-09 23:34:45 +08:00
Goto on named params in class calls is now working.
This commit is contained in:
@@ -337,7 +337,13 @@ class Evaluator(object):
|
|||||||
param_names = []
|
param_names = []
|
||||||
named_param_name = stmt.get_defined_names()[0]
|
named_param_name = stmt.get_defined_names()[0]
|
||||||
for typ in self.eval_call(call):
|
for typ in self.eval_call(call):
|
||||||
for param in typ.params:
|
if isinstance(typ, er.Class):
|
||||||
|
params = []
|
||||||
|
for init_method in typ.py__getattribute__('__init__'):
|
||||||
|
params += init_method.params
|
||||||
|
else:
|
||||||
|
params = typ.params
|
||||||
|
for param in params:
|
||||||
if unicode(param.get_name()) == unicode(named_param_name):
|
if unicode(param.get_name()) == unicode(named_param_name):
|
||||||
param_names.append(param.get_name().names[-1])
|
param_names.append(param.get_name().names[-1])
|
||||||
return param_names
|
return param_names
|
||||||
|
|||||||
@@ -390,6 +390,9 @@ class Class(use_metaclass(CachedMetaClass, Wrapper)):
|
|||||||
def py__call__(self, evaluator, params):
|
def py__call__(self, evaluator, params):
|
||||||
return [Instance(evaluator, self, params)]
|
return [Instance(evaluator, self, params)]
|
||||||
|
|
||||||
|
def py__getattribute__(self, name):
|
||||||
|
return self._evaluator.find_types(self, name)
|
||||||
|
|
||||||
def scope_names_generator(self, position=None, add_class_vars=True):
|
def scope_names_generator(self, position=None, add_class_vars=True):
|
||||||
def in_iterable(name, iterable):
|
def in_iterable(name, iterable):
|
||||||
""" checks if the name is in the variable 'iterable'. """
|
""" checks if the name is in the variable 'iterable'. """
|
||||||
|
|||||||
@@ -246,4 +246,6 @@ class TestGotoAssignments(TestCase):
|
|||||||
src = 'from threading import Thread; Thread(group=1)'
|
src = 'from threading import Thread; Thread(group=1)'
|
||||||
n = names(src, references=True)[-1]
|
n = names(src, references=True)[-1]
|
||||||
assert n.name == 'group'
|
assert n.name == 'group'
|
||||||
assert n.goto_assignments()
|
param_def = n.goto_assignments()[0]
|
||||||
|
assert param_def.name == 'group'
|
||||||
|
assert param_def.type == 'param'
|
||||||
|
|||||||
Reference in New Issue
Block a user