Esempio n. 1
0
 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
Esempio n. 2
0
 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
Esempio n. 3
0
 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))
Esempio n. 4
0
 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