diff --git a/test/bytecode_pypy3.2/06_tryifelse.pyc-notyet b/test/bytecode_pypy3.2/06_tryifelse.pyc similarity index 100% rename from test/bytecode_pypy3.2/06_tryifelse.pyc-notyet rename to test/bytecode_pypy3.2/06_tryifelse.pyc diff --git a/uncompyle6/scanners/scanner3.py b/uncompyle6/scanners/scanner3.py index 76344adc..fdbbd14a 100644 --- a/uncompyle6/scanners/scanner3.py +++ b/uncompyle6/scanners/scanner3.py @@ -735,6 +735,10 @@ class Scanner3(scan.Scanner): self.structs.append({'type': 'if-then', 'start': start, 'end': rtarget}) + jump_prev = prev_op[offset] + if self.is_pypy and code[jump_prev] == self.opc.COMPARE_OP: + if self.opc.cmp_op[code[jump_prev+1]] == 'exception match': + return self.return_end_ifs.add(prev_op[rtarget]) elif op in self.jump_if_pop: diff --git a/uncompyle6/scanners/tok.py b/uncompyle6/scanners/tok.py index 70040b76..c5a1b428 100644 --- a/uncompyle6/scanners/tok.py +++ b/uncompyle6/scanners/tok.py @@ -69,8 +69,9 @@ class Token: pattr = "to " + str(self.pattr) pass elif self.op in self.opc.hascompare: - pattr = self.opc.cmp_op[self.attr] - # And so on. See xdis/bytecode.py get_instructions_bytes + if isinstance(self.attr, int): + pattr = self.opc.cmp_op[self.attr] + # And so on. See xdis/bytecode.py get_instructions_bytes pass else: pattr = ''