Skip to content

Commit

Permalink
Do not report using indirectly deprecated aliases.
Browse files Browse the repository at this point in the history
  • Loading branch information
tyralla committed Oct 11, 2024
1 parent 90039d8 commit 98fea8c
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 12 deletions.
8 changes: 0 additions & 8 deletions mypy/checker.py
Original file line number Diff line number Diff line change
Expand Up @@ -293,19 +293,11 @@ class InstanceDeprecatedVisitor(TypeTraverserVisitor):
def __init__(self, typechecker: TypeChecker, context: Context) -> None:
self.typechecker = typechecker
self.context = context
self.seen_aliases: set[TypeAliasType] = set()

def visit_instance(self, t: Instance) -> None:
super().visit_instance(t)
self.typechecker.check_deprecated(t.type, self.context)

def visit_type_alias_type(self, t: TypeAliasType) -> None:
super().visit_type_alias_type(t)
if t not in self.seen_aliases:
self.seen_aliases.add(t)
if ((alias := t.alias) is not None) and ((target := alias.target) is not None):
target.accept(self)


class TypeChecker(NodeVisitor[None], CheckerPluginInterface):
"""Mypy type checker.
Expand Down
10 changes: 6 additions & 4 deletions test-data/unit/check-deprecated.test
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ def h() -> None: ...
[case testDeprecatedClass]

from typing import Callable, List, Optional, Tuple, Union
from typing_extensions import deprecated, TypeAlias
from typing_extensions import deprecated, TypeAlias, TypeVar

@deprecated("use C2 instead")
class C: ...
Expand Down Expand Up @@ -141,11 +141,13 @@ x8: List[Optional[Tuple[Union[List[C], int]]]] # N: class __main__.C is depreca
x9: Callable[[int], C] # N: class __main__.C is deprecated: use C2 instead
x10: Callable[[int, C, int], int] # N: class __main__.C is deprecated: use C2 instead

T = TypeVar("T")
A1: TypeAlias = Optional[C] # ToDo
x11: A1 # N: class __main__.C is deprecated: use C2 instead

x11: A1
A2: TypeAlias = List[Union[A2, C]] # ToDo
x12: A2 # N: class __main__.C is deprecated: use C2 instead
x12: A2
A3: TypeAlias = List[Optional[T]]
x13: A3[C] # N: class __main__.C is deprecated: use C2 instead

[builtins fixtures/tuple.pyi]

Expand Down

0 comments on commit 98fea8c

Please sign in to comment.