Fix #4158: pycode.parser failed to parse starred assignment

This commit is contained in:
Takeshi KOMIYA 2017-10-18 21:35:54 +09:00
parent 3369d9a03a
commit 4fdcae0584
2 changed files with 17 additions and 0 deletions

View File

@ -62,6 +62,8 @@ def get_lvar_names(node, self=None):
raise TypeError('The assignment %r is not instance variable' % node)
elif node_name == 'str':
return [node] # type: ignore
elif node_name == 'Starred':
return [node.value.id] # type: ignore
else:
raise NotImplementedError('Unexpected node name %r' % node_name)

View File

@ -9,6 +9,9 @@
:license: BSD, see LICENSE for details.
"""
import pytest
from six import PY2
from sphinx.pycode.parser import Parser
@ -116,6 +119,18 @@ def test_complex_assignment():
assert parser.definitions == {}
@pytest.mark.skipif(PY2, reason='tests for py3 syntax')
def test_complex_assignment_py3():
source = 'a, *b, c = (1, 2, 3, 4) #: unpack assignment\n'
parser = Parser(source)
parser.parse()
assert parser.comments == {('', 'a'): 'unpack assignment',
('', 'b'): 'unpack assignment',
('', 'c'): 'unpack assignment',
}
assert parser.definitions == {}
def test_obj_assignment():
source = ('obj = SomeObject() #: some object\n'
'obj.attr = 1 #: attr1\n'