Nick Coghlan added the comment:
A closer approximation of what the with statement is doing would be:
exit = lock.release()
lock.acquire()
try:
pass
finally:
exit()
The problem with trying to store the result of the retrieval of __exit__
on the stack is that we need to leave the context manager itself on top
of the stack for the next LOAD_ATTR opcode (when we're retrieving the
__enter__ method).
However, changing WITH_CLEANUP to take an argument indicating which
local variable holds the bound __exit__ method sounds like it might work.
----------
nosy: +ncoghlan
__________________________________
Tracker <[EMAIL PROTECTED]>
<http://bugs.python.org/issue2179>
__________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com