forked from VimPlug/jedi
partial support for *args/**kwargs in CallSignature.index, fixes #395
This commit is contained in:
@@ -698,9 +698,17 @@ class CallSignature(Definition):
|
||||
for i, param in enumerate(self.params):
|
||||
if self._key_name == param.name:
|
||||
return i
|
||||
if self.params and self.params[-1]._definition.stars == 2:
|
||||
return i
|
||||
else:
|
||||
return None
|
||||
|
||||
if self._index >= len(self.params):
|
||||
|
||||
for i, param in enumerate(self.params):
|
||||
# *args case
|
||||
if param._definition.stars == 1:
|
||||
return i
|
||||
return None
|
||||
return self._index
|
||||
|
||||
|
||||
@@ -243,3 +243,17 @@ def test_signature_index():
|
||||
return Script(source).call_signatures()[0]
|
||||
|
||||
assert get('sorted([], key=a').index == 2
|
||||
assert get('sorted([], no_key=a').index is None
|
||||
|
||||
args_func = 'def foo(*kwargs): pass\n'
|
||||
assert get(args_func + 'foo(a').index == 0
|
||||
assert get(args_func + 'foo(a, b').index == 0
|
||||
|
||||
kwargs_func = 'def foo(**kwargs): pass\n'
|
||||
assert get(kwargs_func + 'foo(a=2').index == 0
|
||||
assert get(kwargs_func + 'foo(a=2, b=2').index == 0
|
||||
|
||||
both = 'def foo(*args, **kwargs): pass\n'
|
||||
assert get(both + 'foo(a=2').index == 1
|
||||
assert get(both + 'foo(a=2, b=2').index == 1
|
||||
assert get(both + 'foo(a, b, c').index == 0
|
||||
|
||||
Reference in New Issue
Block a user