[New-bugs-announce] [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 New-bugs-announce mailing list