remove dead *-import checking code (closes #24049)

This commit is contained in:
Benjamin Peterson 2015-04-24 12:02:29 -04:00
parent bd91ee9cd7
commit 9bdd61338d
2 changed files with 0 additions and 35 deletions

View File

@ -161,10 +161,6 @@ conjunction with nested scopes that contain free variables.
If a variable is referenced in an enclosing scope, it is illegal to delete the If a variable is referenced in an enclosing scope, it is illegal to delete the
name. An error will be reported at compile time. name. An error will be reported at compile time.
If the wild card form of import --- ``import *`` --- is used in a function and
the function contains or is a nested block with free variables, the compiler
will raise a :exc:`SyntaxError`.
.. XXX from * also invalid with relative imports (at least currently) .. XXX from * also invalid with relative imports (at least currently)
The :func:`eval` and :func:`exec` functions do not have access to the full The :func:`eval` and :func:`exec` functions do not have access to the full

View File

@ -583,35 +583,6 @@ drop_class_free(PySTEntryObject *ste, PyObject *free)
return 1; return 1;
} }
/* Check for illegal statements in unoptimized namespaces */
static int
check_unoptimized(const PySTEntryObject* ste) {
const char* trailer;
if (ste->ste_type != FunctionBlock || !ste->ste_unoptimized
|| !(ste->ste_free || ste->ste_child_free))
return 1;
trailer = (ste->ste_child_free ?
"contains a nested function with free variables" :
"is a nested function");
switch (ste->ste_unoptimized) {
case OPT_TOPLEVEL: /* import * at top-level is fine */
return 1;
case OPT_IMPORT_STAR:
PyErr_Format(PyExc_SyntaxError,
"import * is not allowed in function '%U' because it %s",
ste->ste_name, trailer);
break;
}
PyErr_SyntaxLocationObject(ste->ste_table->st_filename,
ste->ste_opt_lineno,
ste->ste_opt_col_offset);
return 0;
}
/* Enter the final scope information into the ste_symbols dict. /* Enter the final scope information into the ste_symbols dict.
* *
* All arguments are dicts. Modifies symbols, others are read-only. * All arguments are dicts. Modifies symbols, others are read-only.
@ -854,8 +825,6 @@ analyze_block(PySTEntryObject *ste, PyObject *bound, PyObject *free,
if (!update_symbols(ste->ste_symbols, scopes, bound, newfree, if (!update_symbols(ste->ste_symbols, scopes, bound, newfree,
ste->ste_type == ClassBlock)) ste->ste_type == ClassBlock))
goto error; goto error;
if (!check_unoptimized(ste))
goto error;
temp = PyNumber_InPlaceOr(free, newfree); temp = PyNumber_InPlaceOr(free, newfree);
if (!temp) if (!temp)