diff options
author | Neal Norwitz <nnorwitz@gmail.com> | 2006-07-08 05:31:37 (GMT) |
---|---|---|
committer | Neal Norwitz <nnorwitz@gmail.com> | 2006-07-08 05:31:37 (GMT) |
commit | fb48afa708d2b5de9d59e6c91e2c063889c41e45 (patch) | |
tree | f1620629f1f2b47ec730d8ea86de9ca9f7776dc1 | |
parent | b6b175229bb8e9c94b104c3037b14e41b7549907 (diff) | |
download | cpython-fb48afa708d2b5de9d59e6c91e2c063889c41e45.zip cpython-fb48afa708d2b5de9d59e6c91e2c063889c41e45.tar.gz cpython-fb48afa708d2b5de9d59e6c91e2c063889c41e45.tar.bz2 |
Fix SF bug #1519018: 'as' is now validated properly in import statements
-rw-r--r-- | Lib/test/test_compile.py | 4 | ||||
-rw-r--r-- | Misc/NEWS | 2 | ||||
-rw-r--r-- | Python/ast.c | 13 |
3 files changed, 18 insertions, 1 deletions
diff --git a/Lib/test/test_compile.py b/Lib/test/test_compile.py index 72c4f7e..814bc19 100644 --- a/Lib/test/test_compile.py +++ b/Lib/test/test_compile.py @@ -238,6 +238,8 @@ if 1: succeed = [ 'import sys', 'import os, sys', + 'import os as bar', + 'import os.path as bar', 'from __future__ import nested_scopes, generators', 'from __future__ import (nested_scopes,\ngenerators)', 'from __future__ import (nested_scopes,\ngenerators,)', @@ -257,6 +259,8 @@ if 1: 'import (sys', 'import sys)', 'import (os,)', + 'import os As bar', + 'import os.path a bar', 'from (sys) import stdin', 'from __future__ import (nested_scopes', 'from __future__ import nested_scopes)', @@ -22,6 +22,8 @@ Core and builtins omit a default "error" argument for NULL pointer. This allows the parser to take a codec from cjkcodecs again. +- Bug #1519018: 'as' is now validated properly in import statements. + Library ------- diff --git a/Python/ast.c b/Python/ast.c index f3e611b..4c78b00 100644 --- a/Python/ast.c +++ b/Python/ast.c @@ -2142,7 +2142,14 @@ alias_for_import_name(struct compiling *c, const node *n) loop: switch (TYPE(n)) { case import_as_name: - str = (NCH(n) == 3) ? NEW_IDENTIFIER(CHILD(n, 2)) : NULL; + str = NULL; + if (NCH(n) == 3) { + if (strcmp(STR(CHILD(n, 1)), "as") != 0) { + ast_error(n, "must use 'as' in import"); + return NULL; + } + str = NEW_IDENTIFIER(CHILD(n, 2)); + } return alias(NEW_IDENTIFIER(CHILD(n, 0)), str, c->c_arena); case dotted_as_name: if (NCH(n) == 1) { @@ -2151,6 +2158,10 @@ alias_for_import_name(struct compiling *c, const node *n) } else { alias_ty a = alias_for_import_name(c, CHILD(n, 0)); + if (strcmp(STR(CHILD(n, 1)), "as") != 0) { + ast_error(n, "must use 'as' in import"); + return NULL; + } assert(!a->asname); a->asname = NEW_IDENTIFIER(CHILD(n, 2)); return a; |