onelinerizer icon indicating copy to clipboard operation
onelinerizer copied to clipboard

Handling of name collisions

Open ekzhang opened this issue 7 years ago • 0 comments

It seems that certain variable names can end up in name collisions in the generated code. For example, the code

def f(__print):
    print __print
    return __print * 4
y = f(5)
print y

is turned into the one-line code

(lambda __g, __print: [[(__print(y), None)[1] for __g['y'] in [(f(5))]][0] for __g['f'], f.__name__ in [(lambda __print: (lambda __l: [(__print(__l['__print']), (__l['__print'] * 4))[1] for __l['__print'] in [(__print)]][0])({}), 'f')]][0])(globals(), __import__('__builtin__').__dict__['print'])

which gives a TypeError when run.

ekzhang avatar Jan 07 '18 21:01 ekzhang