diff options
author | Georg Brandl <georg@python.org> | 2007-01-27 17:43:02 (GMT) |
---|---|---|
committer | Georg Brandl <georg@python.org> | 2007-01-27 17:43:02 (GMT) |
commit | ab49684f550ce6b12614b8a329f4d280e20e1277 (patch) | |
tree | f813125ca6d4bbda770e4e3566e470069f917f09 /Lib/compiler | |
parent | 7a7cbae77b417b855bdfe5f7c536893cbefcbb1d (diff) | |
download | cpython-ab49684f550ce6b12614b8a329f4d280e20e1277.zip cpython-ab49684f550ce6b12614b8a329f4d280e20e1277.tar.gz cpython-ab49684f550ce6b12614b8a329f4d280e20e1277.tar.bz2 |
Patch #1638243: the compiler package is now able to correctly compile
a with statement; previously, executing code containing a with statement
compiled by the compiler package crashed the interpreter.
Diffstat (limited to 'Lib/compiler')
-rw-r--r-- | Lib/compiler/pycodegen.py | 2 | ||||
-rw-r--r-- | Lib/compiler/transformer.py | 2 |
2 files changed, 3 insertions, 1 deletions
diff --git a/Lib/compiler/pycodegen.py b/Lib/compiler/pycodegen.py index 8cf7d77..b46b1c1 100644 --- a/Lib/compiler/pycodegen.py +++ b/Lib/compiler/pycodegen.py @@ -849,6 +849,8 @@ class CodeGenerator: self.emit('LOAD_CONST', None) self.nextBlock(final) self.setups.push((END_FINALLY, final)) + self._implicitNameOp('LOAD', exitvar) + self._implicitNameOp('DELETE', exitvar) self.emit('WITH_CLEANUP') self.emit('END_FINALLY') self.setups.pop() diff --git a/Lib/compiler/transformer.py b/Lib/compiler/transformer.py index a16dc55..ac23ad1 100644 --- a/Lib/compiler/transformer.py +++ b/Lib/compiler/transformer.py @@ -960,7 +960,7 @@ class Transformer: if nodelist[2][0] == token.COLON: var = None else: - var = self.com_node(nodelist[2]) + var = self.com_assign(nodelist[2][2], OP_ASSIGN) return With(expr, var, body, lineno=nodelist[0][2]) def com_with_var(self, nodelist): |