summaryrefslogtreecommitdiff
path: root/sphinx/pycode/parser.py
diff options
context:
space:
mode:
Diffstat (limited to 'sphinx/pycode/parser.py')
-rw-r--r--sphinx/pycode/parser.py11
1 files changed, 9 insertions, 2 deletions
diff --git a/sphinx/pycode/parser.py b/sphinx/pycode/parser.py
index 9b5cb13c9..f9644c38e 100644
--- a/sphinx/pycode/parser.py
+++ b/sphinx/pycode/parser.py
@@ -52,8 +52,13 @@ def get_lvar_names(node, self=None):
else:
raise TypeError('The assignment %r is not instance variable' % node)
elif node_name in ('Tuple', 'List'):
- members = [get_lvar_names(elt) for elt in node.elts] # type: ignore
- return sum(members, [])
+ members = []
+ for elt in node.elts: # type: ignore
+ try:
+ members.extend(get_lvar_names(elt, self))
+ except TypeError:
+ pass
+ return members
elif node_name == 'Attribute':
if node.value.__class__.__name__ == 'Name' and self and node.value.id == self_id: # type: ignore # NOQA
# instance variable
@@ -62,6 +67,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 get_lvar_names(node.value, self) # type: ignore
else:
raise NotImplementedError('Unexpected node name %r' % node_name)