summaryrefslogtreecommitdiff
path: root/coverage/parser.py
diff options
context:
space:
mode:
authorNed Batchelder <ned@nedbatchelder.com>2016-01-01 12:18:57 -0500
committerNed Batchelder <ned@nedbatchelder.com>2016-01-01 12:18:57 -0500
commit9edd625b8fdb09b5494471d460eba11148104e28 (patch)
tree783820c9479493c9f37586e64ae2f04a88a51c09 /coverage/parser.py
parent334f95902f91e54e60600072d7e1816670627718 (diff)
downloadpython-coveragepy-git-9edd625b8fdb09b5494471d460eba11148104e28.tar.gz
All test_arcs.py tests pass on py27 and py35
--HG-- branch : ast-branch
Diffstat (limited to 'coverage/parser.py')
-rw-r--r--coverage/parser.py30
1 files changed, 21 insertions, 9 deletions
diff --git a/coverage/parser.py b/coverage/parser.py
index a5e12d35..b2618921 100644
--- a/coverage/parser.py
+++ b/coverage/parser.py
@@ -339,13 +339,27 @@ class AstArcAnalyzer(object):
def line_for_node(self, node):
"""What is the right line number to use for this node?"""
node_name = node.__class__.__name__
- if node_name == "Assign":
- return node.value.lineno
- elif node_name == "comprehension":
- # TODO: is this how to get the line number for a comprehension?
- return node.target.lineno
- else:
- return node.lineno
+ handler = getattr(self, "line_" + node_name, self.line_default)
+ return handler(node)
+
+ def line_Assign(self, node):
+ return self.line_for_node(node.value)
+
+ def line_Dict(self, node):
+ # Python 3.5 changed how dict literals are made.
+ if env.PYVERSION >= (3, 5):
+ return node.keys[0].lineno
+ return node.lineno
+
+ def line_List(self, node):
+ return self.line_for_node(node.elts[0])
+
+ def line_comprehension(self, node):
+ # TODO: is this how to get the line number for a comprehension?
+ return node.target.lineno
+
+ def line_default(self, node):
+ return node.lineno
def collect_arcs(self):
self.arcs = set()
@@ -358,8 +372,6 @@ class AstArcAnalyzer(object):
Return a set of line numbers, exits from this node to the next.
"""
node_name = node.__class__.__name__
- #print("Adding arcs for {}".format(node_name))
-
handler = getattr(self, "handle_" + node_name, self.handle_default)
return handler(node)