• H
    [Dy2stat] Add Basic Support for Grammar 'return' (#25176) · 6f631a27
    Huihuang Zheng 提交于
    This PR added basic support for 'return' grammar in dy2stat. It supports the control flow of 'return'.
    
    The basics idea is using a return value variable to store the early return statements and boolean state variables with if-else to skip the statements after the return statements.
    
    **This PR is very basic support. There are some corner cases I didn't develop/test**. For example, 'return None', 'return different length of variables', 'return non-tensor and tensor together', 'no return statement'. **These corner cases will be done in my next PRs**. Target date is this week.
    
    **Note**: 
    1. for the unit test, I changed test_program_translator.py because the StaticCode of `dyfunc_with_if_else` will change. To guarantee the correctness of `dyfunc_with_if_else`, I also run it in `TestRecursiveReturn` in test_return.py.
    
    2. I commented the early return code in bert_dygraph_model.py because 'return different length of variables' is unsupported now. I also know that there are some other models used early return and we didn't enable it in the unit test. I will add support for it in next PRs and then re-enable those tests.
    6f631a27
return_transformer.py 9.7 KB