@@ -1065,13 +1065,11 @@ def setup_self_type(self) -> None:
10651065 assert self .type is not None
10661066 info = self .type
10671067 if info .self_type is not None :
1068- if has_placeholder (info .self_type .upper_bound ) or has_placeholder (
1069- info .self_type .default
1070- ):
1068+ if has_placeholder (info .self_type .upper_bound ):
10711069 # Similar to regular (user defined) type variables.
10721070 self .process_placeholder (
10731071 None ,
1074- "Self upper bound or default " ,
1072+ "Self upper bound" ,
10751073 info ,
10761074 force_progress = info .self_type .upper_bound != fill_typevars (info ),
10771075 )
@@ -4044,14 +4042,12 @@ def process_typevar_declaration(self, s: AssignmentStmt) -> bool:
40444042 call .analyzed .upper_bound = upper_bound
40454043 call .analyzed .values = values
40464044 call .analyzed .default = default
4047- if (
4048- any (has_placeholder (v ) for v in values )
4049- or has_placeholder (upper_bound )
4050- or has_placeholder (default )
4051- ):
4052- self .process_placeholder (
4053- None , "TypeVar values, upper bound, or default" , s , force_progress = updated
4054- )
4045+ if any (has_placeholder (v ) for v in values ):
4046+ self .process_placeholder (None , "TypeVar values" , s , force_progress = updated )
4047+ elif has_placeholder (upper_bound ):
4048+ self .process_placeholder (None , "TypeVar upper bound" , s , force_progress = updated )
4049+ elif has_placeholder (default ):
4050+ self .process_placeholder (None , "TypeVar default" , s , force_progress = updated )
40554051
40564052 self .add_symbol (name , call .analyzed , s )
40574053 return True
@@ -4227,8 +4223,14 @@ def process_paramspec_declaration(self, s: AssignmentStmt) -> bool:
42274223 )
42284224 paramspec_var .line = call .line
42294225 call .analyzed = paramspec_var
4226+ updated = True
42304227 else :
42314228 assert isinstance (call .analyzed , ParamSpecExpr )
4229+ updated = default != call .analyzed .default
4230+ call .analyzed .default = default
4231+ if has_placeholder (default ):
4232+ self .process_placeholder (None , "ParamSpec default" , s , force_progress = updated )
4233+
42324234 self .add_symbol (name , call .analyzed , s )
42334235 return True
42344236
@@ -4268,8 +4270,14 @@ def process_typevartuple_declaration(self, s: AssignmentStmt) -> bool:
42684270 )
42694271 typevartuple_var .line = call .line
42704272 call .analyzed = typevartuple_var
4273+ updated = True
42714274 else :
42724275 assert isinstance (call .analyzed , TypeVarTupleExpr )
4276+ updated = default != call .analyzed .default
4277+ call .analyzed .default = default
4278+ if has_placeholder (default ):
4279+ self .process_placeholder (None , "TypeVarTuple default" , s , force_progress = updated )
4280+
42734281 self .add_symbol (name , call .analyzed , s )
42744282 return True
42754283
0 commit comments