'Force name to be global in scope.
Some child of the current node had a free reference to name.
When the child was processed, it was labelled a free
variable.  Now that all its enclosing scope have been
processed, the name is known to be a global or builtin.  So
walk back down the child chain and set the name to be global
rather than free.
Be careful to stop if a child does not think the name is
free.'

def force_global(self, name):

    self.globals[name] = 1
    if (name in self.frees):
        del self.frees[name]
    for child in self.children:
        if (child.check_name(name) == SC_FREE):
            child.force_global(name)
