[pypy-svn] r19172 - pypy/release/0.8.x/pypy/interpreter
pedronis at codespeak.net
pedronis at codespeak.net
Sun Oct 30 01:40:16 CEST 2005
Author: pedronis
Date: Sun Oct 30 01:40:15 2005
New Revision: 19172
Modified:
pypy/release/0.8.x/pypy/interpreter/function.py
Log:
merge 19171, don't have co_freevars bubble up
Modified: pypy/release/0.8.x/pypy/interpreter/function.py
==============================================================================
--- pypy/release/0.8.x/pypy/interpreter/function.py (original)
+++ pypy/release/0.8.x/pypy/interpreter/function.py Sun Oct 30 01:40:15 2005
@@ -63,17 +63,19 @@
defs_w = space.unpackiterable(w_argdefs)
else:
defs_w = []
- nfreevars = len(code.co_freevars)
+ nfreevars = 0
+ from pypy.interpreter.pycode import PyCode
+ if isinstance(code, PyCode):
+ nfreevars = len(code.co_freevars)
if space.is_w(w_closure, space.w_None) and nfreevars == 0:
closure = None
elif not space.is_w(space.type(w_closure), space.w_tuple):
raise OperationError(space.w_TypeError, space.wrap("invalid closure"))
else:
- from pypy.interpreter.pycode import PyCode
from pypy.interpreter.nestedscope import Cell
closure_w = space.unpackiterable(w_closure)
n = len(closure_w)
- if not isinstance(code, PyCode) or nfreevars == 0:
+ if nfreevars == 0:
raise OperationError(space.w_ValueError, space.wrap("no closure needed"))
elif nfreevars != n:
raise OperationError(space.w_ValueError, space.wrap("closure is wrong size"))
More information about the Pypy-commit
mailing list