Skip to content

Commit 6d94f22

Browse files
committed
Improve process_placeholder
1 parent 3e4dc3d commit 6d94f22

File tree

1 file changed

+20
-12
lines changed

1 file changed

+20
-12
lines changed

mypy/semanal.py

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)