
    5 f
2                    v   d Z ddlmZ ddlmZ ddl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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#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZM ddlNmOZO ddlPmQZQmRZRmSZS ddlTmUZU ddlVmWZWmXZXmYZYmZZZm[Z[m\Z\m]Z]m^Z^m_Z_m`Z`maZambZbmcZcmdZdmeZemfZfmgZgmhZhmiZimjZjmkZkmlZlmmZmmnZnmoZo dd	lpmqZqmrZrmsZsmtZt dd
lumvZvmwZwmxZxmyZymzZzm{Z{m|Z|m}Z}m~Z~mZmZmZmZmZmZmZmZmZmZmZmZmZ  G d deR          ZdS )zDispatcher used when transforming a mypy AST to the IR form.

mypyc.irbuild.builder and mypyc.irbuild.main are closely related.
    )annotations)NoReturn)H
AssertStmtAssertTypeExprAssignmentExprAssignmentStmt	AwaitExprBlock	BreakStmt	BytesExprCallExprCastExprClassDefComparisonExprComplexExprConditionalExprContinueStmt	DecoratorDelStmtDictExprDictionaryComprehensionEllipsisExprEnumCallExprExpressionStmt	FloatExprForStmtFuncDefGeneratorExpr
GlobalDeclIfStmtImport	ImportAll
ImportFrom	IndexExprIntExpr
LambdaExprListComprehensionListExpr	MatchStmt
MemberExprMypyFileNamedTupleExprNameExprNewTypeExprNonlocalDeclOperatorAssignmentStmtOpExprOverloadedFuncDefParamSpecExprPassStmtPromoteExpr	RaiseStmt
ReturnStmt
RevealExprSetComprehensionSetExpr	SliceExprStarExprStrExpr	SuperExprTempNodeTryStmt	TupleExprTypeAliasExprTypeApplicationTypedDictExprTypeVarExprTypeVarTupleExpr	UnaryExprVar	WhileStmtWithStmt	YieldExprYieldFromExpr)Value)	IRBuilder	IRVisitorUnsupportedException)transform_class_def)transform_assignment_exprtransform_bytes_exprtransform_call_exprtransform_comparison_exprtransform_complex_exprtransform_conditional_exprtransform_dict_expr"transform_dictionary_comprehensiontransform_ellipsistransform_float_exprtransform_generator_exprtransform_index_exprtransform_int_exprtransform_list_comprehensiontransform_list_exprtransform_member_exprtransform_name_exprtransform_op_exprtransform_set_comprehensiontransform_set_exprtransform_slice_exprtransform_str_exprtransform_super_exprtransform_tuple_exprtransform_unary_expr)transform_decoratortransform_func_deftransform_lambda_exprtransform_overloaded_func_def)transform_assert_stmttransform_assignment_stmttransform_await_exprtransform_blocktransform_break_stmttransform_continue_stmttransform_del_stmttransform_expression_stmttransform_for_stmttransform_if_stmttransform_importtransform_import_alltransform_import_fromtransform_match_stmt"transform_operator_assignment_stmttransform_raise_stmttransform_return_stmttransform_try_stmttransform_while_stmttransform_with_stmttransform_yield_exprtransform_yield_from_exprc                  f   e Zd ZU dZded<   ddZddZddZddZddZ	ddZ
ddZddZddZdd!Zdd#Zdd%Zdd'Zdd)Zdd+Zdd-Zdd/Zdd1Zdd3Zdd5Zdd7Zdd9Zdd;Zdd=Zdd?ZddAZddCZddGZ ddIZ!ddKZ"ddMZ#ddOZ$ddQZ%ddSZ&ddUZ'ddWZ(ddYZ)dd[Z*dd]Z+dd_Z,ddaZ-ddcZ.ddeZ/ddgZ0ddiZ1ddkZ2ddmZ3ddoZ4ddqZ5ddsZ6dduZ7ddwZ8ddyZ9dd{Z:dd}Z;ddZ<ddZ=ddZ>ddZ?ddZ@ddZAddZBddZCddZDddZEddZFddZGddZHddZIddZJddZKddZLddZMdS )IRBuilderVisitoraE  Mypy node visitor that dispatches to node transform implementations.

    This class should have no non-trivial logic.

    This visitor is separated from the rest of code to improve modularity and
    to avoid import cycles.

    This is based on the visitor pattern
    (https://en.wikipedia.org/wiki/Visitor_pattern).
    rN   buildermypyfiler+   returnNonec                    J d            )NFzuse transform_mypy_file instead )selfr   s     K/var/www/equiseq/venv/lib/python3.11/site-packages/mypyc/irbuild/visitor.pyvisit_mypy_filez IRBuilderVisitor.visit_mypy_file   s    7777u    cdefr   c                0    t          | j        |           d S N)rQ   r   )r   r   s     r   visit_class_defz IRBuilderVisitor.visit_class_def       DL$/////r   noder!   c                0    t          | j        |           d S r   )ry   r   r   r   s     r   visit_importzIRBuilderVisitor.visit_import   s    t,,,,,r   r#   c                0    t          | j        |           d S r   )r{   r   r   s     r   visit_import_fromz"IRBuilderVisitor.visit_import_from       dlD11111r   r"   c                0    t          | j        |           d S r   )rz   r   r   s     r   visit_import_allz!IRBuilderVisitor.visit_import_all       T\400000r   fdefr   c                0    t          | j        |           d S r   )rl   r   )r   r   s     r   visit_func_defzIRBuilderVisitor.visit_func_def       4<.....r   or2   c                0    t          | j        |           d S r   )rn   r   r   r   s     r   visit_overloaded_func_defz*IRBuilderVisitor.visit_overloaded_func_def   s    %dlA66666r   decr   c                0    t          | j        |           d S r   )rk   r   )r   r   s     r   visit_decoratorz IRBuilderVisitor.visit_decorator   s    DL#.....r   blockr
   c                0    t          | j        |           d S r   )rr   r   )r   r   s     r   visit_blockzIRBuilderVisitor.visit_block   s    e,,,,,r   stmtr   c                0    t          | j        |           d S r   )rv   r   r   r   s     r   visit_expression_stmtz&IRBuilderVisitor.visit_expression_stmt       !$,55555r   r7   c                b    t          | j        |           | j                                         d S r   )r   r   mark_block_unreachabler   s     r   visit_return_stmtz"IRBuilderVisitor.visit_return_stmt   s.    dlD111++-----r   r   c                0    t          | j        |           d S r   )rp   r   r   s     r   visit_assignment_stmtz&IRBuilderVisitor.visit_assignment_stmt   r   r   r0   c                0    t          | j        |           d S r   )r}   r   r   s     r   visit_operator_assignment_stmtz/IRBuilderVisitor.visit_operator_assignment_stmt   s    *4<>>>>>r   r    c                0    t          | j        |           d S r   )rx   r   r   s     r   visit_if_stmtzIRBuilderVisitor.visit_if_stmt   s    $,-----r   rI   c                0    t          | j        |           d S r   )r   r   r   s     r   visit_while_stmtz!IRBuilderVisitor.visit_while_stmt   r   r   r   c                0    t          | j        |           d S r   )rw   r   r   s     r   visit_for_stmtzIRBuilderVisitor.visit_for_stmt   r   r   r   c                b    t          | j        |           | j                                         d S r   )rs   r   r   r   s     r   visit_break_stmtz!IRBuilderVisitor.visit_break_stmt   .    T\4000++-----r   r   c                b    t          | j        |           | j                                         d S r   )rt   r   r   r   s     r   visit_continue_stmtz$IRBuilderVisitor.visit_continue_stmt   s.    d333++-----r   r6   c                b    t          | j        |           | j                                         d S r   )r~   r   r   r   s     r   visit_raise_stmtz!IRBuilderVisitor.visit_raise_stmt   r   r   r@   c                0    t          | j        |           d S r   )r   r   r   s     r   visit_try_stmtzIRBuilderVisitor.visit_try_stmt   r   r   rJ   c                0    t          | j        |           d S r   )r   r   r   s     r   visit_with_stmtz IRBuilderVisitor.visit_with_stmt   r   r   r4   c                    d S r   r   r   s     r   visit_pass_stmtz IRBuilderVisitor.visit_pass_stmt   s    r   r   c                0    t          | j        |           d S r   )ro   r   r   s     r   visit_assert_stmtz"IRBuilderVisitor.visit_assert_stmt   r   r   r   c                0    t          | j        |           d S r   )ru   r   r   s     r   visit_del_stmtzIRBuilderVisitor.visit_del_stmt   r   r   r   c                    d S r   r   r   s     r   visit_global_declz"IRBuilderVisitor.visit_global_decl       r   r/   c                    d S r   r   r   s     r   visit_nonlocal_declz$IRBuilderVisitor.visit_nonlocal_decl   r   r   r)   c                0    t          | j        |           d S r   )r|   r   r   s     r   visit_match_stmtz!IRBuilderVisitor.visit_match_stmt   r   r   exprr-   rM   c                ,    t          | j        |          S r   )rb   r   r   r   s     r   visit_name_exprz IRBuilderVisitor.visit_name_expr       "4<666r   r*   c                ,    t          | j        |          S r   )ra   r   r   s     r   visit_member_exprz"IRBuilderVisitor.visit_member_expr      $T\4888r   r>   c                ,    t          | j        |          S r   )rh   r   r   s     r   visit_super_exprz!IRBuilderVisitor.visit_super_expr      #DL$777r   r   c                ,    t          | j        |          S r   )rT   r   r   s     r   visit_call_exprz IRBuilderVisitor.visit_call_expr  r   r   rG   c                ,    t          | j        |          S r   )rj   r   r   s     r   visit_unary_exprz!IRBuilderVisitor.visit_unary_expr
  r   r   r1   c                ,    t          | j        |          S r   )rc   r   r   s     r   visit_op_exprzIRBuilderVisitor.visit_op_expr  s     t444r   r$   c                ,    t          | j        |          S r   )r]   r   r   s     r   visit_index_exprz!IRBuilderVisitor.visit_index_expr  r   r   r   c                ,    t          | j        |          S r   )rW   r   r   s     r   visit_conditional_exprz'IRBuilderVisitor.visit_conditional_expr  s    )$,===r   r   c                ,    t          | j        |          S r   )rU   r   r   s     r   visit_comparison_exprz&IRBuilderVisitor.visit_comparison_expr  s    (t<<<r   r%   c                ,    t          | j        |          S r   )r^   r   r   s     r   visit_int_exprzIRBuilderVisitor.visit_int_expr      !$,555r   r   c                ,    t          | j        |          S r   )r[   r   r   s     r   visit_float_exprz!IRBuilderVisitor.visit_float_expr  r   r   r   c                ,    t          | j        |          S r   )rV   r   r   s     r   visit_complex_exprz#IRBuilderVisitor.visit_complex_expr  s    %dlD999r   r=   c                ,    t          | j        |          S r   )rg   r   r   s     r   visit_str_exprzIRBuilderVisitor.visit_str_expr"  r   r   r   c                ,    t          | j        |          S r   )rS   r   r   s     r   visit_bytes_exprz!IRBuilderVisitor.visit_bytes_expr%  r   r   r   c                ,    t          | j        |          S r   )rZ   r   r   s     r   visit_ellipsiszIRBuilderVisitor.visit_ellipsis(  r   r   r(   c                ,    t          | j        |          S r   )r`   r   r   s     r   visit_list_exprz IRBuilderVisitor.visit_list_expr+  r   r   rA   c                ,    t          | j        |          S r   )ri   r   r   s     r   visit_tuple_exprz!IRBuilderVisitor.visit_tuple_expr.  r   r   r   c                ,    t          | j        |          S r   )rX   r   r   s     r   visit_dict_exprz IRBuilderVisitor.visit_dict_expr1  r   r   r:   c                ,    t          | j        |          S r   )re   r   r   s     r   visit_set_exprzIRBuilderVisitor.visit_set_expr4  r   r   r'   c                ,    t          | j        |          S r   )r_   r   r   s     r   visit_list_comprehensionz)IRBuilderVisitor.visit_list_comprehension7  s    +DL$???r   r9   c                ,    t          | j        |          S r   )rd   r   r   s     r   visit_set_comprehensionz(IRBuilderVisitor.visit_set_comprehension:  s    *4<>>>r   r   c                ,    t          | j        |          S r   )rY   r   r   s     r   visit_dictionary_comprehensionz/IRBuilderVisitor.visit_dictionary_comprehension=  s    1$,EEEr   r;   c                ,    t          | j        |          S r   )rf   r   r   s     r   visit_slice_exprz!IRBuilderVisitor.visit_slice_expr@  r   r   r   c                ,    t          | j        |          S r   )r\   r   r   s     r   visit_generator_exprz%IRBuilderVisitor.visit_generator_exprC  s    'd;;;r   r&   c                ,    t          | j        |          S r   )rm   r   r   s     r   visit_lambda_exprz"IRBuilderVisitor.visit_lambda_exprF  r   r   rK   c                ,    t          | j        |          S r   )r   r   r   s     r   visit_yield_exprz!IRBuilderVisitor.visit_yield_exprI  r   r   rL   c                ,    t          | j        |          S r   )r   r   r   s     r   visit_yield_from_exprz&IRBuilderVisitor.visit_yield_from_exprL      (q999r   r	   c                ,    t          | j        |          S r   )rq   r   r   s     r   visit_await_exprz!IRBuilderVisitor.visit_await_exprO  s    #DL!444r   r   c                ,    t          | j        |          S r   )rR   r   r   s     r   visit_assignment_exprz&IRBuilderVisitor.visit_assignment_exprR  r  r   r   c                    J d            NFz'can't compile analysis-only expressionsr   r   s     r   visit_enum_call_exprz%IRBuilderVisitor.visit_enum_call_exprW      ????ur   r5   c                    J d            r  r   r   s     r   visit__promote_exprz$IRBuilderVisitor.visit__promote_exprZ  r  r   r,   c                    J d            r  r   r   s     r   visit_namedtuple_exprz&IRBuilderVisitor.visit_namedtuple_expr]  r  r   r.   c                    J d            r  r   r   s     r   visit_newtype_exprz#IRBuilderVisitor.visit_newtype_expr`  r  r   r?   c                    J d            r  r   r   s     r   visit_temp_nodez IRBuilderVisitor.visit_temp_nodec  r  r   rB   c                    J d            r  r   r   s     r   visit_type_alias_exprz&IRBuilderVisitor.visit_type_alias_exprf  r  r   rC   c                    J d            r  r   r   s     r   visit_type_applicationz'IRBuilderVisitor.visit_type_applicationi  r  r   rE   c                    J d            r  r   r   s     r   visit_type_var_exprz$IRBuilderVisitor.visit_type_var_exprl  r  r   r3   c                    J d            r  r   r   s     r   visit_paramspec_exprz%IRBuilderVisitor.visit_paramspec_expro  r  r   rF   c                    J d            r  r   r   s     r   visit_type_var_tuple_exprz*IRBuilderVisitor.visit_type_var_tuple_exprr  r  r   rD   c                    J d            r  r   r   s     r   visit_typeddict_exprz%IRBuilderVisitor.visit_typeddict_expru  r  r   r8   c                    J d            r  r   r   s     r   visit_reveal_exprz"IRBuilderVisitor.visit_reveal_exprx  r  r   rH   c                    J d            )NFz4can't compile Var; should have been handled already?r   r   s     r   	visit_varzIRBuilderVisitor.visit_var{  s    LLLLur   r   c                    J d            )NFz-CastExpr should have been handled in CallExprr   r   s     r   visit_cast_exprz IRBuilderVisitor.visit_cast_expr~  s    EEEEur   r   c                    J d            )NFz3AssertTypeExpr should have been handled in CallExprr   r   s     r   visit_assert_type_exprz'IRBuilderVisitor.visit_assert_type_expr  s    KKKKur   r<   c                    J d            )NFz?should have been handled in Tuple/List/Set/DictExpr or CallExprr   r   s     r   visit_star_exprz IRBuilderVisitor.visit_star_expr  s    WWWWur   msgstrlineintr   c                T    | j                             ||           t                      )a  Reports an error and aborts compilation up until the last accept() call

        (accept() catches the UnsupportedException and keeps on
        processing. This allows errors to be non-blocking without always
        needing to write handling for them.
        )r   errorrP   )r   r;  r=  s      r   bailzIRBuilderVisitor.bail  s(     	3%%%"$$$r   N)r   r+   r   r   )r   r   r   r   )r   r!   r   r   )r   r#   r   r   )r   r"   r   r   )r   r   r   r   )r   r2   r   r   )r   r   r   r   )r   r
   r   r   )r   r   r   r   )r   r7   r   r   )r   r   r   r   )r   r0   r   r   )r   r    r   r   )r   rI   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r6   r   r   )r   r@   r   r   )r   rJ   r   r   )r   r4   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r/   r   r   )r   r)   r   r   )r   r-   r   rM   )r   r*   r   rM   )r   r>   r   rM   )r   r   r   rM   )r   rG   r   rM   )r   r1   r   rM   )r   r$   r   rM   )r   r   r   rM   )r   r   r   rM   )r   r%   r   rM   )r   r   r   rM   )r   r   r   rM   )r   r=   r   rM   )r   r   r   rM   )r   r   r   rM   )r   r(   r   rM   )r   rA   r   rM   )r   r   r   rM   )r   r:   r   rM   )r   r'   r   rM   )r   r9   r   rM   )r   r   r   rM   )r   r;   r   rM   )r   r   r   rM   )r   r&   r   rM   )r   rK   r   rM   )r   rL   r   rM   )r   r	   r   rM   )r   r   r   rM   )r   r   r   rM   )r   r5   r   rM   )r   r,   r   rM   )r   r.   r   rM   )r   r?   r   rM   )r   rB   r   rM   )r   rC   r   rM   )r   rE   r   rM   )r   r3   r   rM   )r   rF   r   rM   )r   rD   r   rM   )r   r8   r   rM   )r   rH   r   r   )r   r   r   rM   )r   r   r   rM   )r   r<   r   rM   )r;  r<  r=  r>  r   r   )N__name__
__module____qualname____doc____annotations__r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r	  r  r  r  r  r  r  r  r  r  r   r"  r$  r&  r(  r*  r,  r.  r0  r2  r4  r6  r8  r:  rA  r   r   r   r   r      s*        	 	 8 8 8 80 0 0 0- - - -2 2 2 21 1 1 1/ / / /7 7 7 7/ / / /- - - -
6 6 6 6. . . .6 6 6 6? ? ? ?. . . .1 1 1 1/ / / /. . . .. . . .. . . ./ / / /0 0 0 0   2 2 2 2/ / / /      1 1 1 1
7 7 7 79 9 9 98 8 8 87 7 7 78 8 8 85 5 5 58 8 8 8> > > >= = = =6 6 6 68 8 8 8: : : :6 6 6 68 8 8 86 6 6 67 7 7 78 8 8 87 7 7 76 6 6 6@ @ @ @? ? ? ?F F F F8 8 8 8< < < <9 9 9 98 8 8 8: : : :5 5 5 5: : : :
@ @ @ @@ @ @ @@ @ @ @@ @ @ @@ @ @ @@ @ @ @@ @ @ @@ @ @ @@ @ @ @@ @ @ @@ @ @ @@ @ @ @M M M MF F F FL L L LX X X X
% % % % % %r   r   N)rE  
__future__r   typingr   
mypy.nodesr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   mypyc.ir.opsrM   mypyc.irbuild.builderrN   rO   rP   mypyc.irbuild.classdefrQ   mypyc.irbuild.expressionrR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   mypyc.irbuild.functionrk   rl   rm   rn   mypyc.irbuild.statementro   rp   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   r|   r}   r~   r   r   r   r   r   r   r   r   r   r   <module>rP     sj   
 # " " " " "      I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I IT       L L L L L L L L L L 6 6 6 6 6 6                                                     6                                                          4% % % % %y % % % % %r   