mirror of
https://github.com/davidhalter/jedi.git
synced 2026-09-21 15:13:16 +08:00
Avoid goto crashes on unfinished keyword calls (#2106)
This commit is contained in:
@@ -66,6 +66,7 @@ Code Contributors
|
||||
- Martin Vielsmaier (@moser) <martin@vielsmaier.net>
|
||||
- TingJia Wu (@WutingjiaX) <wutingjia@bytedance.com>
|
||||
- Nguyễn Hồng Quân <ng.hong.quan@gmail.com>
|
||||
- haoran3160-afk (@haoran3160-afk)
|
||||
|
||||
And a few more "anonymous" contributors.
|
||||
|
||||
|
||||
@@ -170,6 +170,8 @@ class AbstractTreeName(AbstractNameDefinition):
|
||||
trailer = par.parent
|
||||
if trailer.type == 'arglist':
|
||||
trailer = trailer.parent
|
||||
if trailer.type == 'error_node':
|
||||
return []
|
||||
if trailer.type != 'classdef':
|
||||
if trailer.type == 'decorator':
|
||||
value_set = context.infer_node(trailer.children[1])
|
||||
|
||||
@@ -231,6 +231,19 @@ def test_goto_follow_imports(Script):
|
||||
assert d.name == 'a'
|
||||
|
||||
|
||||
@pytest.mark.parametrize('prefix', ['', 'def foo(bar): pass\n', 'def f():\n '])
|
||||
@pytest.mark.parametrize('call', ['foo(bar=1', 'foo(bar=1,', 'foo(foo(bar=1'])
|
||||
def test_goto_incomplete_named_argument(Script, prefix, call):
|
||||
code = prefix + call
|
||||
column = code.splitlines()[-1].index('bar')
|
||||
assert Script(code).goto(column=column) == []
|
||||
|
||||
|
||||
def test_goto_named_argument_in_complete_inner_call(Script):
|
||||
param, = Script('def foo(bar): pass\nfoo(foo(bar=1)').goto(2, 8)
|
||||
assert (param.name, param.line, param.column) == ('bar', 1, 8)
|
||||
|
||||
|
||||
def test_goto_module(Script):
|
||||
def check(line, expected, follow_imports=False):
|
||||
script = Script(path=path)
|
||||
|
||||
Reference in New Issue
Block a user