[issue26255] symtable.Symbol.is_referenced() returns false for valid use
Luke Schubert
report at bugs.python.org
Mon Feb 1 04:57:05 EST 2016
New submission from Luke Schubert:
If the following function is saved in listcomp.py:
def encode(inputLetters):
code = {'C':'D', 'F':'E'}
return set(code[x] for x in inputLetters)
and the following code is used to create a symtable for this function:
import symtable
if __name__ == "__main__":
fileName = 'listcomp.py'
f = open(fileName, 'r')
source = f.read()
table = symtable.symtable(source, fileName, 'exec')
children = table.get_children()
for childTable in children:
symbols = childTable.get_symbols()
for s in symbols:
if (not s.is_referenced()):
print ("Unused symbol '%s' in function '%s'"
% (s.get_name(), childTable.get_name()))
then is_referenced() returns false for the 'code' symbol.
If the following function is saved instead:
def encode2(inputLetters):
code = {'C':'D', 'F':'E'}
return [ code[x] for x in inputLetters ]
then is_referenced() returns true for the 'code' symbol.
Possibly I'm misunderstanding what is_referenced() means, but I thought it should return true in both cases?
----------
messages: 259316
nosy: luke.schubert
priority: normal
severity: normal
status: open
title: symtable.Symbol.is_referenced() returns false for valid use
versions: Python 2.7
_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue26255>
_______________________________________
More information about the Python-bugs-list
mailing list