diff options
author | Benjamin Peterson <benjamin@python.org> | 2010-07-20 22:37:19 (GMT) |
---|---|---|
committer | Benjamin Peterson <benjamin@python.org> | 2010-07-20 22:37:19 (GMT) |
commit | 013783c529cfc459d05d261f5053ad7bf7d88c29 (patch) | |
tree | 14e1b8205a78e85d9ba688f315cf89f82aad3a20 /Python/symtable.c | |
parent | 533a167a713be4a30b92583636cd2323f4c8c3aa (diff) | |
download | cpython-013783c529cfc459d05d261f5053ad7bf7d88c29.zip cpython-013783c529cfc459d05d261f5053ad7bf7d88c29.tar.gz cpython-013783c529cfc459d05d261f5053ad7bf7d88c29.tar.bz2 |
move test_trace.py so as not to conflict with future tests for the trace module
Diffstat (limited to 'Python/symtable.c')
-rw-r--r-- | Python/symtable.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/Python/symtable.c b/Python/symtable.c index 55c9f47..37bdf2a 100644 --- a/Python/symtable.c +++ b/Python/symtable.c @@ -432,7 +432,14 @@ analyze_name(PySTEntryObject *ste, PyObject *scopes, PyObject *name, long flags, return PySet_Add(free, name) >= 0; } if (flags & DEF_BOUND) { - SET_SCOPE(scopes, name, LOCAL); + if (ste->ste_type == ClassBlock && + !(flags & DEF_PARAM) && + bound && PySet_Contains(bound, name)) { + SET_SCOPE(scopes, name, LOCAL_ONLY); + } + else { + SET_SCOPE(scopes, name, LOCAL); + } if (PySet_Add(local, name) < 0) return 0; if (PySet_Discard(global, name) < 0) @@ -489,7 +496,7 @@ analyze_cells(PyObject *scopes, PyObject *free, const char *restricted) long scope; assert(PyLong_Check(v)); scope = PyLong_AS_LONG(v); - if (scope != LOCAL) + if (scope != LOCAL && scope != LOCAL_ONLY) continue; if (!PySet_Contains(free, name)) continue; |