diff options
author | Ned Batchelder <ned@nedbatchelder.com> | 2020-12-31 18:26:00 -0500 |
---|---|---|
committer | Ned Batchelder <ned@nedbatchelder.com> | 2021-01-10 09:46:18 -0500 |
commit | bd90b202587dd9f1e2e1319c1c542545c7263dd3 (patch) | |
tree | 0ea3dff2903cb5be1869dde55434e93e2677ccff /coverage/parser.py | |
parent | 13f15b0e4316865287d4b5ae1d4f856dac9f9ecb (diff) | |
download | python-coveragepy-git-bd90b202587dd9f1e2e1319c1c542545c7263dd3.tar.gz |
In 3.10, modules always have firstlineno==1
Diffstat (limited to 'coverage/parser.py')
-rw-r--r-- | coverage/parser.py | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/coverage/parser.py b/coverage/parser.py index 007f7599..6a3ca2fc 100644 --- a/coverage/parser.py +++ b/coverage/parser.py @@ -205,6 +205,12 @@ class PythonParser(object): if not empty: self.raw_statements.update(self.byte_parser._find_statements()) + # The first line of modules can lie and say 1 always, even if the first + # line of code is later. If so, map 1 to the actual first line of the + # module. + if env.PYBEHAVIOR.module_firstline_1 and self._multiline: + self._multiline[1] = min(self.raw_statements) + def first_line(self, line): """Return the first line number of the statement including `line`.""" if line < 0: @@ -620,7 +626,9 @@ class AstArcAnalyzer(object): return node.lineno def _line__Module(self, node): - if node.body: + if env.PYBEHAVIOR.module_firstline_1: + return 1 + elif node.body: return self.line_for_node(node.body[0]) else: # Empty modules have no line number, they always start at 1. |