def fieldenums_helper(self): """Generate actual enumerators for the fieldenums list, then clear the fieldenums list.""" newenums = [dha.AttrEnum(dha.PatTuple([dha.genBoundVar(id), dha.genUnboundVar(v)]), dha.SelName(self.getFieldSym(attr, t))) for (id, attr), v, t in self.fieldenums] self.fieldenums = [] return newenums
def visit_PatMatchName(self, node): self.generic_visit(node) id = node.iter info = id.info params = info.enumparams if len(params) > 0: paramtup = du.genDPatTuple([dha.genBoundVar(sym) for sym in params]) newtarget = dha.PatTuple([paramtup, dka.copy(node.target)]) node.target = newtarget else: pass
def visit_AttrEnum(self, node): dka.assertnodetype(node.iter, dha.SelName) ssym = node.iter.id et = dha.Enum if dha.isPosEnum(node) else dha.NegEnum if (isinstance(ssym, MSymbol) or dha.isfixset(ssym)): return et(node.target, ssym) iter = dha.genBoundVar(ssym) target = self.visit(node.target) return et(dha.PatTuple([iter, target]), self.getMemSym(target._t))
def visit_RelEnum(self, node): self.generic_visit(node) id = node.iter if not id.hasflag(dha.FLAG_INV): return info = id.info params = info.enumparams if len(params) > 0: paramtup = du.genDPatTuple([dha.genBoundVar(sym) for sym in params]) newtarget = dha.PatTuple([paramtup, dka.copy(node.target)]) node.target = newtarget else: pass