forked from VimPlug/jedi
Fix a call signature issue.
This commit is contained in:
@@ -347,7 +347,10 @@ class BaseDefinition(object):
|
|||||||
# Just take the first one here, not optimal, but currently
|
# Just take the first one here, not optimal, but currently
|
||||||
# there's no better solution.
|
# there's no better solution.
|
||||||
inferred = names[0].infer()
|
inferred = names[0].infer()
|
||||||
return get_param_names(next(iter(inferred)))
|
param_names = get_param_names(next(iter(inferred)))
|
||||||
|
if isinstance(context, er.ClassContext):
|
||||||
|
param_names = param_names[1:]
|
||||||
|
return param_names
|
||||||
elif isinstance(context, compiled.CompiledObject):
|
elif isinstance(context, compiled.CompiledObject):
|
||||||
return context.get_param_names()
|
return context.get_param_names()
|
||||||
return param_names
|
return param_names
|
||||||
|
|||||||
@@ -386,3 +386,37 @@ def test_lambda_params():
|
|||||||
assert sig.index == 0
|
assert sig.index == 0
|
||||||
assert sig.name == '<lambda>'
|
assert sig.name == '<lambda>'
|
||||||
assert [p.name for p in sig.params] == ['x']
|
assert [p.name for p in sig.params] == ['x']
|
||||||
|
|
||||||
|
|
||||||
|
def test_class_creation():
|
||||||
|
code = dedent('''\
|
||||||
|
class X():
|
||||||
|
def __init__(self, foo, bar):
|
||||||
|
self.foo = foo
|
||||||
|
''')
|
||||||
|
sig, = Script(code + 'X(').call_signatures()
|
||||||
|
assert sig.index == 0
|
||||||
|
assert sig.name == 'X'
|
||||||
|
assert [p.name for p in sig.params] == ['foo', 'bar']
|
||||||
|
|
||||||
|
sig, = Script(code + 'X.__init__(').call_signatures()
|
||||||
|
assert [p.name for p in sig.params] == ['self', 'foo', 'bar']
|
||||||
|
sig, = Script(code + 'X().__init__(').call_signatures()
|
||||||
|
assert [p.name for p in sig.params] == ['foo', 'bar']
|
||||||
|
|
||||||
|
|
||||||
|
def test_call_magic_method():
|
||||||
|
code = dedent('''\
|
||||||
|
class X():
|
||||||
|
def __call__(self, baz):
|
||||||
|
pass
|
||||||
|
''')
|
||||||
|
sig, = Script(code + 'X()(').call_signatures()
|
||||||
|
assert sig.index == 0
|
||||||
|
assert sig.name == 'X'
|
||||||
|
assert [p.name for p in sig.params] == ['baz']
|
||||||
|
|
||||||
|
sig, = Script(code + 'X.__call__(').call_signatures()
|
||||||
|
assert [p.name for p in sig.params] == ['self', 'baz']
|
||||||
|
sig, = Script(code + 'X().__call__(').call_signatures()
|
||||||
|
assert [p.name for p in sig.params] == ['baz']
|
||||||
|
|||||||
Reference in New Issue
Block a user