ó {G_Tc@s‹ddlZddlZddlmZddlZd„Zd„Zdejfd„ƒYZdd„Z e dkr‡e d e ƒndS( iÿÿÿÿN(tStringIOcCsKtƒ}tj}|t_tj|ƒ|t_|jƒ}|jƒ|S(N(Rtsyststdouttdistgetvaluetclose(tfunctfttmptresult((s//usr/local/lib/python2.7/test/test_peepholer.pyt disassembles       cCstt|ddƒƒS(Nttsingle(R tcompile(tline((s//usr/local/lib/python2.7/test/test_peepholer.pyt dis_singlest TestTranformscBs}eZd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z d„Z d „Z d „Z d „Z d „ZRS( cCsJd„}t|ƒ}xdD]}|j||ƒqW|jd|ƒdS(NcSs|dks~ndS(Ni((tx((s//usr/local/lib/python2.7/test/test_peepholer.pytunots t UNARY_NOTtPOP_JUMP_IF_FALSEtPOP_JUMP_IF_TRUE(RR(R t assertNotIntassertIn(tselfRtasmtelem((s//usr/local/lib/python2.7/test/test_peepholer.pyt test_unots    cCsCx<d d d d fD](\}}t|ƒ}|j||ƒqWdS( Ns not a is bs(is not)s not a in bs(not in)snot a is not bs(is)snot a not in bs(in)(s not a is bs(is not)(s not a in bs(not in)(snot a is not bs(is)(snot a not in bs(in)(RR(RRRR((s//usr/local/lib/python2.7/test/test_peepholer.pyttest_elim_inversion_of_is_or_ins cCsd„}t|ƒ}xdD]}|j||ƒqWxdD]}|j||ƒq=Wd„}|jdt|ƒƒ|jdt|ƒƒdS(NcSsd|S(N(tNone(R((s//usr/local/lib/python2.7/test/test_peepholer.pyR+st LOAD_GLOBALt LOAD_CONSTs(None)cSsdS(s1Adding a docstring made this test fail in Py2.5.0N(R(((s//usr/local/lib/python2.7/test/test_peepholer.pyR3s(R(Rs(None)(R RR(RRRR((s//usr/local/lib/python2.7/test/test_peepholer.pyttest_none_as_constant)s     cCs[d„}t|ƒ}xdD]}|j||ƒqWxdD]}|j||ƒq=WdS(NcSs xqtS(N(tlist(((s//usr/local/lib/python2.7/test/test_peepholer.pyR;sRRt JUMP_ABSOLUTE(s LOAD_CONSTsPOP_JUMP_IF_FALSE(R"(R RR(RRRR((s//usr/local/lib/python2.7/test/test_peepholer.pyttest_while_one9s     cCs`xYd d d fD]H\}}t|ƒ}|j||ƒ|jd|ƒ|jd|ƒqWdS( Nsa, = a,Rs a, b = a, btROT_TWOsa, b, c = a, b, ct ROT_THREEt BUILD_TUPLEt UNPACK_TUPLE(sa, = a,s LOAD_CONST(s a, b = a, bR$(sa, b, c = a, b, cR%(RRR(RRRR((s//usr/local/lib/python2.7/test/test_peepholer.pyttest_pack_unpackEs cCs_xOd d dddfD]8\}}t|ƒ}|j||ƒ|jd |ƒqWd „}dS(Ns a = 1,2,3s ((1, 2, 3))s ("a","b","c")s(('a', 'b', 'c'))s a,b,c = 1,2,3s(None, 1, None)s((None, 1, None))s((1, 2), 3, 4)s(((1, 2), 3, 4))R&cdSs8ddddddddd d ddddddddd d ddddddddd d ddddddddd d ddddddddd d ddddddddd d ddddddddd d ddddddddd d ddddddddd d ddddddddd d gdfdS( Niiiiiiiiii ((((s//usr/local/lib/python2.7/test/test_peepholer.pytcrater_s(s a = 1,2,3s ((1, 2, 3))(s ("a","b","c")s(('a', 'b', 'c'))(s a,b,c = 1,2,3s ((1, 2, 3))(s(None, 1, None)s((None, 1, None))(s((1, 2), 3, 4)s(((1, 2), 3, 4))(RRR(RRRRR)((s//usr/local/lib/python2.7/test/test_peepholer.pyt#test_folding_of_tuples_of_constantsPs cCs¿xpd!d"d#d$d%d&d'd(d)d*d+d,d-d.d/fD];\}}t|ƒ}|j|||ƒ|jd|ƒq4Wtdƒ}|jd|ƒ|jd|ƒtdƒ}|jd |ƒdS(0Ns a = 2+3+4s(9)s"@"*4s('@@@@')sa="abc" + "def"s ('abcdef')sa = 3**4s(81)sa = 3*4s(12)s a = 13//4s(3)sa = 14%4s(2)sa = 2+3s(5)sa = 13-4sa = (12,13)[1]s(13)s a = 13 << 2s(52)s a = 13 >> 2s a = 13 & 7s a = 13 ^ 7s(10)s a = 13 | 7s(15)tBINARY_sa=2+"b"s('b')s a="x"*1000s(1000)(s a = 2+3+4s(9)(s"@"*4s('@@@@')(sa="abc" + "def"s ('abcdef')(sa = 3**4s(81)(sa = 3*4s(12)(s a = 13//4s(3)(sa = 14%4s(2)(sa = 2+3s(5)(sa = 13-4s(9)(sa = (12,13)[1]s(13)(s a = 13 << 2s(52)(s a = 13 >> 2s(3)(s a = 13 & 7s(5)(s a = 13 ^ 7s(10)(s a = 13 | 7s(15)(RRR(RRRR((s//usr/local/lib/python2.7/test/test_peepholer.pyt#test_folding_of_binops_on_constantsms0   cCs°tdƒ}|jd|ƒ|jd|ƒtdƒ}|jd|ƒ|jd|ƒtdƒ}|jd|ƒtdƒ}|jd|ƒtdƒ}|jd|ƒdS( Ns u"foo"[0]s(u'f')t BINARY_SUBSCRsu"\u0061\uffff"[1]s (u'\uffff')s u"fuu"[10]su"\U00012345"[0]su"\U00012345abcdef"[3](RRR(RR((s//usr/local/lib/python2.7/test/test_peepholer.pyttest_binary_subscr_on_unicodeŒs     cCsŸxLd d d fD];\}}t|ƒ}|j|||ƒ|jd|ƒqWxIddfD];\}}t|ƒ}|j|||ƒ|jd|ƒq\WdS(Ns`1`s('1')s-0.5s(-0.5)s~-2s(1)tUNARY_s-"abc"s('abc')s~"abc"(s`1`s('1')(s-0.5s(-0.5)(s~-2s(1)(s-"abc"s('abc')(s~"abc"s('abc')(RRR(RRRR((s//usr/local/lib/python2.7/test/test_peepholer.pyt%test_folding_of_unaryops_on_constantsŸs  cCsXd„}t|ƒ}|jd|ƒ|jd|ƒ|j|jƒjdƒdƒdS(NcSs|S(N((R((s//usr/local/lib/python2.7/test/test_peepholer.pyR´sRs(None)t RETURN_VALUEi(R Rt assertEqualtsplittcount(RRR((s//usr/local/lib/python2.7/test/test_peepholer.pyttest_elim_extra_return²s   cCsXd„}t|ƒ}|jd|ƒ|jd|ƒ|j|jƒjdƒdƒdS(NcSs|r |S|S(N((tcondt true_valuet false_value((s//usr/local/lib/python2.7/test/test_peepholer.pyR½st JUMP_FORWARDR"R1i(R RR2R3R4(RRR((s//usr/local/lib/python2.7/test/test_peepholer.pyttest_elim_jump_to_return»s   cCsXd„}t|ƒ}|jd|ƒ|jd|ƒ|j|jƒjdƒdƒdS(NcSs0|r dS|rdSxdSx|r(dSdSdS(Niiiiii((tcond1tcond2((s//usr/local/lib/python2.7/test/test_peepholer.pyRÆsR9R"R1i(R RR2R3R4(RRR((s//usr/local/lib/python2.7/test/test_peepholer.pyttest_elim_jump_after_return1Äs  cCsgd„}t|ƒ}|jd|ƒ|j|jƒjdƒdƒ|j|jƒjdƒdƒdS(NcSsx |rdSqdS(Ni((R;R<((s//usr/local/lib/python2.7/test/test_peepholer.pyRÖsR9R"iR1i(R RR2R3R4(RRR((s//usr/local/lib/python2.7/test/test_peepholer.pyttest_elim_jump_after_return2Ôs   (t__name__t __module__RRR R#R(R*R,R.R0R5R:R=R>(((s//usr/local/lib/python2.7/test/test_peepholer.pyRs      cCsÌddl}ddlm}tf}|jdtfƒŒ|j|Œ|rÂt|dƒrÂddl}dgd}xAt t |ƒƒD]-}|j|Œ|j ƒ|j ƒ||s    Í