You've already forked python-uncompyle6
mirror of
https://github.com/rocky/python-uncompyle6.git
synced 2025-08-03 08:49:51 +08:00
Fixed one thing in Python 2.7 and break another.
We'll go with this until we get to a more serious refactoring.
This commit is contained in:
10
test/simple_source/bug24/03_iftrue.py
Normal file
10
test/simple_source/bug24/03_iftrue.py
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
# Python 2.4 (and before?) bug in handling unconditional "else if true"
|
||||||
|
# Doesn't occur in Python > 2.4
|
||||||
|
# From Issue #187
|
||||||
|
def unconditional_if_true_24(foo):
|
||||||
|
if not foo:
|
||||||
|
pass
|
||||||
|
elif 1:
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
return None
|
22
test/simple_source/bug27+/06_raise.py
Normal file
22
test/simple_source/bug27+/06_raise.py
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
# Bug in Python 2.7 is code creating a (useless) JUMP_ABSOLUTE to the instruction right after
|
||||||
|
# the "raise" which causes the
|
||||||
|
|
||||||
|
# RUNNABLE!
|
||||||
|
def testit(a, b):
|
||||||
|
if a:
|
||||||
|
if not b:
|
||||||
|
raise AssertionError("test JUMP_ABSOLUTE to next instruction")
|
||||||
|
|
||||||
|
def testit2(a, b):
|
||||||
|
if a:
|
||||||
|
if not b:
|
||||||
|
raise AssertionError("test with dead code after raise")
|
||||||
|
x = 10
|
||||||
|
|
||||||
|
testit(False, True)
|
||||||
|
testit(False, False)
|
||||||
|
testit(True, True)
|
||||||
|
|
||||||
|
testit2(False, True)
|
||||||
|
testit2(False, False)
|
||||||
|
testit2(True, True)
|
@@ -4,6 +4,7 @@
|
|||||||
# try. In 3.x we not distinguising this jump out of the loop with a jump to the
|
# try. In 3.x we not distinguising this jump out of the loop with a jump to the
|
||||||
# end of the "try".
|
# end of the "try".
|
||||||
|
|
||||||
|
# RUNNABLE!
|
||||||
def testit(stmts):
|
def testit(stmts):
|
||||||
|
|
||||||
# Bug was confusing When the except jumps back to the beginning of the block
|
# Bug was confusing When the except jumps back to the beginning of the block
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
# Copyright (c) 2016-2018 Rocky Bernstein
|
# Copyright (c) 2016-2019 Rocky Bernstein
|
||||||
# Copyright (c) 2005 by Dan Pascu <dan@windowmaker.org>
|
# Copyright (c) 2005 by Dan Pascu <dan@windowmaker.org>
|
||||||
# Copyright (c) 2000-2002 by hartmut Goebel <hartmut@goebel.noris.de>
|
# Copyright (c) 2000-2002 by hartmut Goebel <hartmut@goebel.noris.de>
|
||||||
|
|
||||||
@@ -208,8 +208,6 @@ class Python27Parser(Python2Parser):
|
|||||||
self.check_reduce['and'] = 'AST'
|
self.check_reduce['and'] = 'AST'
|
||||||
# self.check_reduce['or'] = 'AST'
|
# self.check_reduce['or'] = 'AST'
|
||||||
self.check_reduce['raise_stmt1'] = 'AST'
|
self.check_reduce['raise_stmt1'] = 'AST'
|
||||||
self.check_reduce['assert'] = 'AST'
|
|
||||||
self.check_reduce['assert2'] = 'AST'
|
|
||||||
self.check_reduce['list_if_not'] = 'AST'
|
self.check_reduce['list_if_not'] = 'AST'
|
||||||
self.check_reduce['list_if'] = 'AST'
|
self.check_reduce['list_if'] = 'AST'
|
||||||
self.check_reduce['conditional_true'] = 'AST'
|
self.check_reduce['conditional_true'] = 'AST'
|
||||||
|
Reference in New Issue
Block a user