That's a bit of a fine line to walk. I noticed it when writing tests for IPython, which is not a implementation of Python, but is dealing with the nitty gritty details and manipulating the syntax tree it's true, but it's roughly the same class of project as implementing coverage.py, so if we disqualify all the people who notice these bugs because they are working on abstruse meta-code manipulation, I think both sides will come up empty.
On July 5, 2019 10:39:27 PM UTC, Ned Batchelder <n...@nedbatchelder.com> wrote: >I can understand the desire for correctness. I do have to wonder >though: has anyone *other* than language implementors noticed this >issue >with SyntaxErrors not being reported? > >Perhaps we should remember "Practicality beats purity"? > >--Ned. > >On 7/5/19 6:14 PM, Pablo Galindo Salgado wrote: >> > Until a solution which makes everyone happy can be found, I suggest >to >> move back to the status quo: revert the change. >> >> >More people seems to expect "if 0: ..." to be removed, than people >who >> care of syntax errors on "if 0". >> >> I don't think this is that clear. As Paul wrote on the issue this is >> the result of fixing a bug that has been open since >> 2008 (11 years), which itself was noticed independently, also in 2008 > >> (#1875 and #1920, respectively). >> He also independently discovered the same issue last year when >writing >> some tests for IPython. >> >> https://bugs.python.org/msg347394 >> >> On Fri, 5 Jul 2019 at 23:10, Victor Stinner <vstin...@redhat.com >> <mailto:vstin...@redhat.com>> wrote: >> >> Hi, >> >> Until a solution which makes everyone happy can be found, I >suggest to >> move back to the status quo: revert the change. >> >> More people seems to expect "if 0: ..." to be removed, than >people who >> care of syntax errors on "if 0". >> >> -- >> >> Would it be possible to detect if the "if 0" block would raise a >> syntax error, and only remove it if it doesn't raise a syntax >error? >> >> That's the approach I chose in my fatoptimizer project which is >> implemented as an AST optimizer: >> >https://github.com/vstinner/fatoptimizer/blob/master/fatoptimizer/dead_code.py >> >> See the tests to see which cases are *not* optimized: >> >https://github.com/vstinner/fatoptimizer/blob/master/test_fatoptimizer.py#L2428 >> >> Some examples (the "dead code elimitaiton" is not only about "if >0", >> but also "while 0", dead code after return, etc.): >> >> self.check_dont_optimize(""" >> def func(): >> if 0: >> yield >> """) >> >> self.check_dont_optimize("while 1: x = 1") >> >> self.check_dont_optimize(""" >> def func(obj): >> return >> if 0: >> yield from obj >> """) >> >> self.check_dont_optimize(""" >> try: >> pass >> except Exception: >> yield 3 >> """) >> >> See also the doc: >> >https://fatoptimizer.readthedocs.io/en/latest/optimizations.html#dead-code >> >> -- >> >> About code coverage, it seems like -X noopt would help: >> https://github.com/python/cpython/pull/13600 >> >> But I'm not sure anymore after Ned Batchelder wrote: >> >> "The real-word implications from my world are this: if your code >has >> "if 0:" clauses in it, and you measure its coverage, then because >the >> lines have not been optimized away, coverage.py will think the >lines >> are a possible execution path, and will be considered a miss >because >> they are not executed. This will reduce your coverage >percentage." >> https://bugs.python.org/issue37500#msg347362 >> >> Does it mean that coverage.py will report even more "false >positive" >> using -X noopt? >> >> Victor >> >> >> _______________________________________________ >> Python-Dev mailing list -- python-dev@python.org >> To unsubscribe send an email to python-dev-le...@python.org >> https://mail.python.org/mailman3/lists/python-dev.python.org/ >> Message archived at >https://mail.python.org/archives/list/python-dev@python.org/message/LWZPZQ2IL67DPX3RC342TTOVCLKDSBTJ/
_______________________________________________ Python-Dev mailing list -- python-dev@python.org To unsubscribe send an email to python-dev-le...@python.org https://mail.python.org/mailman3/lists/python-dev.python.org/ Message archived at https://mail.python.org/archives/list/python-dev@python.org/message/JWMNYB4F2S7XMCWLSHJ2IQG3D5MFEQMU/