]> granicus.if.org Git - python/commitdiff
Merged revisions 85562 via svnmerge from
authorBenjamin Peterson <benjamin@python.org>
Sat, 16 Oct 2010 03:49:22 +0000 (03:49 +0000)
committerBenjamin Peterson <benjamin@python.org>
Sat, 16 Oct 2010 03:49:22 +0000 (03:49 +0000)
svn+ssh://pythondev@svn.python.org/python/branches/py3k

........
  r85562 | benjamin.peterson | 2010-10-15 22:45:45 -0500 (Fri, 15 Oct 2010) | 1 line

  don't identify the toplevel namespace by name #9997
........

Lib/test/test_scope.py
Misc/NEWS
Python/symtable.c

index ef56b889f5ac7ff010a1ee5cf7a0834323e239e5..5f8768ac03dfd1575012fcbb206130eb2905ea9f 100644 (file)
@@ -693,6 +693,14 @@ result2 = h()
         h = g()
         self.assertEqual(h(), 3)
 
+    def testTopIsNotSignificant(self):
+        # See #9997.
+        def top(a):
+            pass
+        def b():
+            global a
+
+
 
 def test_main():
     run_unittest(ScopeTests)
index bd9822b0ecce0a60aa8ff64a9dde221fec115c61..95db8ed59fcba963af3c083f77bc3380d89ff284 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -13,6 +13,9 @@ Core and Builtins
 - Issue #10006: type.__abstractmethods__ now raises an AttributeError.  As a
   result metaclasses can now be ABCs (see #9533).
 
+- Issue #9997: Don't let the name "top" have special significance in scope
+  resolution.
+
 - Issue #9930: Remove bogus subtype check that was causing (e.g.)
   float.__rdiv__(2.0, 3) to return NotImplemented instead of the
   expected 1.5.
index 0cbde7d9b483dc021ae9175c344a5d9f2a53f498..ab52abfc63eb670ff42df869d6d19abaa5ff2a15 100644 (file)
@@ -923,7 +923,7 @@ symtable_enter_block(struct symtable *st, identifier name, _Py_block_ty block,
     st->st_cur = ste_new(st, name, block, ast, lineno);
     if (st->st_cur == NULL)
         return 0;
-    if (name == GET_IDENTIFIER(top))
+    if (block == ModuleBlock)
         st->st_global = st->st_cur->ste_symbols;
     if (prev) {
         if (PyList_Append(prev->ste_children,