rqlrewrite.py
branchstable
changeset 5425 7c84e3f370de
parent 5423 e15abfdcce38
child 5426 0d4853a6e5ee
equal deleted inserted replaced
5421:8167de96c523 5425:7c84e3f370de
    52         try:
    52         try:
    53             var = newroot.defined_vars[varname]
    53             var = newroot.defined_vars[varname]
    54         except KeyError:
    54         except KeyError:
    55             continue
    55             continue
    56         stinfo = var.stinfo
    56         stinfo = var.stinfo
    57         if stinfo.get('uidrels'):
    57         if stinfo.get('uidrel') is not None:
    58             continue # eid specified, no need for additional type specification
    58             continue # eid specified, no need for additional type specification
    59         try:
    59         try:
    60             typerels = rqlst.defined_vars[varname].stinfo.get('typerels')
    60             typerel = rqlst.defined_vars[varname].stinfo.get('typerel')
    61         except KeyError:
    61         except KeyError:
    62             assert varname in rqlst.aliases
    62             assert varname in rqlst.aliases
    63             continue
    63             continue
    64         if newroot is rqlst and typerels:
    64         if newroot is rqlst and typerel is not None:
    65             mytyperel = iter(typerels).next()
    65             mytyperel = typerel
    66         else:
    66         else:
    67             for vref in newroot.defined_vars[varname].references():
    67             for vref in newroot.defined_vars[varname].references():
    68                 rel = vref.relation()
    68                 rel = vref.relation()
    69                 if rel and rel.is_types_restriction():
    69                 if rel and rel.is_types_restriction():
    70                     mytyperel = rel
    70                     mytyperel = rel
    91                 rel = var.scope.add_type_restriction(var, possibletypes)
    91                 rel = var.scope.add_type_restriction(var, possibletypes)
    92             else:
    92             else:
    93                 # tree is not annotated yet, no scope set so add the restriction
    93                 # tree is not annotated yet, no scope set so add the restriction
    94                 # to the root
    94                 # to the root
    95                 rel = newroot.add_type_restriction(var, possibletypes)
    95                 rel = newroot.add_type_restriction(var, possibletypes)
    96             stinfo['typerels'] = frozenset((rel,))
    96             stinfo['typerel'] = rel
    97             stinfo['possibletypes'] = possibletypes
    97             stinfo['possibletypes'] = possibletypes
    98 
    98 
    99 
    99 
   100 def remove_solutions(origsolutions, solutions, defined):
   100 def remove_solutions(origsolutions, solutions, defined):
   101     """when a rqlst has been generated from another by introducing security
   101     """when a rqlst has been generated from another by introducing security