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):
|
for i, param in enumerate(self.params):
|
||||||
if self._key_name == param.name:
|
if self._key_name == param.name:
|
||||||
return i
|
return i
|
||||||
|
if self.params and self.params[-1]._definition.stars == 2:
|
||||||
|
return i
|
||||||
|
else:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
if self._index >= len(self.params):
|
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 None
|
||||||
return self._index
|
return self._index
|
||||||
|
|
||||||
|
|||||||
@@ -243,3 +243,17 @@ def test_signature_index():
|
|||||||
return Script(source).call_signatures()[0]
|
return Script(source).call_signatures()[0]
|
||||||
|
|
||||||
assert get('sorted([], key=a').index == 2
|
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