[Python-checkins] r42379 - in python/branches/ast-objects: Include/Python-ast.h Parser/asdl_c.py Python/Python-ast.c Python/ast.c Python/compile.c Python/pythonrun.c Python/symtable.c

neal.norwitz python-checkins at python.org
Wed Feb 15 08:00:24 CET 2006


Author: neal.norwitz
Date: Wed Feb 15 08:00:21 2006
New Revision: 42379
Modified:
 python/branches/ast-objects/Include/Python-ast.h
 python/branches/ast-objects/Parser/asdl_c.py
 python/branches/ast-objects/Python/Python-ast.c
 python/branches/ast-objects/Python/ast.c
 python/branches/ast-objects/Python/compile.c
 python/branches/ast-objects/Python/pythonrun.c
 python/branches/ast-objects/Python/symtable.c
Log:
Further updates from Simon Burton. Runs now, lots of refleaks still.
Modified: python/branches/ast-objects/Include/Python-ast.h
==============================================================================
--- python/branches/ast-objects/Include/Python-ast.h	(original)
+++ python/branches/ast-objects/Include/Python-ast.h	Wed Feb 15 08:00:21 2006
@@ -11,7 +11,8 @@
 
 struct _mod{
 PyObject_HEAD
- enum {Module_kind, Interactive_kind, Expression_kind, Suite_kind} _kind;
+ enum {mod_Dummy_kind, Module_kind, Interactive_kind, Expression_kind,
+ Suite_kind} _kind;
 };
 #define mod_kind(o) (((struct _mod*)o)->_kind)
 
@@ -64,12 +65,12 @@
 
 struct _stmt{
 PyObject_HEAD
- enum {FunctionDef_kind, ClassDef_kind, Return_kind, Delete_kind,
- Assign_kind, AugAssign_kind, Print_kind, For_kind, While_kind,
- If_kind, Raise_kind, TryExcept_kind, TryFinally_kind,
- Assert_kind, Import_kind, ImportFrom_kind, Exec_kind,
- Global_kind, Expr_kind, Pass_kind, Break_kind, Continue_kind}
- _kind;
+ enum {stmt_Dummy_kind, FunctionDef_kind, ClassDef_kind, Return_kind,
+ Delete_kind, Assign_kind, AugAssign_kind, Print_kind, For_kind,
+ While_kind, If_kind, Raise_kind, TryExcept_kind,
+ TryFinally_kind, Assert_kind, Import_kind, ImportFrom_kind,
+ Exec_kind, Global_kind, Expr_kind, Pass_kind, Break_kind,
+ Continue_kind} _kind;
 int lineno;
 };
 #define stmt_kind(o) (((struct _stmt*)o)->_kind)
@@ -367,10 +368,11 @@
 
 struct _expr{
 PyObject_HEAD
- enum {BoolOp_kind, BinOp_kind, UnaryOp_kind, Lambda_kind, Dict_kind,
- ListComp_kind, GeneratorExp_kind, Yield_kind, Compare_kind,
- Call_kind, Repr_kind, Num_kind, Str_kind, Attribute_kind,
- Subscript_kind, Name_kind, List_kind, Tuple_kind} _kind;
+ enum {expr_Dummy_kind, BoolOp_kind, BinOp_kind, UnaryOp_kind,
+ Lambda_kind, Dict_kind, ListComp_kind, GeneratorExp_kind,
+ Yield_kind, Compare_kind, Call_kind, Repr_kind, Num_kind,
+ Str_kind, Attribute_kind, Subscript_kind, Name_kind, List_kind,
+ Tuple_kind} _kind;
 int lineno;
 };
 #define expr_kind(o) (((struct _expr*)o)->_kind)
@@ -621,8 +623,8 @@
 
 struct _expr_context{
 PyObject_HEAD
- enum {Load_kind, Store_kind, Del_kind, AugLoad_kind, AugStore_kind,
- Param_kind} _kind;
+ enum {expr_context_Dummy_kind, Load_kind, Store_kind, Del_kind,
+ AugLoad_kind, AugStore_kind, Param_kind} _kind;
 };
 #define expr_context_kind(o) (((struct _expr_context*)o)->_kind)
 
@@ -685,7 +687,8 @@
 
 struct _slice{
 PyObject_HEAD
- enum {Ellipsis_kind, Slice_kind, ExtSlice_kind, Index_kind} _kind;
+ enum {slice_Dummy_kind, Ellipsis_kind, Slice_kind, ExtSlice_kind,
+ Index_kind} _kind;
 };
 #define slice_kind(o) (((struct _slice*)o)->_kind)
 
@@ -740,7 +743,7 @@
 
 struct _boolop{
 PyObject_HEAD
- enum {And_kind, Or_kind} _kind;
+ enum {boolop_Dummy_kind, And_kind, Or_kind} _kind;
 };
 #define boolop_kind(o) (((struct _boolop*)o)->_kind)
 
@@ -767,9 +770,9 @@
 
 struct _operator{
 PyObject_HEAD
- enum {Add_kind, Sub_kind, Mult_kind, Div_kind, Mod_kind, Pow_kind,
- LShift_kind, RShift_kind, BitOr_kind, BitXor_kind, BitAnd_kind,
- FloorDiv_kind} _kind;
+ enum {operator_Dummy_kind, Add_kind, Sub_kind, Mult_kind, Div_kind,
+ Mod_kind, Pow_kind, LShift_kind, RShift_kind, BitOr_kind,
+ BitXor_kind, BitAnd_kind, FloorDiv_kind} _kind;
 };
 #define operator_kind(o) (((struct _operator*)o)->_kind)
 
@@ -886,7 +889,8 @@
 
 struct _unaryop{
 PyObject_HEAD
- enum {Invert_kind, Not_kind, UAdd_kind, USub_kind} _kind;
+ enum {unaryop_Dummy_kind, Invert_kind, Not_kind, UAdd_kind, USub_kind}
+ _kind;
 };
 #define unaryop_kind(o) (((struct _unaryop*)o)->_kind)
 
@@ -931,8 +935,9 @@
 
 struct _cmpop{
 PyObject_HEAD
- enum {Eq_kind, NotEq_kind, Lt_kind, LtE_kind, Gt_kind, GtE_kind,
- Is_kind, IsNot_kind, In_kind, NotIn_kind} _kind;
+ enum {cmpop_Dummy_kind, Eq_kind, NotEq_kind, Lt_kind, LtE_kind,
+ Gt_kind, GtE_kind, Is_kind, IsNot_kind, In_kind, NotIn_kind}
+ _kind;
 };
 #define cmpop_kind(o) (((struct _cmpop*)o)->_kind)
 
Modified: python/branches/ast-objects/Parser/asdl_c.py
==============================================================================
--- python/branches/ast-objects/Parser/asdl_c.py	(original)
+++ python/branches/ast-objects/Parser/asdl_c.py	Wed Feb 15 08:00:21 2006
@@ -155,7 +155,8 @@
 self.emit_check(name, depth)
 emit("struct _%s{" % name)
 emit("PyObject_HEAD", depth + 1)
- names = [t.name.value+"_kind" for t in sum.types]
+ names = ["%s_Dummy_kind"%name]
+ names += [t.name.value+"_kind" for t in sum.types]
 emit("enum {%s} _kind;" % ", ".join(names), depth+1)
 for field in sum.attributes:
 type = str(field.type)
@@ -225,7 +226,7 @@
 def check(self, t):
 t = t.value
 if t in ("identifier", "string"):
- return "PyString_Check"
+ return "string_Check"
 elif t == "bool":
 return "PyBool_Check"
 else:
@@ -354,7 +355,7 @@
 emit("struct _%s *obj = (struct _%s*)_obj;" % (name,name))
 if has_seq:
 emit("int i;")
- for f in fields:
+ for f in fields:
 if f.seq:
 self.emit_seq_check(f)
 elif f.opt:
@@ -384,6 +385,8 @@
 for t in sum.types:
 emit("case %s_kind:" % t.name)
 emit(" return %s_validate(_obj);" % t.name)
+ emit("default:")
+ emit(" break;")
 depth = 1
 emit("}")
 emit('PyErr_SetString(PyExc_TypeError, "invalid _kind in %s");' % name)
@@ -500,11 +503,12 @@
 static void failed_check(const char* field, const char* expected,
 PyObject *real)
 {
- PyErr_Format(PyExc_TypeError, "invalid %s: excpected %s, found %s",
+ PyErr_Format(PyExc_TypeError, "invalid %s: expected %s, found %s",
 field, expected, real->ob_type->tp_name);
 }
 /* Convenience macro to simplify asdl_c.py */
 #define object_Check(x) 1
+#define string_Check(x) (PyString_Check(x)||PyUnicode_Check(x))
 """
 
 def main(srcfile):
Modified: python/branches/ast-objects/Python/Python-ast.c
==============================================================================
--- python/branches/ast-objects/Python/Python-ast.c	(original)
+++ python/branches/ast-objects/Python/Python-ast.c	Wed Feb 15 08:00:21 2006
@@ -7,11 +7,12 @@
 static void failed_check(const char* field, const char* expected,
 PyObject *real)
 {
- PyErr_Format(PyExc_TypeError, "invalid %s: excpected %s, found %s",
+ PyErr_Format(PyExc_TypeError, "invalid %s: expected %s, found %s",
 field, expected, real->ob_type->tp_name);
 }
 /* Convenience macro to simplify asdl_c.py */
 #define object_Check(x) 1
+#define string_Check(x) (PyString_Check(x)||PyUnicode_Check(x))
 
 static int mod_validate(PyObject*);
 static int Module_validate(PyObject*);
@@ -169,6 +170,8 @@
 return Expression_validate(_obj);
 case Suite_kind:
 return Suite_validate(_obj);
+ default:
+ break;
 }
 PyErr_SetString(PyExc_TypeError, "invalid _kind in mod");
 return -1;
@@ -601,6 +604,8 @@
 return Break_validate(_obj);
 case Continue_kind:
 return Continue_validate(_obj);
+ default:
+ break;
 }
 PyErr_SetString(PyExc_TypeError, "invalid _kind in stmt");
 return -1;
@@ -689,7 +694,7 @@
 {
 struct _FunctionDef *obj = (struct _FunctionDef*)_obj;
 int i;
- if (!PyString_Check(obj->name)) {
+ if (!string_Check(obj->name)) {
 failed_check("name", "identifier", obj->name);
 return -1;
 }
@@ -805,7 +810,7 @@
 {
 struct _ClassDef *obj = (struct _ClassDef*)_obj;
 int i;
- if (!PyString_Check(obj->name)) {
+ if (!string_Check(obj->name)) {
 failed_check("name", "identifier", obj->name);
 return -1;
 }
@@ -2240,7 +2245,7 @@
 {
 struct _ImportFrom *obj = (struct _ImportFrom*)_obj;
 int i;
- if (!PyString_Check(obj->module)) {
+ if (!string_Check(obj->module)) {
 failed_check("module", "identifier", obj->module);
 return -1;
 }
@@ -2441,7 +2446,7 @@
 return -1;
 }
 for(i = 0; i < PyList_Size(obj->names); i++) {
- if (!PyString_Check(PyList_GET_ITEM(obj->names, i))) {
+ if (!string_Check(PyList_GET_ITEM(obj->names, i))) {
 failed_check("names", "identifier",
 PyList_GET_ITEM(obj->names, i));
 return -1;
@@ -2817,6 +2822,8 @@
 return List_validate(_obj);
 case Tuple_kind:
 return Tuple_validate(_obj);
+ default:
+ break;
 }
 PyErr_SetString(PyExc_TypeError, "invalid _kind in expr");
 return -1;
@@ -4026,7 +4033,7 @@
 Str_validate(PyObject *_obj)
 {
 struct _Str *obj = (struct _Str*)_obj;
- if (!PyString_Check(obj->s)) {
+ if (!string_Check(obj->s)) {
 failed_check("s", "string", obj->s);
 return -1;
 }
@@ -4112,7 +4119,7 @@
 failed_check("value", "expr", obj->value);
 return -1;
 }
- if (!PyString_Check(obj->attr)) {
+ if (!string_Check(obj->attr)) {
 failed_check("attr", "identifier", obj->attr);
 return -1;
 }
@@ -4285,7 +4292,7 @@
 Name_validate(PyObject *_obj)
 {
 struct _Name *obj = (struct _Name*)_obj;
- if (!PyString_Check(obj->id)) {
+ if (!string_Check(obj->id)) {
 failed_check("id", "identifier", obj->id);
 return -1;
 }
@@ -4547,6 +4554,8 @@
 return AugStore_validate(_obj);
 case Param_kind:
 return Param_validate(_obj);
+ default:
+ break;
 }
 PyErr_SetString(PyExc_TypeError, "invalid _kind in expr_context");
 return -1;
@@ -5012,6 +5021,8 @@
 return ExtSlice_validate(_obj);
 case Index_kind:
 return Index_validate(_obj);
+ default:
+ break;
 }
 PyErr_SetString(PyExc_TypeError, "invalid _kind in slice");
 return -1;
@@ -5410,6 +5421,8 @@
 return And_validate(_obj);
 case Or_kind:
 return Or_validate(_obj);
+ default:
+ break;
 }
 PyErr_SetString(PyExc_TypeError, "invalid _kind in boolop");
 return -1;
@@ -5623,6 +5636,8 @@
 return BitAnd_validate(_obj);
 case FloorDiv_kind:
 return FloorDiv_validate(_obj);
+ default:
+ break;
 }
 PyErr_SetString(PyExc_TypeError, "invalid _kind in operator");
 return -1;
@@ -6490,6 +6505,8 @@
 return UAdd_validate(_obj);
 case USub_kind:
 return USub_validate(_obj);
+ default:
+ break;
 }
 PyErr_SetString(PyExc_TypeError, "invalid _kind in unaryop");
 return -1;
@@ -6833,6 +6850,8 @@
 return In_validate(_obj);
 case NotIn_kind:
 return NotIn_validate(_obj);
+ default:
+ break;
 }
 PyErr_SetString(PyExc_TypeError, "invalid _kind in cmpop");
 return -1;
@@ -7822,12 +7841,12 @@
 return -1;
 }
 if (obj->vararg == Py_None) /* empty */;
- else if (!PyString_Check(obj->vararg)) {
+ else if (!string_Check(obj->vararg)) {
 failed_check("vararg", "identifier", obj->vararg);
 return -1;
 }
 if (obj->kwarg == Py_None) /* empty */;
- else if (!PyString_Check(obj->kwarg)) {
+ else if (!string_Check(obj->kwarg)) {
 failed_check("kwarg", "identifier", obj->kwarg);
 return -1;
 }
@@ -7917,7 +7936,7 @@
 keyword_validate(PyObject *_obj)
 {
 struct _keyword *obj = (struct _keyword*)_obj;
- if (!PyString_Check(obj->arg)) {
+ if (!string_Check(obj->arg)) {
 failed_check("arg", "identifier", obj->arg);
 return -1;
 }
@@ -8002,12 +8021,12 @@
 alias_validate(PyObject *_obj)
 {
 struct _alias *obj = (struct _alias*)_obj;
- if (!PyString_Check(obj->name)) {
+ if (!string_Check(obj->name)) {
 failed_check("name", "identifier", obj->name);
 return -1;
 }
 if (obj->asname == Py_None) /* empty */;
- else if (!PyString_Check(obj->asname)) {
+ else if (!string_Check(obj->asname)) {
 failed_check("asname", "identifier", obj->asname);
 return -1;
 }
Modified: python/branches/ast-objects/Python/ast.c
==============================================================================
--- python/branches/ast-objects/Python/ast.c	(original)
+++ python/branches/ast-objects/Python/ast.c	Wed Feb 15 08:00:21 2006
@@ -750,7 +750,7 @@
 if (!load)
 goto error;
 e = Name(id, load, LINENO(n));
- if (!result)
+ if (!e)
 goto error;
 id = NULL;
 
@@ -1712,8 +1712,10 @@
 loop:
 switch (TYPE(n)) {
 case test:
- if (TYPE(CHILD(n, 0)) == lambdef)
+ if (TYPE(CHILD(n, 0)) == lambdef) {
 result = ast_for_lambdef(c, CHILD(n, 0));
+ break;
+ }
 /* Fall through to and_test */
 case and_test:
 if (NCH(n) == 1) {
@@ -1832,9 +1834,10 @@
 case TILDE:
 result = UnaryOp(Invert(), expression, LINENO(n));
 break;
+ default:
+ PyErr_Format(PyExc_SystemError, "unhandled factor: %d",
+ TYPE(CHILD(n, 0)));
 }
- PyErr_Format(PyExc_SystemError, "unhandled factor: %d",
- TYPE(CHILD(n, 0)));
 break;
 }
 case power:
@@ -2352,7 +2355,7 @@
 }
 else {
 a = alias_for_import_name(CHILD(n, 0));
- assert(!alias_asname(a));
+ assert(alias_asname(a) == Py_None);
 alias_asname(a) = NEW_IDENTIFIER(CHILD(n, 2));
 result = a;
 }
Modified: python/branches/ast-objects/Python/compile.c
==============================================================================
--- python/branches/ast-objects/Python/compile.c	(original)
+++ python/branches/ast-objects/Python/compile.c	Wed Feb 15 08:00:21 2006
@@ -1672,7 +1672,7 @@
 	int i; \
 	PyObject *seq = (SEQ); /* avoid variable capture */ \
 	for (i = 0; i < PyList_GET_SIZE(seq); i++) { \
-		/*TYPE ## _ty*/ PyObject *elt = PyList_GET_ITEM(seq, i); \
+		PyObject *elt = PyList_GET_ITEM(seq, i); \
 		if (!compiler_visit_ ## TYPE((C), elt)) \
 			return 0; \
 	} \
@@ -1682,7 +1682,7 @@
 	int i; \
 	PyObject *seq = (SEQ); /* avoid variable capture */ \
 	for (i = 0; i < PyList_GET_SIZE(seq); i++) { \
-		/*TYPE ## _ty*/PyObject *elt = PyList_GET_ITEM(seq, i); \
+		PyObject *elt = PyList_GET_ITEM(seq, i); \
 		if (!compiler_visit_ ## TYPE((C), elt)) { \
 			compiler_exit_scope(c); \
 			return 0; \
@@ -2016,8 +2016,7 @@
 			return 0;
 	}
 
-	if (arguments_defaults(args))
-		VISIT_SEQ(c, expr, arguments_defaults(args));
+	VISIT_SEQ(c, expr, arguments_defaults(args));
 	if (!compiler_enter_scope(c, name, (void *)e, ((struct _expr*)e)->lineno))
 		return 0;
 
@@ -2332,7 +2331,7 @@
 		except = compiler_new_block(c);
 		if (except == NULL)
 			return 0;
-		if (excepthandler_type(handler)) {
+		if (excepthandler_type(handler) != Py_None) {
 			ADDOP(c, DUP_TOP);
 			VISIT(c, expr, excepthandler_type(handler));
 			ADDOP_I(c, COMPARE_OP, PyCmp_EXC_MATCH);
@@ -2340,7 +2339,7 @@
 			ADDOP(c, POP_TOP);
 		}
 		ADDOP(c, POP_TOP);
-		if (excepthandler_name(handler)) {
+		if (excepthandler_name(handler) != Py_None) {
 			VISIT(c, expr, excepthandler_name(handler));
 		}
 		else {
@@ -2350,7 +2349,7 @@
 		VISIT_SEQ(c, stmt, excepthandler_body(handler));
 		ADDOP_JREL(c, JUMP_FORWARD, end);
 		compiler_use_next_block(c, except);
-		if (excepthandler_type(handler))
+		if (excepthandler_type(handler) != Py_None)
 			ADDOP(c, POP_TOP);
 	}
 	ADDOP(c, END_FINALLY);
@@ -2628,6 +2627,8 @@
 		break;
 case Continue_kind:
 		return compiler_continue(c);
+ default:
+		assert(0);
 	}
 	return 1;
 }
@@ -2644,6 +2645,8 @@
 		return UNARY_POSITIVE;
 	case USub_kind:
 		return UNARY_NEGATIVE;
+ default:
+		assert(0);
 	}
 	return 0;
 }
@@ -2679,6 +2682,8 @@
 		return BINARY_AND;
 	case FloorDiv_kind:
 		return BINARY_FLOOR_DIVIDE;
+ default:
+		assert(0);
 	}
 	return 0;
 }
@@ -2707,6 +2712,8 @@
 		return PyCmp_IN;
 	case NotIn_kind:
 		return PyCmp_NOT_IN;
+ default:
+		assert(0);
 	}
 	return PyCmp_BAD;
 }
@@ -2742,6 +2749,8 @@
 		return INPLACE_AND;
 	case FloorDiv_kind:
 		return INPLACE_FLOOR_DIVIDE;
+ default:
+		assert(0);
 	}
 	PyErr_Format(PyExc_SystemError,
 		 "inplace binary op %d should not be possible",
@@ -2819,6 +2828,8 @@
 			PyErr_SetString(PyExc_SystemError,
 					"param invalid for deref variable");
 			return 0;
+		default:
+			assert(0);
 		}
 		break;
 	case OP_FAST:
@@ -2833,6 +2844,8 @@
 			PyErr_SetString(PyExc_SystemError,
 					"param invalid for local variable");
 			return 0;
+		default:
+			assert(0);
 		}
 		ADDOP_O(c, op, mangled, varnames);
 		Py_DECREF(mangled);
@@ -2849,6 +2862,8 @@
 			PyErr_SetString(PyExc_SystemError,
 					"param invalid for global variable");
 			return 0;
+		default:
+			assert(0);
 		}
 		break;
 	case OP_NAME:
@@ -2863,6 +2878,8 @@
 			PyErr_SetString(PyExc_SystemError,
 					"param invalid for name variable");
 			return 0;
+		default:
+			assert(0);
 		}
 		break;
 	}
@@ -3346,6 +3363,8 @@
 			PyErr_SetString(PyExc_SystemError,
 					"param invalid in attribute expression");
 			return 0;
+		default:
+			assert(0);
 		}
 		break;
 case Subscript_kind:
@@ -3373,6 +3392,8 @@
 			PyErr_SetString(PyExc_SystemError,
 					"param invalid in subscript expression");
 			return 0;
+		default:
+			assert(0);
 		}
 		break;
 case Name_kind:
@@ -3382,6 +3403,8 @@
 		return compiler_list(c, e);
 case Tuple_kind:
 		return compiler_tuple(c, e);
+	default:
+		assert(0);
 	}
 	return 1;
 }
@@ -3395,7 +3418,7 @@
 	assert(stmt_kind(s) == AugAssign_kind);
 
 	switch (expr_kind(e)) {
- case Attribute_kind:
+	case Attribute_kind:
 		auge = Attribute(Attribute_value(e), Attribute_attr(e),
 				 AugLoad(), ((struct _expr*)e)->lineno);
 if (auge == NULL)
@@ -3500,6 +3523,8 @@
 "invalid %s kind %d in subscript\n", 
 kind, expr_context_kind(ctx));
 return 0;
+		default:
+			assert(0);
 }
 if (expr_context_kind(ctx) == AugLoad_kind) {
 ADDOP_I(c, DUP_TOPX, 2);
@@ -3545,7 +3570,7 @@
 {
 	int op = 0, slice_offset = 0, stack_count = 0;
 
-	assert(Slice_step(s) == NULL);
+	assert(Slice_step(s) == Py_None);
 	if (Slice_lower(s) != Py_None) {
 		slice_offset++;
 		stack_count++;
@@ -3584,6 +3609,8 @@
 		PyErr_SetString(PyExc_SystemError,
 				"param invalid in simple slice");
 		return 0;
+	default:
+		assert(0);
 	}
 
 	ADDOP(c, op + slice_offset);
@@ -3608,6 +3635,8 @@
 		PyErr_SetString(PyExc_SystemError,
 				"extended slice invalid in nested slice");
 		return 0;
+	default:
+		assert(0);
 	}
 	return 1;
 }
@@ -3646,6 +3675,8 @@
 if (expr_context_kind(ctx) != AugStore_kind)
 			VISIT(c, expr, Index_value(s));
 return compiler_handle_subscr(c, "index", ctx);
+	default:
+		assert(0);
 	}
 	return 1;
 }
Modified: python/branches/ast-objects/Python/pythonrun.c
==============================================================================
--- python/branches/ast-objects/Python/pythonrun.c	(original)
+++ python/branches/ast-objects/Python/pythonrun.c	Wed Feb 15 08:00:21 2006
@@ -1159,7 +1159,7 @@
 	PyObject *ret;
 	PyObject *mod = PyParser_ASTFromString(str, "<string>", start, flags);
 	ret = run_err_mod(mod, "<string>", globals, locals, flags);
-	Py_DECREF(mod);
+	Py_XDECREF(mod);
 	return ret;
 }
 
Modified: python/branches/ast-objects/Python/symtable.c
==============================================================================
--- python/branches/ast-objects/Python/symtable.c	(original)
+++ python/branches/ast-objects/Python/symtable.c	Wed Feb 15 08:00:21 2006
@@ -240,6 +240,8 @@
 		PyErr_SetString(PyExc_RuntimeError,
 				"this compiler does not handle Suites");
 		goto error;
+	default:
+		assert(0);
 	}
 	if (!symtable_exit_block(st, (void *)mod)) {
 		PySymtable_Free(st);
@@ -1046,6 +1048,8 @@
 case Continue_kind:
 		/* nothing to do here */
 		break;
+	default:
+		assert(0);
 	}
 	return 1;
 }
@@ -1148,6 +1152,8 @@
 case Tuple_kind:
 		VISIT_SEQ(st, expr, Tuple_elts(e));
 		break;
+	default:
+		assert(0);
 	}
 	return 1;
 }
@@ -1265,7 +1271,7 @@
 	 dotted package name (e.g. spam.eggs) 
 	*/
 	PyObject *store_name;
-	PyObject *name = (alias_asname(a) == NULL) ? alias_name(a) : alias_asname(a);
+	PyObject *name = (alias_asname(a) == Py_None) ? alias_name(a) : alias_asname(a);
 	const char *base = PyString_AS_STRING(name);
 	char *dot = strchr(base, '.');
 	if (dot)
@@ -1332,6 +1338,8 @@
 		break;
 	case Ellipsis_kind:
 		break;
+	default:
+		assert(0);
 	}
 	return 1;
 }


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /