Index: Python/compile.c
===================================================================
--- Python/compile.c (revision 88415)
+++ Python/compile.c (working copy)
@@ -3004,10 +3004,13 @@
n = asdl_seq_LEN(e->v.Dict.values);
ADDOP_I(c, BUILD_MAP, (n>0xFFFF ? 0xFFFF : n));
for (i = 0; i < n; i++) {
+ /* Order is important keys must be evaluated before values,
+ per ref manual. */
VISIT(c, expr,
+ (expr_ty)asdl_seq_GET(e->v.Dict.keys, i));
+ VISIT(c, expr,
(expr_ty)asdl_seq_GET(e->v.Dict.values, i));
- VISIT(c, expr,
- (expr_ty)asdl_seq_GET(e->v.Dict.keys, i));
+ ADDOP(c, ROT_TWO);
ADDOP(c, STORE_MAP);
}
break;
Index: Lib/test/test_compile.py
===================================================================
--- Lib/test/test_compile.py (revision 88415)
+++ Lib/test/test_compile.py (working copy)
@@ -491,6 +491,14 @@
self.assertRaises(TypeError, compile, ast, '