Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
number of tests, all because of the codecs/_multibytecodecs issue described
here (it's not a Py3K issue, just something Py3K discovers):
http://mail.python.org/pipermail/python-dev/2006-April/064051.html

Hye-Shik Chang promised to look for a fix, so no need to fix it here. The
tests that are expected to break are:

test_codecencodings_cn
test_codecencodings_hk
test_codecencodings_jp
test_codecencodings_kr
test_codecencodings_tw
test_codecs
test_multibytecodec

This merge fixes an actual test failure (test_weakref) in this branch,
though, so I believe merging is the right thing to do anyway.
diff --git a/Include/Python-ast.h b/Include/Python-ast.h
index b3bc063..3e21030 100644
--- a/Include/Python-ast.h
+++ b/Include/Python-ast.h
@@ -35,9 +35,10 @@
 typedef struct _alias *alias_ty;
 
 
+enum _mod_kind {Module_kind=1, Interactive_kind=2, Expression_kind=3,
+                 Suite_kind=4};
 struct _mod {
-        enum { Module_kind=1, Interactive_kind=2, Expression_kind=3,
-               Suite_kind=4 } kind;
+        enum _mod_kind kind;
         union {
                 struct {
                         asdl_seq *body;
@@ -58,14 +59,15 @@
         } v;
 };
 
+enum _stmt_kind {FunctionDef_kind=1, ClassDef_kind=2, Return_kind=3,
+                  Delete_kind=4, Assign_kind=5, AugAssign_kind=6, Print_kind=7,
+                  For_kind=8, While_kind=9, If_kind=10, With_kind=11,
+                  Raise_kind=12, TryExcept_kind=13, TryFinally_kind=14,
+                  Assert_kind=15, Import_kind=16, ImportFrom_kind=17,
+                  Exec_kind=18, Global_kind=19, Expr_kind=20, Pass_kind=21,
+                  Break_kind=22, Continue_kind=23};
 struct _stmt {
-        enum { FunctionDef_kind=1, ClassDef_kind=2, Return_kind=3,
-               Delete_kind=4, Assign_kind=5, AugAssign_kind=6, Print_kind=7,
-               For_kind=8, While_kind=9, If_kind=10, With_kind=11,
-               Raise_kind=12, TryExcept_kind=13, TryFinally_kind=14,
-               Assert_kind=15, Import_kind=16, ImportFrom_kind=17,
-               Exec_kind=18, Global_kind=19, Expr_kind=20, Pass_kind=21,
-               Break_kind=22, Continue_kind=23 } kind;
+        enum _stmt_kind kind;
         union {
                 struct {
                         identifier name;
@@ -181,12 +183,14 @@
         int col_offset;
 };
 
+enum _expr_kind {BoolOp_kind=1, BinOp_kind=2, UnaryOp_kind=3, Lambda_kind=4,
+                  IfExp_kind=5, Dict_kind=6, ListComp_kind=7,
+                  GeneratorExp_kind=8, Yield_kind=9, Compare_kind=10,
+                  Call_kind=11, Repr_kind=12, Num_kind=13, Str_kind=14,
+                  Attribute_kind=15, Subscript_kind=16, Name_kind=17,
+                  List_kind=18, Tuple_kind=19};
 struct _expr {
-        enum { BoolOp_kind=1, BinOp_kind=2, UnaryOp_kind=3, Lambda_kind=4,
-               IfExp_kind=5, Dict_kind=6, ListComp_kind=7, GeneratorExp_kind=8,
-               Yield_kind=9, Compare_kind=10, Call_kind=11, Repr_kind=12,
-               Num_kind=13, Str_kind=14, Attribute_kind=15, Subscript_kind=16,
-               Name_kind=17, List_kind=18, Tuple_kind=19 } kind;
+        enum _expr_kind kind;
         union {
                 struct {
                         boolop_ty op;
@@ -236,7 +240,7 @@
                 
                 struct {
                         expr_ty left;
-                        asdl_seq *ops;
+                        asdl_int_seq *ops;
                         asdl_seq *comparators;
                 } Compare;
                 
@@ -292,9 +296,9 @@
         int col_offset;
 };
 
+enum _slice_kind {Ellipsis_kind=1, Slice_kind=2, ExtSlice_kind=3, Index_kind=4};
 struct _slice {
-        enum { Ellipsis_kind=1, Slice_kind=2, ExtSlice_kind=3, Index_kind=4 }
-               kind;
+        enum _slice_kind kind;
         union {
                 struct {
                         expr_ty lower;
@@ -323,6 +327,8 @@
         expr_ty type;
         expr_ty name;
         asdl_seq *body;
+        int lineno;
+        int col_offset;
 };
 
 struct _arguments {
@@ -403,7 +409,7 @@
 expr_ty GeneratorExp(expr_ty elt, asdl_seq * generators, int lineno, int
                      col_offset, PyArena *arena);
 expr_ty Yield(expr_ty value, int lineno, int col_offset, PyArena *arena);
-expr_ty Compare(expr_ty left, asdl_seq * ops, asdl_seq * comparators, int
+expr_ty Compare(expr_ty left, asdl_int_seq * ops, asdl_seq * comparators, int
                 lineno, int col_offset, PyArena *arena);
 expr_ty Call(expr_ty func, asdl_seq * args, asdl_seq * keywords, expr_ty
              starargs, expr_ty kwargs, int lineno, int col_offset, PyArena
@@ -427,8 +433,8 @@
 slice_ty Index(expr_ty value, PyArena *arena);
 comprehension_ty comprehension(expr_ty target, expr_ty iter, asdl_seq * ifs,
                                PyArena *arena);
-excepthandler_ty excepthandler(expr_ty type, expr_ty name, asdl_seq * body,
-                               PyArena *arena);
+excepthandler_ty excepthandler(expr_ty type, expr_ty name, asdl_seq * body, int
+                               lineno, int col_offset, PyArena *arena);
 arguments_ty arguments(asdl_seq * args, identifier vararg, identifier kwarg,
                        asdl_seq * defaults, PyArena *arena);
 keyword_ty keyword(identifier arg, expr_ty value, PyArena *arena);