neogen icon indicating copy to clipboard operation
neogen copied to clipboard

fix: Python bare return functions

Open amenrio opened this issue 1 year ago • 0 comments

Error:

Functions with only bare returns evaluate first, in line 62, the value nodes[i.Return] is set to nil, and because validate_direct_returns is evaluated after, it breaks on line 80, expecting a table but getting a nil value

Example code

def foo(bar=None):
    if not bar:
        return
    else:
        print(bar)

Throws this error:

E5108: Error executing lua ...dez/personal/neogen/lua/neogen/configurations/python.lua:80: bad argument #1 to 'pairs' (table expected, got nil)                                                                    
stack traceback:                                                                                                                                                                                                   
        [C]: in function 'pairs'                                                                                                                                                                                   
        ...dez/personal/neogen/lua/neogen/configurations/python.lua:80: in function 'validate_direct_returns'                                                                                                      
        ...dez/personal/neogen/lua/neogen/configurations/python.lua:251: in function 'extract'                                                                                                                     
        .../andres.mendez/personal/neogen/lua/neogen/granulator.lua:34: in function 'granulator'                                                                                                                   
        ...e/andres.mendez/personal/neogen/lua/neogen/generator.lua:280: in function 'generate'                                                                                                                    
        [string ":lua"]:1: in main chunk

Fix:

Swap execution order of validate_bare_returns and validate_direct_returns.

amenrio avatar Apr 22 '24 16:04 amenrio