NL i5pdZddlmZddlmZmZddlmZmZm Z m Z m Z m Z m Z mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7ddl8m9Z9ddl:m;Z;mZ>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJGddZKdd ZLGd d eMZNdd ZOdd ZPeCjeAjeIjeBjeFjeHjeJjeGjheRe;zZSddZTGdde(dZUy)z@Utilities for checking that internal ir is valid and consistent.) annotations)FUNC_STATICMETHODFuncIR)1Assign AssignMulti BaseAssign BasicBlockBoxBranchCallCallCCast ComparisonOp ControlOpDecRefExtendFloatFloatComparisonOpFloatNegFloatOpGetAttr GetElementPtrGotoIncRef InitStaticIntegerIntOp KeepAlive LoadAddressLoadErrorValue LoadGlobal LoadLiteralLoadMem LoadStatic MethodCallOp OpVisitor PrimitiveOpRaiseStandardErrorRegisterReturnSetAttr SetElementSetMemTruncateTupleGetTupleSetUnborrowUnboxUndef UnreachableValue) format_func)KNOWN_NATIVE_TYPESRArray RInstance RPrimitiveRTypeRUnionbytes_rprimitivedict_rprimitiveint_rprimitiveis_float_rprimitiveis_object_rprimitivelist_rprimitiverange_rprimitiveset_rprimitivestr_rprimitivetuple_rprimitivec$eZdZddZddZddZy)FnErrorc ||_||_yNsourcedescselfrMrNs \/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/mypyc/analysis/ircheck.py__init__zFnError.__init__Os  ct|txr4|j|jk(xr|j|jk(SrK) isinstancerIrMrN)rPothers rQ__eq__zFnError.__eq__Ss8 ug & b4;;%,,+F b499X]XbXbKb rSc<d|jd|jdS)NzFnError(source=z, desc=)rL)rPs rQ__repr__zFnError.__repr__Xs  WTYYKqAArSN)rMzOp | BasicBlockrNstrreturnNone)rVobjectr\bool)r\r[)__name__ __module__ __qualname__rRrWrZrSrQrIrINs BrSrIctg}t}|jD]}|js7|jt |j r|j dn|d|j ddD]_}t |tr|jt |d||vr|jt |d|j|a|jt||r|St|}|jD]$}|j D]}|j|&|jS)zNApplies validations to a given function ir and returns a list of errors found.zBlock not terminatedrLNz%Block has operations after control opzFunc has a duplicate op)setblocks terminatedappendrIopsrUraddextendcheck_op_sources_valid OpCheckeraccepterrors)fnrpop_setblockop op_checkers rQ check_func_irrv\s F UF  MM uyy}uKab ))CR. B"i( gR6]^_V| gR6OPQ JJrN    MM(,-  2J")) "B IIj ! ""   rSc eZdZy)IrCheckExceptionN)r`rarbrcrSrQrxrx{srSrxc t|}|rKtddjt||Dcgc]}|j|j fc}zycc}w)Nz'Internal error: Generated invalid IR:  )rvrxjoinr7rMrN)rqrpes rQassert_func_ir_validr}s[ 2 F  6ii BV(L!((AFF);(LMN O  )MsAc |g}t}t}|jD]}|j|j|jD]u}t |t r|j |j/t |ts@t |jts[|j |jw|j|j|jD]}|jD]}|jD]}t |tttfrt |t r8||vs4|j#t%|dt'|j(gt |tsx||vs}|j#t%|d|j*|S)Nz#Invalid op reference to op of type rLz!Invalid op reference to register )rfrgupdaterjrUrrkdestrsrcr*arg_regssourcesrrr4r&rirItyper`name)rqrp valid_opsvalid_registersrsrtrMs rQrmrmsx FI%(UO,#)) ,B"j)##BGG,B ,BFFH1M##BFF+  ,,2;;')) B**, fwu&=>+Y. #')'J4PVz can_coerce_to..s=Q=a(=c36K|]}t|ywrKr)rsrs rQrz can_coerce_to..sA!}Q-ArFT) rUr=anyitemsr;rdisjoint_typessizer:rB)rrs``rQrrs $=$**===$ # c: &xx>)dii>.Ixx499,,88tyy( ( c9 %'- - c6 "AsyyAA A rSceZdZd2dZd3dZd4dZd5dZd6dZd7dZd7dZ d8dZ d9d Z d:d Z d;d Z ddZd?dZd@dZdAdZdBdZdCdZdDdZdEdZdFdZdGdZdHdZdIdZdJdZdKdZdLdZdMdZdNdZ dOdZ!dPd Z"dQd!Z#dRd"Z$dSd#Z%dTd$Z&dUd%Z'dVd&Z(dWd'Z)dXd(Z*dYd)Z+dZd*Z,d[d+Z-d\d,Z.d]d-Z/d^d.Z0d_d/Z1d`d0Z2y1)arnc ||_g|_yrK) parent_fnrp)rPrs rQrRzOpChecker.__init__s"%' rScP|jjt||y)NrL)rprirIrOs rQfailzOpChecker.fails 7&t<=rSc|jD];}||jjvs|j|d|j=y)Nz"Invalid control operation target: rL)targetsrrgrlabel)rPrttargets rQcheck_control_op_targetsz"OpChecker.check_control_op_targetssGjjl _FT^^222 ,Nv||n*] ^ _rScxt||s.|j|d|jd|jyy)NzCannot coerce source type z to dest type rLrrr)rPrtrrs rQcheck_type_coercionzOpChecker.check_type_coercionsAS$' II"rScpt|js!|j|d|jdyy)NzFloat expected (actual type is rYrArrrPrtvs rQ expect_floatzOpChecker.expect_floats/"166* IIb;AFF81E F+rScTt|jr|j|dyy)NzFloat not expectedrrs rQexpect_non_floatzOpChecker.expect_non_floats" qvv & IIb. / 'rSc&|j|yrKrrPrts rQ visit_gotozOpChecker.visit_goto %%b)rSc&|j|yrKrrs rQ visit_branchzOpChecker.visit_branchrrSc|j||jj|jjj j yrK)rvaluerrdeclsigret_typers rQ visit_returnzOpChecker.visit_returns2   RXX]]DNN4G4G4K4K4T4TUrScyrKrcrs rQvisit_unreachablezOpChecker.visit_unreachables rScz|j||jj|jjyrK)rrrrrs rQ visit_assignzOpChecker.visit_assigns$   RVV[["'',,?rSc|jD]c}t|jjtsJ|j ||j|jjj eyrK)rrUrrr9r item_type)rPrtrs rQvisit_assign_multizOpChecker.visit_assign_multisS66 KCbggllF3 33  $ $R277<<3I3I J KrScyrKrcrs rQvisit_load_error_valuez OpChecker.visit_load_error_value s rSc |D]u}|Nt|ttttt t tfs|j|dt|dt|tsd|j||wy)Nz(Invalid type for item of tuple literal: rY) rUr[bytesr_intfloatcomplextuplerr check_tuple_items_valid_literals)rPrtrxs rQrz*OpChecker.check_tuple_items_valid_literalssg =A}ZCc5RY[`3a%b " Ha QRST!U#55b!<  =rSc |D]q}|*t|ttttt t fr0t|tr|j||S|j|dt|dsy)Nz,Invalid type for item of frozenset literal: rY) rUr[rr_rrrrrrr)rPrtrrs rQ$check_frozenset_items_valid_literalsz.OpChecker.check_frozenset_items_valid_literalssi YAyJq3tS%*QRAu%55b!< " LTRSWIUVWX  YrScd}|jd}n t|jtrd}nt|jtrd}nt|jtrd}nt|jt rd}nt|jt rd}nt|jtrd}nqt|jtrd}|j||jn8t|jtrd}|j||j|Jd|jj|dfvr-|j|d |d |jjyy) Nzbuiltins.objectz builtins.intz builtins.strzbuiltins.byteszbuiltins.floatzbuiltins.tuplez builtins.setz#Missed a case for LoadLiteral checkz/Invalid literal value for type: value has type z, but op has type )rrUrr[rr_rrrr frozensetrrrr)rPrt expected_types rQvisit_load_literalzOpChecker.visit_load_literal s4 88 -M # &*M # &*M % (,M $ '-M % (,M ' *-M % (,M  1 1"bhh ? ) ,+M  5 5b"(( C(O*OO( 77<< /@A A II%&8H  BrScyrKrcrs rQvisit_get_attrzOpChecker.visit_get_attrB rScyrKrcrs rQvisit_set_attrzOpChecker.visit_set_attrFrrScyrKrcrs rQvisit_load_staticzOpChecker.visit_load_staticK rScyrKrcrs rQvisit_init_staticzOpChecker.visit_init_staticNrrScyrKrcrs rQvisit_tuple_getzOpChecker.visit_tuple_getQrrScyrKrcrs rQvisit_tuple_setzOpChecker.visit_tuple_setUrrScyrKrcrs rQ visit_inc_refzOpChecker.visit_inc_refYrrScyrKrcrs rQ visit_dec_refzOpChecker.visit_dec_ref]rrSct|j|jjjD],\}}|j ||j |j .yrK)zipargsrqrrr)rPrt arg_value arg_runtimes rQ visit_callzOpChecker.visit_callasM'*"''25599>>&B K "I{  $ $R9I9I J KrSc|jjj|j}|jt k(rd}nd}t |j|zt |jjk7r|j|dt|j|jj|dD],\}}|j||j|j.y)Nrz)Incorrect number of args for method call.) receiver_typeclass_ir method_declmethodkindrlenrrrrrr)rPrtr decl_indexrrs rQvisit_method_callzOpChecker.visit_method_callgs&&//;;BIIF   0 0JJ rww<* $KOO,@,@(A A IIbE F'*"'';??3G3G 3T&U K "I{  $ $R9I9I J KrScyrKrcrs rQ visit_castzOpChecker.visit_castvrrScyrKrcrs rQ visit_boxzOpChecker.visit_boxyrrScyrKrcrs rQ visit_unboxzOpChecker.visit_unbox|rrScyrKrcrs rQvisit_raise_standard_errorz$OpChecker.visit_raise_standard_errorrrScyrKrcrs rQ visit_call_czOpChecker.visit_call_crrScyrKrcrs rQvisit_primitive_opzOpChecker.visit_primitive_oprrScyrKrcrs rQvisit_truncatezOpChecker.visit_truncaterrScyrKrcrs rQ visit_extendzOpChecker.visit_extendrrScyrKrcrs rQvisit_load_globalzOpChecker.visit_load_globalrrSct|j||j|j||jyrK)rlhsrhsrs rQ visit_int_opzOpChecker.visit_int_ops* b"&&) b"&&)rSc|j||jj|jj|j ||j|j ||jyrK)rrrrrrs rQvisit_comparison_opzOpChecker.visit_comparison_opsL   RVV[["&&++> b"&&) b"&&)rSct|j||j|j||jyrKrrrrs rQvisit_float_opzOpChecker.visit_float_op* "bff% "bff%rSc<|j||jyrK)rrrs rQvisit_float_negzOpChecker.visit_float_negs "bff%rSct|j||j|j||jyrKr rs rQvisit_float_comparison_opz#OpChecker.visit_float_comparison_oprrScyrKrcrs rQvisit_load_memzOpChecker.visit_load_memrrScyrKrcrs rQ visit_set_memzOpChecker.visit_set_memrrScyrKrcrs rQvisit_get_element_ptrzOpChecker.visit_get_element_ptrrrScyrKrcrs rQvisit_set_elementzOpChecker.visit_set_elementrrScyrKrcrs rQvisit_load_addresszOpChecker.visit_load_addressrrScyrKrcrs rQvisit_keep_alivezOpChecker.visit_keep_aliverrScyrKrcrs rQvisit_unborrowzOpChecker.visit_unborrowrrSN)rrr\r])rMr&rNr[r\r])rtrr\r])rtr&rr<rr<r\r])rtr&rr<rr<r\r])rtr&rr6r\r])rtrr\r])rtr r\r])rtr+r\r])rtr5r\r])rtrr\r])rtrr\r])rtr r\r])rtr"rztuple[object, ...]r\r])rtr"rzfrozenset[object]r\r])rtr"r\r])rtrr\r])rtr,r\r])rtr$r\r])rtrr\r])rtr0r\r])rtr1r\r])rtrr\r])rtrr\r])rtr r\r])rtr%r\r])rtrr\r])rtr r\r])rtr3r\r])rtr)r\r])rtr r\r])rtr(r\r])rtr/r\r])rtrr\r])rtr!r\r])rtrr\r])rtrr\r])rtrr\r])rtrr\r])rtrr\r])rtr#r\r])rtr.r\r])rtrr\r])rtr-r\r])rtrr\r])rtrr\r])rtr2r\r])3r`rarbrRrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr r rrrrrrrrr rcrSrQrnrns(>_  SG0**V @K  =Y D        K K         ** &&&       rSrnN)rqrr\z list[FnError])rqrr\r])rr<rr<r\r_)V__doc__ __future__rmypyc.ir.func_irrr mypyc.ir.opsrrrr r r r r rrrrrrrrrrrrrrrrrrr r!r"r#r$r%r&r'r(r)r*r+r,r-r.r/r0r1r2r3r4r5r6mypyc.ir.pprintr7mypyc.ir.rtypesr8r9r:r;r<r=r>r?r@rArBrCrDrErFrGrIrv Exceptionrxr}rmrrfrrrnrcrSrQr(sF"62222222222222f(( B B> y  %R  2c $c rS