summaryrefslogtreecommitdiff
path: root/Python/compile.c
diff options
context:
space:
mode:
authorThomas Wouters <thomas@python.org>2000-08-19 20:55:02 +0000
committerThomas Wouters <thomas@python.org>2000-08-19 20:55:02 +0000
commit8bad61288186aab93b8aaf6b229c07211e1c77d7 (patch)
tree2c03c8261f7a1b91c433f20245638154b0629879 /Python/compile.c
parent15446d344d2bda98bf8fd7d0244081a9d4bb7c8f (diff)
downloadcpython-git-8bad61288186aab93b8aaf6b229c07211e1c77d7.tar.gz
Disallow "import mod.submod as m", because the result is ambiguous. Does it
load mod.submod as m, or mod as m ? Both can be achieved differently, and unambiguously. Also attempt to document this restriction (editor appreciated!) Note that this is an artificial check during compile, because incorporating this in the grammar is hard, and then adjusting the compiler to do the right thing with the right nodes is harder.
Diffstat (limited to 'Python/compile.c')
-rw-r--r--Python/compile.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/Python/compile.c b/Python/compile.c
index 47445d0679..73167909ba 100644
--- a/Python/compile.c
+++ b/Python/compile.c
@@ -2139,7 +2139,8 @@ com_import_stmt(struct compiling *c, node *n)
com_addopname(c, IMPORT_NAME, CHILD(subn, 0));
com_push(c, 1);
if (NCH(subn) > 1) {
- if (strcmp(STR(CHILD(subn, 1)), "as") != 0) {
+ if (strcmp(STR(CHILD(subn, 1)), "as") != 0 ||
+ NCH(CHILD(subn, 0)) > 1) {
com_error(c, PyExc_SyntaxError,
"invalid syntax");
return;