diff options
author | Ned Batchelder <ned@nedbatchelder.com> | 2016-01-01 12:18:57 -0500 |
---|---|---|
committer | Ned Batchelder <ned@nedbatchelder.com> | 2016-01-01 12:18:57 -0500 |
commit | 4b51265510020834db47ac6cf9ad5314ff16419f (patch) | |
tree | 6f0eaa7183ad85d33a58ec05581d5f536a476b0a /coverage/parser.py | |
parent | fc795063a718138dfc3d6900adb3db0957f130a7 (diff) | |
download | python-coveragepy-4b51265510020834db47ac6cf9ad5314ff16419f.tar.gz |
All test_arcs.py tests pass on py27 and py35
Diffstat (limited to 'coverage/parser.py')
-rw-r--r-- | coverage/parser.py | 30 |
1 files changed, 21 insertions, 9 deletions
diff --git a/coverage/parser.py b/coverage/parser.py index a5e12d3..b261892 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) |