summaryrefslogtreecommitdiff
path: root/coverage/parser.py
diff options
context:
space:
mode:
authorNed Batchelder <ned@nedbatchelder.com>2016-02-07 08:03:52 -0500
committerNed Batchelder <ned@nedbatchelder.com>2016-02-07 08:03:52 -0500
commitb8f054fcac467af98f23a8915df29a458437ad71 (patch)
treeb07ec3bed2554a6f05c0c5a5a5ecaec61e49f0b7 /coverage/parser.py
parent7ae0b1a079266ba71ee96cf61eb93f934e6f9ec3 (diff)
downloadpython-coveragepy-git-b8f054fcac467af98f23a8915df29a458437ad71.tar.gz
Properly handle {**{'a':1}} literals
Diffstat (limited to 'coverage/parser.py')
-rw-r--r--coverage/parser.py9
1 files changed, 7 insertions, 2 deletions
diff --git a/coverage/parser.py b/coverage/parser.py
index e1f09c23..b73ac685 100644
--- a/coverage/parser.py
+++ b/coverage/parser.py
@@ -420,7 +420,12 @@ class AstArcAnalyzer(object):
def _line__Dict(self, node):
# Python 3.5 changed how dict literals are made.
if env.PYVERSION >= (3, 5) and node.keys:
- return node.keys[0].lineno
+ if node.keys[0] is not None:
+ return node.keys[0].lineno
+ else:
+ # Unpacked dict literals `{**{'a':1}}` have None as the key,
+ # use the value in that case.
+ return node.values[0].lineno
else:
return node.lineno
@@ -439,7 +444,7 @@ class AstArcAnalyzer(object):
OK_TO_DEFAULT = set([
"Assign", "Assert", "AugAssign", "Delete", "Exec", "Expr", "Global",
- "Import", "ImportFrom", "Pass", "Print",
+ "Import", "ImportFrom", "Nonlocal", "Pass", "Print",
])
def add_arcs(self, node):