o
    Ni                     @   s   d 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r>ddlZe  dS dS )z+
Uses TreeFragment to test invalid syntax.
    N   )
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.   U/home/ubuntu/.local/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.   r2   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	enumerater6   rootstatsrhsoperand2operand1
isinstancer   AddNodeImagNode	FloatNodeIntNode)r9   r:   ir;   r<   nodeliteral_noder.   r.   r2   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
                r4   )
INVALID_ELLIPSISastparsetextwrapdedentSyntaxErrorr6   r   formatr7   )r9   ERRr<   linecolr=   r.   r.   r2   test_invalid_ellipsis   s&   
,z!TestGrammar.test_invalid_ellipsisN)__name__
__module____qualname__r>   rV   ra   r.   r.   r.   r2   r*      s    r*   __main__)__doc__rX   rZ   	TestUtilsr    r   Errorsr   rG   r5   rW   r*   rb   unittestmainr.   r.   r.   r2   <module>   s   @!;