'All assignments to names go through this function.'

def visit_Name(self, node):

    if (node.ctx == 'store'):
        self.identifiers.declared_locally.add(node.name)
    elif (node.ctx == 'param'):
        self.identifiers.declared_parameter.add(node.name)
    elif ((node.ctx == 'load') and (not self.identifiers.is_declared(node.name, self.hard_scope))):
        self.identifiers.undeclared.add(node.name)
