Skip to content

Commit 5feef39

Browse files
committed
Make the change less risky
1 parent 7feaead commit 5feef39

File tree

1 file changed

+6
-9
lines changed

1 file changed

+6
-9
lines changed

mypy/semanal.py

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

Comments
 (0)