Avoid goto crashes on unfinished keyword calls (#2106)

This commit is contained in:
Elias
2026-09-20 07:13:11 +00:00
committed by GitHub
parent ef5d361121
commit 19236b472b
3 changed files with 16 additions and 0 deletions
+1
View File
@@ -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.
+2
View File
@@ -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])
+13
View File
@@ -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)