U
    {h                  /   @   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 dd	d
ddddddddddddddddddddgZ	dddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKg/Z
dLdMdNdOdPdQdRdSdTdUg
ZG dVdW dWeZedXkrddlZe  dS )Yz+
Uses TreeFragment to test invalid syntax.
    N   )
CythonTest   )	ExprNodes)CompileErrorZ0_0_0Z4_2Z1_0000_0000Z0b1001_0100Z0xffff_ffffZ0o5_7_7z	1_00_00.5z
1_00_00.5jz1_00_00.5e5Z1_00_00jZ1_00_00e5_1Z1e1_0z.1_4z.1_4e1Z0b_0Z0x_fZ0o_5Z1_00_00e5_1jz.1_4jz(1_2.5+3_3j)z(.5_6j)Z0_Z42_z1.4j_Z0x_Z0b1_Z0xf_Z0o5_z0 if 1_Else 1Z0_b0Z0_xfZ0_o5Z0_7Z09_99Z	4_______2z0.1__4z0.1__4jZ0b1001__0100Z0xffff__ffffZ0x___Z0o5__77Z1e1__0Z1e1__0jz1_.4z1_.4jz1._4z1._4jz._5z._5jz1.0e+_1z1.0e+_1jz1.4_jz1.4e5_jZ1_e1z1.4_e1z1.4_e1jZ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 ]}dD ]|}d||  }z| d|  W nH tk
rv } z*|dd t| D ksftt|W 5 d }~X Y qX dstd| qqd S )N)%s1 + %s%s + 12 * %s%s * 2x = C                    # cython: language_level=3
                    c                 S   s   g | ]}|  qS  )strip).0sr   r   E/tmp/pip-unpacked-wheel-fhl22ezh/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AssertionError)selfliteral
expressioncodeexcr   r   r   test_invalid_number_literals   s    
8z(TestGrammar.test_invalid_number_literalsc                 C   s,  t D ] }tdddddgD ]\}}d||  }| d| j}|d k	sNt|jd j}|dkrv|d	 rp|jn|j}d
|ksd|krd|krt	|t
jst||fnt	|t
jst||fqd|ksd|ksd|krd|ksd|kst	|t
js$t||fqt	|t
jst||fqqd S )Nr	   r
   r   r   r   r   r   r   r   jJ+.eE0x0X)VALID_UNDERSCORE_LITERALS	enumerater   rootr   statsrhsZoperand2Zoperand1
isinstancer   ZAddNodeZImagNodeZ	FloatNodeZIntNode)r   r   ir   r   nodeZliteral_noder   r   r   test_valid_number_literals   s"    
.z&TestGrammar.test_valid_number_literalsc                 C   s   d}t D ]\}}}ztt| W n* tk
rP } zds@tW 5 d }~X Y nX dsbtd| z| d|  W nB tk
r } z$|	||t
|kstt
|W 5 d }~X Y qX dstd| qd S )Nz+:{0}:{1}: Expected an identifier or literalTFz5Invalid Python code '%s' failed to raise an exceptionz;                # cython: language_level=3
                r   )INVALID_ELLIPSISastparsetextwrapdedentSyntaxErrorr   r   r   formatr   )r   ZERRr   linecolr    r   r   r   test_invalid_ellipsis   s    
2z!TestGrammar.test_invalid_ellipsisN)__name__
__module____qualname__r!   r2   r<   r   r   r   r   r      s   r   __main__)__doc__r4   r6   Z	TestUtilsr    r   ZErrorsr   r*   r   r3   r   r=   Zunittestmainr   r   r   r   <module>   s   A!;
