mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 07:31:38 +00:00 
			
		
		
		
	Make _kind types global for C++ compilation.
Explicitly cast void* to int to cmpop_ty.
This commit is contained in:
		
							parent
							
								
									9b26122ec0
								
							
						
					
					
						commit
						01b810106c
					
				
					 3 changed files with 26 additions and 20 deletions
				
			
		| 
						 | 
				
			
			@ -35,9 +35,10 @@ typedef struct _keyword *keyword_ty;
 | 
			
		|||
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 @@ struct _mod {
 | 
			
		|||
        } 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 @@ struct _stmt {
 | 
			
		|||
        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;
 | 
			
		||||
| 
						 | 
				
			
			@ -292,9 +296,9 @@ struct _expr {
 | 
			
		|||
        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;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -155,8 +155,10 @@ def emit(s, depth=depth):
 | 
			
		|||
            type = sum.types[i]
 | 
			
		||||
            enum.append("%s_kind=%d" % (type.name, i + 1))
 | 
			
		||||
 | 
			
		||||
        emit("enum _%(name)s_kind {" + ", ".join(enum) + "};")
 | 
			
		||||
 | 
			
		||||
        emit("struct _%(name)s {")
 | 
			
		||||
        emit("enum { " + ", ".join(enum) + " } kind;", depth + 1)
 | 
			
		||||
        emit("enum _%(name)s_kind kind;", depth + 1)
 | 
			
		||||
        emit("union {", depth + 1)
 | 
			
		||||
        for t in sum.types:
 | 
			
		||||
            self.visit(t, depth + 2)
 | 
			
		||||
| 
						 | 
				
			
			@ -679,8 +681,8 @@ def set(self, field, value, depth):
 | 
			
		|||
                self.emit("if (!value) goto failed;", depth+1)
 | 
			
		||||
                self.emit("for(i = 0; i < n; i++)", depth+1)
 | 
			
		||||
                # This cannot fail, so no need for error handling
 | 
			
		||||
                self.emit("PyList_SET_ITEM(value, i, ast2obj_%s((%s_ty)asdl_seq_GET(%s, i)));" %
 | 
			
		||||
                                (field.type, field.type, value), depth+2, reflow=False)
 | 
			
		||||
                self.emit("PyList_SET_ITEM(value, i, ast2obj_cmpop((cmpop_ty)(int)asdl_seq_GET(%s, i)));" % value,
 | 
			
		||||
                          depth+2, reflow=False)
 | 
			
		||||
                self.emit("}", depth)
 | 
			
		||||
            else:
 | 
			
		||||
                self.emit("value = ast2obj_list(%s, ast2obj_%s);" % (value, field.type), depth)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2505,7 +2505,7 @@ ast2obj_expr(void* _o)
 | 
			
		|||
                        value = PyList_New(n);
 | 
			
		||||
                        if (!value) goto failed;
 | 
			
		||||
                        for(i = 0; i < n; i++)
 | 
			
		||||
                                PyList_SET_ITEM(value, i, ast2obj_cmpop((cmpop_ty)asdl_seq_GET(o->v.Compare.ops, i)));
 | 
			
		||||
                                PyList_SET_ITEM(value, i, ast2obj_cmpop((cmpop_ty)(int)asdl_seq_GET(o->v.Compare.ops, i)));
 | 
			
		||||
                }
 | 
			
		||||
                if (!value) goto failed;
 | 
			
		||||
                if (PyObject_SetAttrString(result, "ops", value) == -1)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue