@@ -1842,18 +1842,16 @@ def push_type_args(
18421842 return None
18431843 tvs .append ((p .name , tv ))
18441844
1845- if old_tv := self .is_defined_type_param (p .name ):
1845+ if self .get_defined_type_param (p .name ):
18461846 self .fail (f'"{ p .name } " already defined as a type parameter' , context )
1847- # we rely on the typevar being at self.locals[-1] later, so this needs to happen
1848- self .add_symbol (p .name , old_tv , context , no_progress = True , type_param = True )
18491847 else :
18501848 assert self .add_symbol (
18511849 p .name , tv , context , no_progress = True , type_param = True
18521850 ), "Type parameter should not be discarded"
18531851
18541852 return tvs
18551853
1856- def is_defined_type_param (self , name : str ) -> TypeVarLikeExpr | None :
1854+ def get_defined_type_param (self , name : str ) -> TypeVarLikeExpr | None :
18571855 for names in self .locals :
18581856 if names is None :
18591857 continue
@@ -2274,16 +2272,15 @@ class Foo(Bar, Generic[T]): ...
22742272 has_type_var_tuple = False
22752273 if defn .type_args is not None :
22762274 for p in defn .type_args :
2277- assert self .locals [- 1 ], "expected PEP 695 type vars in locals"
2278- node = self .locals [- 1 ][p .name ]
2275+ node = self .get_defined_type_param (p .name )
22792276 assert node is not None
2280- assert isinstance (node . node , TypeVarLikeExpr )
2281- if isinstance (node . node , TypeVarTupleExpr ):
2277+ assert isinstance (node , TypeVarLikeExpr )
2278+ if isinstance (node , TypeVarTupleExpr ):
22822279 if has_type_var_tuple :
22832280 self .fail ("Can only use one type var tuple in a class def" , context )
22842281 continue
22852282 has_type_var_tuple = True
2286- declared_tvars .append ((p .name , node . node ))
2283+ declared_tvars .append ((p .name , node ))
22872284
22882285 for i , base_expr in enumerate (base_type_exprs ):
22892286 if isinstance (base_expr , StarExpr ):
0 commit comments