[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