def replace_alias_tvars(self, tp: Type, vars: List[str], subs: List[Type],
                         newline: int, newcolumn: int) -> Type:
     """Replace type variables in a generic type alias tp with substitutions subs
     resetting context. Length of subs should be already checked.
     """
     typ_args = get_typ_args(tp)
     new_args = typ_args[:]
     for i, arg in enumerate(typ_args):
         tvar = self.get_tvar_name(arg)
         if tvar and tvar in vars:
             # Perform actual substitution...
             new_args[i] = subs[vars.index(tvar)]
         else:
             # ...recursively, if needed.
             new_args[i] = self.replace_alias_tvars(arg, vars, subs, newline, newcolumn)
     return set_typ_args(tp, new_args, newline, newcolumn)
Ejemplo n.º 2
0
 def replace_alias_tvars(self, tp: Type, vars: List[str], subs: List[Type],
                         newline: int, newcolumn: int) -> Type:
     """Replace type variables in a generic type alias tp with substitutions subs
     resetting context. Length of subs should be already checked.
     """
     typ_args = get_typ_args(tp)
     new_args = typ_args[:]
     for i, arg in enumerate(typ_args):
         tvar = self.get_tvar_name(arg)
         if tvar and tvar in vars:
             # Perform actual substitution...
             new_args[i] = subs[vars.index(tvar)]
         else:
             # ...recursively, if needed.
             new_args[i] = self.replace_alias_tvars(arg, vars, subs, newline, newcolumn)
     return set_typ_args(tp, new_args, newline, newcolumn)