diff options
author | Benjamin Peterson <benjamin@python.org> | 2009-06-13 13:06:21 (GMT) |
---|---|---|
committer | Benjamin Peterson <benjamin@python.org> | 2009-06-13 13:06:21 (GMT) |
commit | d1f5a59edb56b64336f07fc88cff6cbebed12dd6 (patch) | |
tree | 4486a70b3c41a35c4adb467c6d9a526bbe887c59 | |
parent | 565e1b6bb724af71f439ec914b34f74e5163fe3d (diff) | |
download | cpython-d1f5a59edb56b64336f07fc88cff6cbebed12dd6.zip cpython-d1f5a59edb56b64336f07fc88cff6cbebed12dd6.tar.gz cpython-d1f5a59edb56b64336f07fc88cff6cbebed12dd6.tar.bz2 |
allow importing from a module named None if it has an 'as' clause
-rw-r--r-- | Lib/test/test_compile.py | 2 | ||||
-rw-r--r-- | Python/ast.c | 10 |
2 files changed, 8 insertions, 4 deletions
diff --git a/Lib/test/test_compile.py b/Lib/test/test_compile.py index 4e15d8c..6ffd64a 100644 --- a/Lib/test/test_compile.py +++ b/Lib/test/test_compile.py @@ -281,6 +281,8 @@ if 1: self.assertRaises(SyntaxError, compile, stmt, 'tmp', 'exec') # This is ok. compile("from None import x", "tmp", "exec") + compile("from x import None as y", "tmp", "exec") + compile("import None as x", "tmp", "exec") def test_import(self): succeed = [ diff --git a/Python/ast.c b/Python/ast.c index 9639350..d259259 100644 --- a/Python/ast.c +++ b/Python/ast.c @@ -2316,8 +2316,10 @@ alias_for_import_name(struct compiling *c, const node *n, int store) if (!str) return NULL; } - if (!forbidden_check(c, name_node, STR(name_node))) - return NULL; + else { + if (!forbidden_check(c, name_node, STR(name_node))) + return NULL; + } name = NEW_IDENTIFIER(name_node); if (!name) return NULL; @@ -2330,11 +2332,11 @@ alias_for_import_name(struct compiling *c, const node *n, int store) } else { node *asname_node = CHILD(n, 2); - alias_ty a = alias_for_import_name(c, CHILD(n, 0), store); + alias_ty a = alias_for_import_name(c, CHILD(n, 0), 0); if (!a) return NULL; assert(!a->asname); - if (store && !forbidden_check(c, asname_node, STR(asname_node))) + if (!forbidden_check(c, asname_node, STR(asname_node))) return NULL; a->asname = NEW_IDENTIFIER(asname_node); if (!a->asname) |