Skip to content

Commit e5d9c3c

Browse files
committed
Improve process_placeholder
1 parent fd1aeab commit e5d9c3c

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
@@ -1064,13 +1064,11 @@ def setup_self_type(self) -> None:
10641064
assert self.type is not None
10651065
info = self.type
10661066
if info.self_type is not None:
1067-
if has_placeholder(info.self_type.upper_bound) or has_placeholder(
1068-
info.self_type.default
1069-
):
1067+
if has_placeholder(info.self_type.upper_bound):
10701068
# Similar to regular (user defined) type variables.
10711069
self.process_placeholder(
10721070
None,
1073-
"Self upper bound or default",
1071+
"Self upper bound",
10741072
info,
10751073
force_progress=info.self_type.upper_bound != fill_typevars(info),
10761074
)
@@ -4026,14 +4024,12 @@ def process_typevar_declaration(self, s: AssignmentStmt) -> bool:
40264024
call.analyzed.upper_bound = upper_bound
40274025
call.analyzed.values = values
40284026
call.analyzed.default = default
4029-
if (
4030-
any(has_placeholder(v) for v in values)
4031-
or has_placeholder(upper_bound)
4032-
or has_placeholder(default)
4033-
):
4034-
self.process_placeholder(
4035-
None, "TypeVar values, upper bound, or default", s, force_progress=updated
4036-
)
4027+
if any(has_placeholder(v) for v in values):
4028+
self.process_placeholder(None, "TypeVar values", s, force_progress=updated)
4029+
elif has_placeholder(upper_bound):
4030+
self.process_placeholder(None, "TypeVar upper bound", s, force_progress=updated)
4031+
elif has_placeholder(default):
4032+
self.process_placeholder(None, "TypeVar default", s, force_progress=updated)
40374033

40384034
self.add_symbol(name, call.analyzed, s)
40394035
return True
@@ -4209,8 +4205,14 @@ def process_paramspec_declaration(self, s: AssignmentStmt) -> bool:
42094205
)
42104206
paramspec_var.line = call.line
42114207
call.analyzed = paramspec_var
4208+
updated = True
42124209
else:
42134210
assert isinstance(call.analyzed, ParamSpecExpr)
4211+
updated = default != call.analyzed.default
4212+
call.analyzed.default = default
4213+
if has_placeholder(default):
4214+
self.process_placeholder(None, "ParamSpec default", s, force_progress=updated)
4215+
42144216
self.add_symbol(name, call.analyzed, s)
42154217
return True
42164218

@@ -4250,8 +4252,14 @@ def process_typevartuple_declaration(self, s: AssignmentStmt) -> bool:
42504252
)
42514253
typevartuple_var.line = call.line
42524254
call.analyzed = typevartuple_var
4255+
updated = True
42534256
else:
42544257
assert isinstance(call.analyzed, TypeVarTupleExpr)
4258+
updated = default != call.analyzed.default
4259+
call.analyzed.default = default
4260+
if has_placeholder(default):
4261+
self.process_placeholder(None, "TypeVarTuple default", s, force_progress=updated)
4262+
42554263
self.add_symbol(name, call.analyzed, s)
42564264
return True
42574265

0 commit comments

Comments
 (0)