summaryrefslogtreecommitdiff
path: root/Python
diff options
context:
space:
mode:
Diffstat (limited to 'Python')
-rw-r--r--Python/ast.c39
-rw-r--r--Python/bltinmodule.c12
-rw-r--r--Python/ceval.c9
-rw-r--r--Python/dynload_win.c2
-rw-r--r--Python/graminit.c122
-rw-r--r--Python/import.c5
-rw-r--r--Python/sysmodule.c35
7 files changed, 98 insertions, 126 deletions
diff --git a/Python/ast.c b/Python/ast.c
index 65527ba271..e0bd18e731 100644
--- a/Python/ast.c
+++ b/Python/ast.c
@@ -324,6 +324,29 @@ get_operator(const node *n)
}
}
+static const char* FORBIDDEN[] = {
+ "None",
+ "True",
+ "False",
+ NULL,
+};
+
+static int
+forbidden_name(expr_ty e, const node *n)
+{
+ const char *id;
+ const char **p;
+ assert(PyString_Check(e->v.Name.id));
+ id = PyString_AS_STRING(e->v.Name.id);
+ for (p = FORBIDDEN; *p; p++) {
+ if (strcmp(*p, id) == 0) {
+ ast_error(n, "assignment to keyword");
+ return 1;
+ }
+ }
+ return 0;
+}
+
/* Set the context ctx for expr_ty e, recursively traversing e.
Only sets context for expr kinds that "can appear in assignment context"
@@ -366,9 +389,9 @@ set_context(expr_ty e, expr_context_ty ctx, const node *n)
return 0;
break;
case Name_kind:
- if (ctx == Store &&
- !strcmp(PyString_AS_STRING(e->v.Name.id), "None")) {
- return ast_error(n, "assignment to None");
+ if (ctx == Store) {
+ if (forbidden_name(e, n))
+ return 0; /* forbidden_name() calls ast_error() */
}
e->v.Name.ctx = ctx;
break;
@@ -1227,6 +1250,7 @@ ast_for_atom(struct compiling *c, const node *n)
{
/* atom: '(' [yield_expr|testlist_comp] ')' | '[' [testlist_comp] ']'
| '{' [dictmaker|testlist_comp] '}' | NAME | NUMBER | STRING+
+ | '...' | 'None' | 'True' | 'False'
*/
node *ch = CHILD(n, 0);
int bytesmode = 0;
@@ -1894,7 +1918,9 @@ ast_for_call(struct compiling *c, const node *n, expr_ty func)
} else if (e->kind != Name_kind) {
ast_error(CHILD(ch, 0), "keyword can't be an expression");
return NULL;
- }
+ } else if (forbidden_name(e, ch)) {
+ return NULL;
+ }
key = e->v.Name.id;
e = ast_for_expr(c, CHILD(ch, 2));
if (!e)
@@ -1981,11 +2007,8 @@ ast_for_expr_stmt(struct compiling *c, const node *n)
"expression not possible");
return NULL;
case Name_kind: {
- const char *var_name = PyString_AS_STRING(expr1->v.Name.id);
- if (var_name[0] == 'N' && !strcmp(var_name, "None")) {
- ast_error(ch, "assignment to None");
+ if (forbidden_name(expr1, ch))
return NULL;
- }
break;
}
case Attribute_kind:
diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c
index 43bbea92b2..97b2c5e1e6 100644
--- a/Python/bltinmodule.c
+++ b/Python/bltinmodule.c
@@ -1698,17 +1698,6 @@ If the user hits EOF (Unix: Ctl-D, Windows: Ctl-Z+Return), raise EOFError.\n\
On Unix, GNU readline is used if enabled. The prompt string, if given,\n\
is printed without a trailing newline before reading.");
-static PyObject *
-builtin_reload(PyObject *self, PyObject *v)
-{
- return PyImport_ReloadModule(v);
-}
-
-PyDoc_STRVAR(reload_doc,
-"reload(module) -> module\n\
-\n\
-Reload the module. The module must have been successfully imported before.");
-
static PyObject *
builtin_repr(PyObject *self, PyObject *v)
@@ -2006,7 +1995,6 @@ static PyMethodDef builtin_methods[] = {
{"ord", builtin_ord, METH_O, ord_doc},
{"pow", builtin_pow, METH_VARARGS, pow_doc},
{"print", (PyCFunction)builtin_print, METH_VARARGS | METH_KEYWORDS, print_doc},
- {"reload", builtin_reload, METH_O, reload_doc},
{"repr", builtin_repr, METH_O, repr_doc},
{"round", (PyCFunction)builtin_round, METH_VARARGS | METH_KEYWORDS, round_doc},
{"setattr", builtin_setattr, METH_VARARGS, setattr_doc},
diff --git a/Python/ceval.c b/Python/ceval.c
index 37659f8f72..710a0d1561 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -2939,10 +2939,6 @@ set_exc_info(PyThreadState *tstate,
Py_XDECREF(tmp_type);
Py_XDECREF(tmp_value);
Py_XDECREF(tmp_tb);
- /* For b/w compatibility */
- PySys_SetObject("exc_type", type);
- PySys_SetObject("exc_value", value);
- PySys_SetObject("exc_traceback", tb);
}
static void
@@ -2973,11 +2969,6 @@ reset_exc_info(PyThreadState *tstate)
Py_XDECREF(tmp_value);
Py_XDECREF(tmp_tb);
- /* For b/w compatibility */
- PySys_SetObject("exc_type", frame->f_exc_type);
- PySys_SetObject("exc_value", frame->f_exc_value);
- PySys_SetObject("exc_traceback", frame->f_exc_traceback);
-
/* Clear the frame's exception info. */
tmp_type = frame->f_exc_type;
tmp_value = frame->f_exc_value;
diff --git a/Python/dynload_win.c b/Python/dynload_win.c
index 1c3b3ab0c8..fc641b9ff9 100644
--- a/Python/dynload_win.c
+++ b/Python/dynload_win.c
@@ -1,7 +1,6 @@
/* Support for dynamic loading of extension modules */
-#include <windows.h>
#ifdef HAVE_DIRECT_H
#include <direct.h>
#endif
@@ -9,6 +8,7 @@
#include "Python.h"
#include "importdl.h"
+#include <windows.h>
const struct filedescr _PyImport_DynLoadFiletab[] = {
#ifdef _DEBUG
diff --git a/Python/graminit.c b/Python/graminit.c
index ba2686fb9a..c1c070b36e 100644
--- a/Python/graminit.c
+++ b/Python/graminit.c
@@ -1285,7 +1285,7 @@ static state states_62[4] = {
{1, arcs_62_2},
{1, arcs_62_3},
};
-static arc arcs_63_0[7] = {
+static arc arcs_63_0[10] = {
{13, 1},
{146, 2},
{148, 3},
@@ -1293,6 +1293,9 @@ static arc arcs_63_0[7] = {
{151, 4},
{152, 5},
{77, 4},
+ {153, 4},
+ {154, 4},
+ {155, 4},
};
static arc arcs_63_1[3] = {
{46, 6},
@@ -1324,7 +1327,7 @@ static arc arcs_63_8[1] = {
{150, 4},
};
static state states_63[9] = {
- {7, arcs_63_0},
+ {10, arcs_63_0},
{3, arcs_63_1},
{2, arcs_63_2},
{2, arcs_63_3},
@@ -1338,7 +1341,7 @@ static arc arcs_64_0[1] = {
{24, 1},
};
static arc arcs_64_1[3] = {
- {153, 2},
+ {156, 2},
{30, 3},
{0, 1},
};
@@ -1370,7 +1373,7 @@ static arc arcs_65_1[2] = {
{15, 5},
};
static arc arcs_65_2[1] = {
- {154, 6},
+ {157, 6},
};
static arc arcs_65_3[1] = {
{21, 5},
@@ -1394,14 +1397,14 @@ static state states_65[7] = {
{1, arcs_65_6},
};
static arc arcs_66_0[1] = {
- {155, 1},
+ {158, 1},
};
static arc arcs_66_1[2] = {
{30, 2},
{0, 1},
};
static arc arcs_66_2[2] = {
- {155, 1},
+ {158, 1},
{0, 2},
};
static state states_66[3] = {
@@ -1419,11 +1422,11 @@ static arc arcs_67_1[2] = {
};
static arc arcs_67_2[3] = {
{24, 3},
- {156, 4},
+ {159, 4},
{0, 2},
};
static arc arcs_67_3[2] = {
- {156, 4},
+ {159, 4},
{0, 3},
};
static arc arcs_67_4[1] = {
@@ -1488,7 +1491,7 @@ static arc arcs_71_0[1] = {
};
static arc arcs_71_1[4] = {
{25, 2},
- {153, 3},
+ {156, 3},
{30, 4},
{0, 1},
};
@@ -1529,7 +1532,7 @@ static state states_71[9] = {
{1, arcs_71_8},
};
static arc arcs_72_0[1] = {
- {157, 1},
+ {160, 1},
};
static arc arcs_72_1[1] = {
{21, 2},
@@ -1565,7 +1568,7 @@ static state states_72[8] = {
{1, arcs_72_7},
};
static arc arcs_73_0[3] = {
- {158, 1},
+ {161, 1},
{31, 2},
{32, 3},
};
@@ -1580,7 +1583,7 @@ static arc arcs_73_3[1] = {
{24, 6},
};
static arc arcs_73_4[4] = {
- {158, 1},
+ {161, 1},
{31, 2},
{32, 3},
{0, 4},
@@ -1609,7 +1612,7 @@ static arc arcs_74_0[1] = {
{24, 1},
};
static arc arcs_74_1[3] = {
- {153, 2},
+ {156, 2},
{29, 3},
{0, 1},
};
@@ -1626,8 +1629,8 @@ static state states_74[4] = {
{1, arcs_74_3},
};
static arc arcs_75_0[2] = {
- {153, 1},
- {160, 1},
+ {156, 1},
+ {163, 1},
};
static arc arcs_75_1[1] = {
{0, 1},
@@ -1649,7 +1652,7 @@ static arc arcs_76_3[1] = {
{105, 4},
};
static arc arcs_76_4[2] = {
- {159, 5},
+ {162, 5},
{0, 4},
};
static arc arcs_76_5[1] = {
@@ -1670,7 +1673,7 @@ static arc arcs_77_1[1] = {
{107, 2},
};
static arc arcs_77_2[2] = {
- {159, 3},
+ {162, 3},
{0, 2},
};
static arc arcs_77_3[1] = {
@@ -1704,7 +1707,7 @@ static state states_79[2] = {
{1, arcs_79_1},
};
static arc arcs_80_0[1] = {
- {163, 1},
+ {166, 1},
};
static arc arcs_80_1[2] = {
{9, 2},
@@ -1720,11 +1723,11 @@ static state states_80[3] = {
};
static dfa dfas[81] = {
{256, "single_input", 0, 3, states_0,
- "\004\050\060\200\000\000\000\050\170\052\034\144\011\040\004\000\200\041\224\041\010"},
+ "\004\050\060\200\000\000\000\050\170\052\034\144\011\040\004\000\200\041\224\017\101"},
{257, "file_input", 0, 2, states_1,
- "\204\050\060\200\000\000\000\050\170\052\034\144\011\040\004\000\200\041\224\041\010"},
+ "\204\050\060\200\000\000\000\050\170\052\034\144\011\040\004\000\200\041\224\017\101"},
{258, "eval_input", 0, 3, states_2,
- "\000\040\040\200\000\000\000\000\000\040\000\000\000\040\004\000\200\041\224\001\000"},
+ "\000\040\040\200\000\000\000\000\000\040\000\000\000\040\004\000\200\041\224\017\000"},
{259, "decorator", 0, 7, states_3,
"\000\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
{260, "decorators", 0, 2, states_4,
@@ -1744,13 +1747,13 @@ static dfa dfas[81] = {
{267, "vfpdef", 0, 2, states_11,
"\000\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
{268, "stmt", 0, 2, states_12,
- "\000\050\060\200\000\000\000\050\170\052\034\144\011\040\004\000\200\041\224\041\010"},
+ "\000\050\060\200\000\000\000\050\170\052\034\144\011\040\004\000\200\041\224\017\101"},
{269, "simple_stmt", 0, 4, states_13,
- "\000\040\040\200\000\000\000\050\170\052\034\000\000\040\004\000\200\041\224\001\010"},
+ "\000\040\040\200\000\000\000\050\170\052\034\000\000\040\004\000\200\041\224\017\100"},
{270, "small_stmt", 0, 2, states_14,
- "\000\040\040\200\000\000\000\050\170\052\034\000\000\040\004\000\200\041\224\001\010"},
+ "\000\040\040\200\000\000\000\050\170\052\034\000\000\040\004\000\200\041\224\017\100"},
{271, "expr_stmt", 0, 6, states_15,
- "\000\040\040\200\000\000\000\000\000\040\000\000\000\040\004\000\200\041\224\001\000"},
+ "\000\040\040\200\000\000\000\000\000\040\000\000\000\040\004\000\200\041\224\017\000"},
{272, "augassign", 0, 2, states_16,
"\000\000\000\000\000\200\377\007\000\000\000\000\000\000\000\000\000\000\000\000\000"},
{273, "del_stmt", 0, 3, states_17,
@@ -1758,7 +1761,7 @@ static dfa dfas[81] = {
{274, "pass_stmt", 0, 2, states_18,
"\000\000\000\000\000\000\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000"},
{275, "flow_stmt", 0, 2, states_19,
- "\000\000\000\000\000\000\000\000\170\000\000\000\000\000\000\000\000\000\000\000\010"},
+ "\000\000\000\000\000\000\000\000\170\000\000\000\000\000\000\000\000\000\000\000\100"},
{276, "break_stmt", 0, 2, states_20,
"\000\000\000\000\000\000\000\000\010\000\000\000\000\000\000\000\000\000\000\000\000"},
{277, "continue_stmt", 0, 2, states_21,
@@ -1766,7 +1769,7 @@ static dfa dfas[81] = {
{278, "return_stmt", 0, 3, states_22,
"\000\000\000\000\000\000\000\000\040\000\000\000\000\000\000\000\000\000\000\000\000"},
{279, "yield_stmt", 0, 2, states_23,
- "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\010"},
+ "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\100"},
{280, "raise_stmt", 0, 7, states_24,
"\000\000\000\000\000\000\000\000\100\000\000\000\000\000\000\000\000\000\000\000\000"},
{281, "import_stmt", 0, 2, states_25,
@@ -1792,7 +1795,7 @@ static dfa dfas[81] = {
{291, "assert_stmt", 0, 5, states_35,
"\000\000\000\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000\000\000"},
{292, "compound_stmt", 0, 2, states_36,
- "\000\010\020\000\000\000\000\000\000\000\000\144\011\000\000\000\000\000\000\040\000"},
+ "\000\010\020\000\000\000\000\000\000\000\000\144\011\000\000\000\000\000\000\000\001"},
{293, "if_stmt", 0, 8, states_37,
"\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000"},
{294, "while_stmt", 0, 8, states_38,
@@ -1808,67 +1811,67 @@ static dfa dfas[81] = {
{299, "except_clause", 0, 5, states_43,
"\000\000\000\000\000\000\000\000\000\000\000\000\100\000\000\000\000\000\000\000\000"},
{300, "suite", 0, 5, states_44,
- "\004\040\040\200\000\000\000\050\170\052\034\000\000\040\004\000\200\041\224\001\010"},
+ "\004\040\040\200\000\000\000\050\170\052\034\000\000\040\004\000\200\041\224\017\100"},
{301, "test", 0, 6, states_45,
- "\000\040\040\200\000\000\000\000\000\040\000\000\000\040\004\000\200\041\224\001\000"},
+ "\000\040\040\200\000\000\000\000\000\040\000\000\000\040\004\000\200\041\224\017\000"},
{302, "test_nocond", 0, 2, states_46,
- "\000\040\040\200\000\000\000\000\000\040\000\000\000\040\004\000\200\041\224\001\000"},
+ "\000\040\040\200\000\000\000\000\000\040\000\000\000\040\004\000\200\041\224\017\000"},
{303, "lambdef", 0, 5, states_47,
"\000\000\000\000\000\000\000\000\000\000\000\000\000\040\000\000\000\000\000\000\000"},
{304, "lambdef_nocond", 0, 5, states_48,
"\000\000\000\000\000\000\000\000\000\000\000\000\000\040\000\000\000\000\000\000\000"},
{305, "or_test", 0, 2, states_49,
- "\000\040\040\200\000\000\000\000\000\040\000\000\000\000\004\000\200\041\224\001\000"},
+ "\000\040\040\200\000\000\000\000\000\040\000\000\000\000\004\000\200\041\224\017\000"},
{306, "and_test", 0, 2, states_50,
- "\000\040\040\200\000\000\000\000\000\040\000\000\000\000\004\000\200\041\224\001\000"},
+ "\000\040\040\200\000\000\000\000\000\040\000\000\000\000\004\000\200\041\224\017\000"},
{307, "not_test", 0, 3, states_51,
- "\000\040\040\200\000\000\000\000\000\040\000\000\000\000\004\000\200\041\224\001\000"},
+ "\000\040\040\200\000\000\000\000\000\040\000\000\000\000\004\000\200\041\224\017\000"},
{308, "comparison", 0, 2, states_52,
- "\000\040\040\200\000\000\000\000\000\040\000\000\000\000\000\000\200\041\224\001\000"},
+ "\000\040\040\200\000\000\000\000\000\040\000\000\000\000\000\000\200\041\224\017\000"},
{309, "comp_op", 0, 4, states_53,
"\000\000\000\000\000\000\000\000\000\000\000\200\000\000\304\037\000\000\000\000\000"},
{310, "star_expr", 0, 3, states_54,
- "\000\040\040\200\000\000\000\000\000\040\000\000\000\000\000\000\200\041\224\001\000"},
+ "\000\040\040\200\000\000\000\000\000\040\000\000\000\000\000\000\200\041\224\017\000"},
{311, "expr", 0, 2, states_55,
- "\000\040\040\000\000\000\000\000\000\040\000\000\000\000\000\000\200\041\224\001\000"},
+ "\000\040\040\000\000\000\000\000\000\040\000\000\000\000\000\000\200\041\224\017\000"},
{312, "xor_expr", 0, 2, states_56,
- "\000\040\040\000\000\000\000\000\000\040\000\000\000\000\000\000\200\041\224\001\000"},
+ "\000\040\040\000\000\000\000\000\000\040\000\000\000\000\000\000\200\041\224\017\000"},
{313, "and_expr", 0, 2, states_57,
- "\000\040\040\000\000\000\000\000\000\040\000\000\000\000\000\000\200\041\224\001\000"},
+ "\000\040\040\000\000\000\000\000\000\040\000\000\000\000\000\000\200\041\224\017\000"},
{314, "shift_expr", 0, 2, states_58,
- "\000\040\040\000\000\000\000\000\000\040\000\000\000\000\000\000\200\041\224\001\000"},
+ "\000\040\040\000\000\000\000\000\000\040\000\000\000\000\000\000\200\041\224\017\000"},
{315, "arith_expr", 0, 2, states_59,
- "\000\040\040\000\000\000\000\000\000\040\000\000\000\000\000\000\200\041\224\001\000"},
+ "\000\040\040\000\000\000\000\000\000\040\000\000\000\000\000\000\200\041\224\017\000"},
{316, "term", 0, 2, states_60,
- "\000\040\040\000\000\000\000\000\000\040\000\000\000\000\000\000\200\041\224\001\000"},
+ "\000\040\040\000\000\000\000\000\000\040\000\000\000\000\000\000\200\041\224\017\000"},
{317, "factor", 0, 3, states_61,
- "\000\040\040\000\000\000\000\000\000\040\000\000\000\000\000\000\200\041\224\001\000"},
+ "\000\040\040\000\000\000\000\000\000\040\000\000\000\000\000\000\200\041\224\017\000"},
{318, "power", 0, 4, states_62,
- "\000\040\040\000\000\000\000\000\000\040\000\000\000\000\000\000\000\000\224\001\000"},
+ "\000\040\040\000\000\000\000\000\000\040\000\000\000\000\000\000\000\000\224\017\000"},
{319, "atom", 0, 9, states_63,
- "\000\040\040\000\000\000\000\000\000\040\000\000\000\000\000\000\000\000\224\001\000"},
+ "\000\040\040\000\000\000\000\000\000\040\000\000\000\000\000\000\000\000\224\017\000"},
{320, "testlist_comp", 0, 5, states_64,
- "\000\040\040\200\000\000\000\000\000\040\000\000\000\040\004\000\200\041\224\001\000"},
+ "\000\040\040\200\000\000\000\000\000\040\000\000\000\040\004\000\200\041\224\017\000"},
{321, "trailer", 0, 7, states_65,
"\000\040\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000\004\000\000"},
{322, "subscriptlist", 0, 3, states_66,
- "\000\040\040\202\000\000\000\000\000\040\000\000\000\040\004\000\200\041\224\001\000"},
+ "\000\040\040\202\000\000\000\000\000\040\000\000\000\040\004\000\200\041\224\017\000"},
{323, "subscript", 0, 5, states_67,
- "\000\040\040\202\000\000\000\000\000\040\000\000\000\040\004\000\200\041\224\001\000"},
+ "\000\040\040\202\000\000\000\000\000\040\000\000\000\040\004\000\200\041\224\017\000"},
{324, "sliceop", 0, 3, states_68,
"\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
{325, "exprlist", 0, 3, states_69,
- "\000\040\040\200\000\000\000\000\000\040\000\000\000\000\000\000\200\041\224\001\000"},
+ "\000\040\040\200\000\000\000\000\000\040\000\000\000\000\000\000\200\041\224\017\000"},
{326, "testlist", 0, 3, states_70,
- "\000\040\040\200\000\000\000\000\000\040\000\000\000\040\004\000\200\041\224\001\000"},
+ "\000\040\040\200\000\000\000\000\000\040\000\000\000\040\004\000\200\041\224\017\000"},
{327, "dictorsetmaker", 0, 9, states_71,
- "\000\040\040\200\000\000\000\000\000\040\000\000\000\040\004\000\200\041\224\001\000"},
+ "\000\040\040\200\000\000\000\000\000\040\000\000\000\040\004\000\200\041\224\017\000"},
{328, "classdef", 0, 8, states_72,
- "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\040\000"},
+ "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001"},
{329, "arglist", 0, 8, states_73,
- "\000\040\040\200\001\000\000\000\000\040\000\000\000\040\004\000\200\041\224\001\000"},
+ "\000\040\040\200\001\000\000\000\000\040\000\000\000\040\004\000\200\041\224\017\000"},
{330, "argument", 0, 4, states_74,
- "\000\040\040\200\000\000\000\000\000\040\000\000\000\040\004\000\200\041\224\001\000"},
+ "\000\040\040\200\000\000\000\000\000\040\000\000\000\040\004\000\200\041\224\017\000"},
{331, "comp_iter", 0, 2, states_75,
"\000\000\000\000\000\000\000\000\000\000\000\104\000\000\000\000\000\000\000\000\000"},
{332, "comp_for", 0, 6, states_76,
@@ -1876,13 +1879,13 @@ static dfa dfas[81] = {
{333, "comp_if", 0, 4, states_77,
"\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000"},
{334, "testlist1", 0, 2, states_78,
- "\000\040\040\200\000\000\000\000\000\040\000\000\000\040\004\000\200\041\224\001\000"},
+ "\000\040\040\200\000\000\000\000\000\040\000\000\000\040\004\000\200\041\224\017\000"},
{335, "encoding_decl", 0, 2, states_79,
"\000\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"},
{336, "yield_expr", 0, 3, states_80,
- "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\010"},
+ "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\100"},
};
-static label labels[164] = {
+static label labels[167] = {
{0, "EMPTY"},
{256, 0},
{4, 0},
@@ -2036,6 +2039,9 @@ static label labels[164] = {
{27, 0},
{2, 0},
{3, 0},
+ {1, "None"},
+ {1, "True"},
+ {1, "False"},
{332, 0},
{322, 0},
{323, 0},
@@ -2051,6 +2057,6 @@ static label labels[164] = {
grammar _PyParser_Grammar = {
81,
dfas,
- {164, labels},
+ {167, labels},
256
};
diff --git a/Python/import.c b/Python/import.c
index e1a80f48d5..75f1e015b0 100644
--- a/Python/import.c
+++ b/Python/import.c
@@ -371,7 +371,6 @@ PyImport_GetModuleDict(void)
/* List of names to clear in sys */
static char* sys_deletes[] = {
"path", "argv", "ps1", "ps2",
- "exc_type", "exc_value", "exc_traceback",
"last_type", "last_value", "last_traceback",
"path_hooks", "path_importer_cache", "meta_path",
NULL
@@ -2413,7 +2412,7 @@ PyImport_ReloadModule(PyObject *m)
if (modules_reloading == NULL) {
Py_FatalError("PyImport_ReloadModule: "
- "no modules_reloading dictionary!");
+ "no modules_reloading dictionary!");
return NULL;
}
@@ -2457,7 +2456,7 @@ PyImport_ReloadModule(PyObject *m)
"reload(): parent %.200s not in sys.modules",
PyString_AS_STRING(parentname));
Py_DECREF(parentname);
- imp_modules_reloading_clear();
+ imp_modules_reloading_clear();
return NULL;
}
Py_DECREF(parentname);
diff --git a/Python/sysmodule.c b/Python/sysmodule.c
index a8bb918f5a..442e66a8f5 100644
--- a/Python/sysmodule.c
+++ b/Python/sysmodule.c
@@ -163,33 +163,6 @@ clause in the current stack frame or in an older stack frame."
);
static PyObject *
-sys_exc_clear(PyObject *self, PyObject *noargs)
-{
- PyThreadState *tstate = PyThreadState_GET();
- PyObject *tmp_type, *tmp_value, *tmp_tb;
- tmp_type = tstate->exc_type;
- tmp_value = tstate->exc_value;
- tmp_tb = tstate->exc_traceback;
- tstate->exc_type = NULL;
- tstate->exc_value = NULL;
- tstate->exc_traceback = NULL;
- Py_XDECREF(tmp_type);
- Py_XDECREF(tmp_value);
- Py_XDECREF(tmp_tb);
- Py_INCREF(Py_None);
- return Py_None;
-}
-
-PyDoc_STRVAR(exc_clear_doc,
-"exc_clear() -> None\n\
-\n\
-Clear global information on the current exception. Subsequent calls to\n\
-exc_info() will return (None,None,None) until another exception is raised\n\
-in the current thread or the execution stack returns to a frame where\n\
-another exception is being handled."
-);
-
-static PyObject *
sys_exit(PyObject *self, PyObject *args)
{
PyObject *exit_code = 0;
@@ -765,7 +738,6 @@ static PyMethodDef sys_methods[] = {
current_frames_doc},
{"displayhook", sys_displayhook, METH_O, displayhook_doc},
{"exc_info", sys_exc_info, METH_NOARGS, exc_info_doc},
- {"exc_clear", sys_exc_clear, METH_NOARGS, exc_clear_doc},
{"excepthook", sys_excepthook, METH_VARARGS, excepthook_doc},
{"exit", sys_exit, METH_VARARGS, exit_doc},
{"getdefaultencoding", (PyCFunction)sys_getdefaultencoding,
@@ -907,12 +879,6 @@ last_value -- value of last uncaught exception\n\
last_traceback -- traceback of last uncaught exception\n\
These three are only available in an interactive session after a\n\
traceback has been printed.\n\
-\n\
-exc_type -- type of exception currently being handled\n\
-exc_value -- value of exception currently being handled\n\
-exc_traceback -- traceback of exception currently being handled\n\
- The function exc_info() should be used instead of these three,\n\
- because it is thread-safe.\n\
"
)
/* concatenating string here */
@@ -953,7 +919,6 @@ Functions:\n\
displayhook() -- print an object to the screen, and save it in __builtin__._\n\
excepthook() -- print an exception and its traceback to sys.stderr\n\
exc_info() -- return thread-safe information about the current exception\n\
-exc_clear() -- clear the exception state for the current thread\n\
exit() -- exit the interpreter by raising SystemExit\n\
getdlopenflags() -- returns flags to be used for dlopen() calls\n\
getrefcount() -- return the reference count for an object (plus one :-)\n\