mirror of
https://github.com/davidhalter/jedi.git
synced 2025-12-08 06:44:46 +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 = []
|
||||
named_param_name = stmt.get_defined_names()[0]
|
||||
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):
|
||||
param_names.append(param.get_name().names[-1])
|
||||
return param_names
|
||||
|
||||
@@ -390,6 +390,9 @@ class Class(use_metaclass(CachedMetaClass, Wrapper)):
|
||||
def py__call__(self, evaluator, 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 in_iterable(name, 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)'
|
||||
n = names(src, references=True)[-1]
|
||||
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