mirror of
https://github.com/python/cpython.git
synced 2025-11-01 10:45:30 +00:00
Handle more error conditions with SystemError
This commit is contained in:
parent
db83eb3170
commit
4e6bf49a5e
1 changed files with 22 additions and 8 deletions
|
|
@ -2760,8 +2760,7 @@ inplace_binop(struct compiler *c, operator_ty op)
|
||||||
return INPLACE_FLOOR_DIVIDE;
|
return INPLACE_FLOOR_DIVIDE;
|
||||||
}
|
}
|
||||||
PyErr_Format(PyExc_SystemError,
|
PyErr_Format(PyExc_SystemError,
|
||||||
"inplace binary op %d should not be possible",
|
"inplace binary op %d should not be possible", op);
|
||||||
op);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -2809,6 +2808,9 @@ compiler_nameop(struct compiler *c, identifier name, expr_context_ty ctx)
|
||||||
case GLOBAL_EXPLICIT:
|
case GLOBAL_EXPLICIT:
|
||||||
optype = OP_GLOBAL;
|
optype = OP_GLOBAL;
|
||||||
break;
|
break;
|
||||||
|
default:
|
||||||
|
/* scope can be 0 */
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* XXX Leave assert here, but handle __doc__ and the like better */
|
/* XXX Leave assert here, but handle __doc__ and the like better */
|
||||||
|
|
@ -2830,6 +2832,7 @@ compiler_nameop(struct compiler *c, identifier name, expr_context_ty ctx)
|
||||||
Py_DECREF(mangled);
|
Py_DECREF(mangled);
|
||||||
return 0;
|
return 0;
|
||||||
case Param:
|
case Param:
|
||||||
|
default:
|
||||||
PyErr_SetString(PyExc_SystemError,
|
PyErr_SetString(PyExc_SystemError,
|
||||||
"param invalid for deref variable");
|
"param invalid for deref variable");
|
||||||
return 0;
|
return 0;
|
||||||
|
|
@ -2844,6 +2847,7 @@ compiler_nameop(struct compiler *c, identifier name, expr_context_ty ctx)
|
||||||
case AugStore:
|
case AugStore:
|
||||||
break;
|
break;
|
||||||
case Param:
|
case Param:
|
||||||
|
default:
|
||||||
PyErr_SetString(PyExc_SystemError,
|
PyErr_SetString(PyExc_SystemError,
|
||||||
"param invalid for local variable");
|
"param invalid for local variable");
|
||||||
return 0;
|
return 0;
|
||||||
|
|
@ -2860,6 +2864,7 @@ compiler_nameop(struct compiler *c, identifier name, expr_context_ty ctx)
|
||||||
case AugStore:
|
case AugStore:
|
||||||
break;
|
break;
|
||||||
case Param:
|
case Param:
|
||||||
|
default:
|
||||||
PyErr_SetString(PyExc_SystemError,
|
PyErr_SetString(PyExc_SystemError,
|
||||||
"param invalid for global variable");
|
"param invalid for global variable");
|
||||||
return 0;
|
return 0;
|
||||||
|
|
@ -2874,6 +2879,7 @@ compiler_nameop(struct compiler *c, identifier name, expr_context_ty ctx)
|
||||||
case AugStore:
|
case AugStore:
|
||||||
break;
|
break;
|
||||||
case Param:
|
case Param:
|
||||||
|
default:
|
||||||
PyErr_SetString(PyExc_SystemError,
|
PyErr_SetString(PyExc_SystemError,
|
||||||
"param invalid for name variable");
|
"param invalid for name variable");
|
||||||
return 0;
|
return 0;
|
||||||
|
|
@ -3361,6 +3367,7 @@ compiler_visit_expr(struct compiler *c, expr_ty e)
|
||||||
ADDOP_NAME(c, DELETE_ATTR, e->v.Attribute.attr, names);
|
ADDOP_NAME(c, DELETE_ATTR, e->v.Attribute.attr, names);
|
||||||
break;
|
break;
|
||||||
case Param:
|
case Param:
|
||||||
|
default:
|
||||||
PyErr_SetString(PyExc_SystemError,
|
PyErr_SetString(PyExc_SystemError,
|
||||||
"param invalid in attribute expression");
|
"param invalid in attribute expression");
|
||||||
return 0;
|
return 0;
|
||||||
|
|
@ -3388,6 +3395,7 @@ compiler_visit_expr(struct compiler *c, expr_ty e)
|
||||||
VISIT_SLICE(c, e->v.Subscript.slice, Del);
|
VISIT_SLICE(c, e->v.Subscript.slice, Del);
|
||||||
break;
|
break;
|
||||||
case Param:
|
case Param:
|
||||||
|
default:
|
||||||
PyErr_SetString(PyExc_SystemError,
|
PyErr_SetString(PyExc_SystemError,
|
||||||
"param invalid in subscript expression");
|
"param invalid in subscript expression");
|
||||||
return 0;
|
return 0;
|
||||||
|
|
@ -3441,8 +3449,9 @@ compiler_augassign(struct compiler *c, stmt_ty s)
|
||||||
ADDOP(c, inplace_binop(c, s->v.AugAssign.op));
|
ADDOP(c, inplace_binop(c, s->v.AugAssign.op));
|
||||||
return compiler_nameop(c, e->v.Name.id, Store);
|
return compiler_nameop(c, e->v.Name.id, Store);
|
||||||
default:
|
default:
|
||||||
fprintf(stderr,
|
PyErr_Format(PyExc_SystemError,
|
||||||
"invalid node type for augmented assignment\n");
|
"invalid node type (%d) for augmented assignment",
|
||||||
|
e->kind);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
|
|
@ -3514,9 +3523,9 @@ compiler_handle_subscr(struct compiler *c, const char *kind,
|
||||||
case Store: op = STORE_SUBSCR; break;
|
case Store: op = STORE_SUBSCR; break;
|
||||||
case Del: op = DELETE_SUBSCR; break;
|
case Del: op = DELETE_SUBSCR; break;
|
||||||
case Param:
|
case Param:
|
||||||
fprintf(stderr,
|
PyErr_Format(PyExc_SystemError,
|
||||||
"invalid %s kind %d in subscript\n",
|
"invalid %s kind %d in subscript\n",
|
||||||
kind, ctx);
|
kind, ctx);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if (ctx == AugLoad) {
|
if (ctx == AugLoad) {
|
||||||
|
|
@ -3599,6 +3608,7 @@ compiler_simple_slice(struct compiler *c, slice_ty s, expr_context_ty ctx)
|
||||||
case Store: op = STORE_SLICE; break;
|
case Store: op = STORE_SLICE; break;
|
||||||
case Del: op = DELETE_SLICE; break;
|
case Del: op = DELETE_SLICE; break;
|
||||||
case Param:
|
case Param:
|
||||||
|
default:
|
||||||
PyErr_SetString(PyExc_SystemError,
|
PyErr_SetString(PyExc_SystemError,
|
||||||
"param invalid in simple slice");
|
"param invalid in simple slice");
|
||||||
return 0;
|
return 0;
|
||||||
|
|
@ -3618,11 +3628,11 @@ compiler_visit_nested_slice(struct compiler *c, slice_ty s,
|
||||||
break;
|
break;
|
||||||
case Slice_kind:
|
case Slice_kind:
|
||||||
return compiler_slice(c, s, ctx);
|
return compiler_slice(c, s, ctx);
|
||||||
break;
|
|
||||||
case Index_kind:
|
case Index_kind:
|
||||||
VISIT(c, expr, s->v.Index.value);
|
VISIT(c, expr, s->v.Index.value);
|
||||||
break;
|
break;
|
||||||
case ExtSlice_kind:
|
case ExtSlice_kind:
|
||||||
|
default:
|
||||||
PyErr_SetString(PyExc_SystemError,
|
PyErr_SetString(PyExc_SystemError,
|
||||||
"extended slice invalid in nested slice");
|
"extended slice invalid in nested slice");
|
||||||
return 0;
|
return 0;
|
||||||
|
|
@ -3664,6 +3674,10 @@ compiler_visit_slice(struct compiler *c, slice_ty s, expr_context_ty ctx)
|
||||||
if (ctx != AugStore)
|
if (ctx != AugStore)
|
||||||
VISIT(c, expr, s->v.Index.value);
|
VISIT(c, expr, s->v.Index.value);
|
||||||
return compiler_handle_subscr(c, "index", ctx);
|
return compiler_handle_subscr(c, "index", ctx);
|
||||||
|
default:
|
||||||
|
PyErr_Format(PyExc_SystemError,
|
||||||
|
"invalid slice %d", s->kind);
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue