My plan was to restore the Python 2 semantics while still avoiding the leak of comprehension variable to the enclosing scope (the initial reason of introducing auxiliary "_make_list" function IIUC).
So that:
1) g = [(yield i) for i in range(3)] outside a function will be a SyntaxError (yield outside a function)
2) g = [(yield i) for i in range(3)] inside a function will turn that enclosing function into generator.
3) accessing i after g = [(yield i) for i in range(3)] will give a NameError: name 'i' is not defined
If you have time to work on this, then I will be glad if you take care of this issue, you can re-assign it.
--
Ivan