diff options
author | Benjamin Peterson <benjamin@python.org> | 2015-05-28 19:30:26 (GMT) |
---|---|---|
committer | Benjamin Peterson <benjamin@python.org> | 2015-05-28 19:30:26 (GMT) |
commit | ee85339cc69af6b29a37b85a5695fb9c12f0f0a3 (patch) | |
tree | 01f7a995722d516c61b70e1578d43628ab1f2a9f /Lib | |
parent | 44e625860bf4c24a811eb81c7953a71671c89608 (diff) | |
download | cpython-ee85339cc69af6b29a37b85a5695fb9c12f0f0a3.zip cpython-ee85339cc69af6b29a37b85a5695fb9c12f0f0a3.tar.gz cpython-ee85339cc69af6b29a37b85a5695fb9c12f0f0a3.tar.bz2 |
in dict displays, evaluate the key before the value (closes #11205)
Patch partially by Steve Dougherty.
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/importlib/_bootstrap_external.py | 3 | ||||
-rw-r--r-- | Lib/test/test_compile.py | 11 |
2 files changed, 13 insertions, 1 deletions
diff --git a/Lib/importlib/_bootstrap_external.py b/Lib/importlib/_bootstrap_external.py index 510fa92..b3c10b9 100644 --- a/Lib/importlib/_bootstrap_external.py +++ b/Lib/importlib/_bootstrap_external.py @@ -221,12 +221,13 @@ _code_type = type(_write_atomic.__code__) # Python 3.4rc2 3310 (alter __qualname__ computation) # Python 3.5a0 3320 (matrix multiplication operator) # Python 3.5b1 3330 (PEP 448: Additional Unpacking Generalizations) +# Python 3.5b2 3340 (fix dictionary display evaluation order #11205) # # MAGIC must change whenever the bytecode emitted by the compiler may no # longer be understood by older implementations of the eval loop (usually # due to the addition of new opcodes). -MAGIC_NUMBER = (3330).to_bytes(2, 'little') + b'\r\n' +MAGIC_NUMBER = (3340).to_bytes(2, 'little') + b'\r\n' _RAW_MAGIC_NUMBER = int.from_bytes(MAGIC_NUMBER, 'little') # For import.c _PYCACHE = '__pycache__' diff --git a/Lib/test/test_compile.py b/Lib/test/test_compile.py index 98a4df8..f5e4576 100644 --- a/Lib/test/test_compile.py +++ b/Lib/test/test_compile.py @@ -461,6 +461,17 @@ if 1: ast.body = [_ast.BoolOp()] self.assertRaises(TypeError, compile, ast, '<ast>', 'exec') + def test_dict_evaluation_order(self): + i = 0 + + def f(): + nonlocal i + i += 1 + return i + + d = {f(): f(), f(): f()} + self.assertEqual(d, {1: 2, 3: 4}) + @support.cpython_only def test_same_filename_used(self): s = """def f(): pass\ndef g(): pass""" |