o
    í@Ëa_  ã                   @   s<   d Z ddlmZ ddlmZ ddlmZ G dd„ deƒZdS )z* DeadCodeElimination remove useless code. é    )ÚDefUseChains)ÚTransformationNc                       s(   e Zd ZdZ‡ fdd„Zdd„ Z‡  ZS )ÚRemoveDeadFunctionsa7  
    Remove useless local functions

    >>> import gast as ast
    >>> from pythran import passmanager, backend, metadata
    >>> pm = passmanager.PassManager("test")
    >>> node = ast.parse("def foo(): return 1")
    >>> _, node = pm.apply(RemoveDeadFunctions, node)
    >>> print(pm.dump(backend.Python, node))
    def foo():
        return 1
    >>> node = ast.parse("def foo(): return 1")
    >>> metadata.add(node.body[0], metadata.Local())
    >>> _, node = pm.apply(RemoveDeadFunctions, node)
    >>> print(pm.dump(backend.Python, node))
    <BLANKLINE>
    c                    s   t t| ƒ t¡ d S )N)Úsuperr   Ú__init__r   )Úself©Ú	__class__© úM/usr/lib/python3/dist-packages/pythran/optimizations/remove_dead_functions.pyr      s   zRemoveDeadFunctions.__init__c                 C   s,   t  |t j¡r| jj|  ¡ sd| _d S |S )NT)ÚmetadataÚgetZLocalZdef_use_chainsZchainsZusersÚupdate)r   Znoder
   r
   r   Úvisit_FunctionDef   s
   z%RemoveDeadFunctions.visit_FunctionDef)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   Ú__classcell__r
   r
   r   r   r      s    r   )r   Zpythran.analysesr   Zpythran.passmanagerr   Zpythran.metadatar   r   r
   r
   r
   r   Ú<module>   s
    