mirror of
https://github.com/python/cpython.git
synced 2025-07-24 11:44:31 +00:00
SF bug #1048870: call arg of lambda not updating
This commit is contained in:
parent
7cb13a971d
commit
9047c8f73d
3 changed files with 15 additions and 1 deletions
|
@ -252,6 +252,15 @@ if 1:
|
||||||
for stmt in fail:
|
for stmt in fail:
|
||||||
self.assertRaises(SyntaxError, compile, stmt, 'tmp', 'exec')
|
self.assertRaises(SyntaxError, compile, stmt, 'tmp', 'exec')
|
||||||
|
|
||||||
|
def test_for_distinct_code_objects(self):
|
||||||
|
# SF bug 1048870
|
||||||
|
def f():
|
||||||
|
f1 = lambda x=1: x
|
||||||
|
f2 = lambda x=2: x
|
||||||
|
return f1, f2
|
||||||
|
f1, f2 = f()
|
||||||
|
self.assertNotEqual(id(f1.func_code), id(f2.func_code))
|
||||||
|
|
||||||
def test_main():
|
def test_main():
|
||||||
test_support.run_unittest(TestSpecifics)
|
test_support.run_unittest(TestSpecifics)
|
||||||
|
|
||||||
|
|
|
@ -37,7 +37,10 @@ Core and builtins
|
||||||
Extension Modules
|
Extension Modules
|
||||||
-----------------
|
-----------------
|
||||||
|
|
||||||
...
|
- Bug #1048870: the compiler now generates distinct code objects for
|
||||||
|
functions with identical bodies. This was producing confusing
|
||||||
|
traceback messages which pointed to the function where the code
|
||||||
|
object was first defined rather than the function being executed.
|
||||||
|
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
|
@ -261,6 +261,8 @@ code_compare(PyCodeObject *co, PyCodeObject *cp)
|
||||||
if (cmp) return (cmp<0)?-1:1;
|
if (cmp) return (cmp<0)?-1:1;
|
||||||
cmp = co->co_flags - cp->co_flags;
|
cmp = co->co_flags - cp->co_flags;
|
||||||
if (cmp) return (cmp<0)?-1:1;
|
if (cmp) return (cmp<0)?-1:1;
|
||||||
|
cmp = co->co_firstlineno - cp->co_firstlineno;
|
||||||
|
if (cmp) return (cmp<0)?-1:1;
|
||||||
cmp = PyObject_Compare(co->co_code, cp->co_code);
|
cmp = PyObject_Compare(co->co_code, cp->co_code);
|
||||||
if (cmp) return cmp;
|
if (cmp) return cmp;
|
||||||
cmp = PyObject_Compare(co->co_consts, cp->co_consts);
|
cmp = PyObject_Compare(co->co_consts, cp->co_consts);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue