IndexError reporting on an empty decorated function under Python 3.7 · Issue #640 · nedbat/coveragepy (original) (raw)

$ python -V
Python 3.7.0b1

$ cat foob.py
def decorator(func):
    return func

class Class:
    @decorator
    def foo(self):
        """Docstring"""

$ coverage run --branch foob.py && coverage xml
Traceback (most recent call last):
  File "/usr/local/virtualenvs/tmp-e47d674e964684d7/bin/coverage", line 11, in <module>
    sys.exit(main())
  File "/usr/local/virtualenvs/tmp-e47d674e964684d7/lib/python3.7/site-packages/coverage/cmdline.py", line 753, in main
    status = CoverageScript().command_line(argv)
  File "/usr/local/virtualenvs/tmp-e47d674e964684d7/lib/python3.7/site-packages/coverage/cmdline.py", line 522, in command_line
    total = self.coverage.xml_report(outfile=outfile, **report_args)
  File "/usr/local/virtualenvs/tmp-e47d674e964684d7/lib/python3.7/site-packages/coverage/control.py", line 1140, in xml_report
    return reporter.report(morfs, outfile=outfile)
  File "/usr/local/virtualenvs/tmp-e47d674e964684d7/lib/python3.7/site-packages/coverage/xmlreport.py", line 72, in report
    self.report_files(self.xml_file, morfs)
  File "/usr/local/virtualenvs/tmp-e47d674e964684d7/lib/python3.7/site-packages/coverage/report.py", line 91, in report_files
    report_fn(fr, self.coverage._analyze(fr))
  File "/usr/local/virtualenvs/tmp-e47d674e964684d7/lib/python3.7/site-packages/coverage/control.py", line 970, in _analyze
    return Analysis(self.data, it)
  File "/usr/local/virtualenvs/tmp-e47d674e964684d7/lib/python3.7/site-packages/coverage/results.py", line 28, in __init__
    self._arc_possibilities = sorted(self.file_reporter.arcs())
  File "/usr/local/virtualenvs/tmp-e47d674e964684d7/lib/python3.7/site-packages/coverage/python.py", line 208, in arcs
    return self.parser.arcs()
  File "/usr/local/virtualenvs/tmp-e47d674e964684d7/lib/python3.7/site-packages/coverage/parser.py", line 263, in arcs
    self._analyze_ast()
  File "/usr/local/virtualenvs/tmp-e47d674e964684d7/lib/python3.7/site-packages/coverage/parser.py", line 273, in _analyze_ast
    aaa.analyze()
  File "/usr/local/virtualenvs/tmp-e47d674e964684d7/lib/python3.7/site-packages/coverage/parser.py", line 545, in analyze
    code_object_handler(node)
  File "/usr/local/virtualenvs/tmp-e47d674e964684d7/lib/python3.7/site-packages/coverage/parser.py", line 1089, in _code_object__ClassDef
    exits = self.add_body_arcs(node.body, from_start=ArcStart(start))
  File "/usr/local/virtualenvs/tmp-e47d674e964684d7/lib/python3.7/site-packages/coverage/parser.py", line 666, in add_body_arcs
    prev_starts = self.add_arcs(body_node)
  File "/usr/local/virtualenvs/tmp-e47d674e964684d7/lib/python3.7/site-packages/coverage/parser.py", line 629, in add_arcs
    return handler(node)
  File "/usr/local/virtualenvs/tmp-e47d674e964684d7/lib/python3.7/site-packages/coverage/parser.py", line 834, in _handle_decorated
    body_start = self.line_for_node(node.body[0])
IndexError: list index out of range