'Analyse the privates for this block and set them in self.privates.
This should be called in a post-order fashion during the
analyse_expressions phase'

def analyse_sharing_attributes(self, env):

    for (entry, (pos, op)) in self.assignments.items():
        if (self.is_prange and (not self.is_parallel)):
            if (entry in self.parent.assignments):
                error(pos, 'Cannot    assign    to    private    of    outer    parallel    block')
                continue
        if ((not self.is_prange) and op):
            error(pos, 'Reductions    not    allowed    for    parallel    blocks')
            continue
        lastprivate = True
        self.propagate_var_privatization(entry, pos, op, lastprivate)
