[pypy-svn] r75152 - pypy/branch/fast-forward/py/_code
hpk at codespeak.net
hpk at codespeak.net
Sun Jun 6 19:04:42 CEST 2010
Author: hpk
Date: Sun Jun 6 19:04:41 2010
New Revision: 75152
Modified:
pypy/branch/fast-forward/py/_code/source.py
Log:
copy py-trunk fix wrt to py.code.compile
Modified: pypy/branch/fast-forward/py/_code/source.py
==============================================================================
--- pypy/branch/fast-forward/py/_code/source.py (original)
+++ pypy/branch/fast-forward/py/_code/source.py Sun Jun 6 19:04:41 2010
@@ -17,6 +17,8 @@
""" a immutable object holding a source code fragment,
possibly deindenting it.
"""
+ _counter = 0
+
def __init__(self, *parts, **kwargs):
self.lines = lines = []
de = kwargs.get('deindent', True)
@@ -196,9 +198,11 @@
_genframe = sys._getframe(1) # the caller
fn,lineno = _genframe.f_code.co_filename, _genframe.f_lineno
if not filename:
- filename = '<codegen %s:%d>' % (fn, lineno)
+ filename = '<%d-codegen %s:%d>' % (self._counter, fn, lineno)
else:
- filename = '<codegen %r %s:%d>' % (filename, fn, lineno)
+ filename = '<%d-codegen %r %s:%d>' % (self._counter, filename, fn, lineno)
+ self.__class__._counter += 1
+
source = "\n".join(self.lines) + '\n'
try:
co = cpy_compile(source, filename, mode, flag)
@@ -226,6 +230,7 @@
py.std.inspect.modulesbyfile[filename] = None
py.std.sys.modules[None] = m
m.__loader__ = 1
+ assert filename not in py.std.linecache.cache, filename
py.std.linecache.cache[filename] = (1, None, lines, filename)
return co
More information about the Pypy-commit
mailing list