o
    f                     @   s   d Z ddlmZ ddlZddlZddlmZ ddlmZ ddl	m
Z
 g d	Zg d
Zg dZG dd deZedkrDddlZe  dS dS )z+
Uses TreeFragment to test invalid syntax.
    )absolute_importN   )
CythonTest   )	ExprNodes)CompileError)0_0_04_21_0000_00000b1001_01000xffff_ffff0o5_7_7z	1_00_00.5
1_00_00.5jz1_00_00.5e51_00_00j1_00_00e5_11e1_0z.1_4z.1_4e10b_00x_f0o_5r   r   1_00_00e5_1jz.1_4jz(1_2.5+3_3j)z(.5_6j))/0_42_z1.4j_0x_0b1_0xf_0o5_z0 if 1_Else 10_b00_xf0_o50_709_99	4_______2z0.1__4z0.1__4j0b1001__01000xffff__ffff0x___0o5__771e1__01e1__0jz1_.4z1_.4jz1._4z1._4jz._5z._5jz1.0e+_1z1.0e+_1jz1.4_jz1.4e5_j1_e1z1.4_e1z1.4_e1j1e_1z1.4e_1z1.4e_1jz
(1+1.5_j_)z	(1+1.5_j)z1_ 2z1 _2z1_2.2_ 1z1_2.2 _1z1_2e _1z1_2e2 _1z1_2e 2_1)
)z. . .r   r   )z. ..r   r   )z.. .r   r   )z. ...r   r   )z. ... .r   r   )z.. ... .r   r   )z. ... ..r   r   )z&
    (
        .
        ..
    )
    r      )z4
    [
        ..
        .,
        None
    ]
    r   r*   )z>
    {
        None,
        .
        .

        .
    }
    r*   r*   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestGrammarc                 C   s   t D ]A}dD ]<}d||  }z	| d|  W n% ty< } z|dd t| D v s2J t|W Y d }~qd }~ww J d| qd S )Nz%sz1 + %sz%s + 1z2 * %sz%s * 2x = C                    # cython: language_level=3
                    c                 S   s   g | ]}|  qS  )strip).0sr/   r/   ]/var/www/html/mig_web/myenv/lib/python3.10/site-packages/Cython/Compiler/Tests/TestGrammar.py
<listcomp>   s    z<TestGrammar.test_invalid_number_literals.<locals>.<listcomp>F5Invalid Cython code '%s' failed to raise an exception)INVALID_UNDERSCORE_LITERALSfragmentr   str
splitlines)selfliteral
expressioncodeexcr/   r/   r3   test_invalid_number_literals   s   
2z(TestGrammar.test_invalid_number_literalsc                 C   s  t D ]}tg dD ]\}}d||  }| d| j}|d us"J |jd j}|dkr6|d r3|jn|j}d|v s>d|v r\d|v rOt|t	j
sNJ ||fq
t|t	js[J ||fq
d	|v spd
|v spd|v r}d|v s}d|v s}t|t	js|J ||fq
t|t	jsJ ||fq
qd S )Nr,   r-   r.   r   r   jJ+.eE0x0X)VALID_UNDERSCORE_LITERALS	enumerater7   rootstatsrhsoperand2operand1
isinstancer   AddNodeImagNode	FloatNodeIntNode)r:   r;   ir<   r=   nodeliteral_noder/   r/   r3   test_valid_number_literals   s*   (z&TestGrammar.test_valid_number_literalsc                 C   s   d}t D ]Z\}}}z
tt| W n ty& } z	 W Y d }~nd }~ww J d| z	| d|  W n" tyX } z|||t	|v sNJ t	|W Y d }~qd }~ww J d| d S )Nz+:{0}:{1}: Expected an identifier or literalTFz5Invalid Python code '%s' failed to raise an exceptionz;                # cython: language_level=3
                r5   )
INVALID_ELLIPSISastparsetextwrapdedentSyntaxErrorr7   r   formatr8   )r:   ERRr=   linecolr>   r/   r/   r3   test_invalid_ellipsis   s&   
,z!TestGrammar.test_invalid_ellipsisN)__name__
__module____qualname__r?   rW   rb   r/   r/   r/   r3   r+      s    r+   __main__)__doc__
__future__r   rY   r[   	TestUtilsr    r   Errorsr   rH   r6   rX   r+   rc   unittestmainr/   r/   r/   r3   <module>   s   @!;