File tree Expand file tree Collapse file tree 2 files changed +35
-0
lines changed Expand file tree Collapse file tree 2 files changed +35
-0
lines changed Original file line number Diff line number Diff line change @@ -1679,6 +1679,12 @@ def check_callable_call(
16791679 callable_info : TypeInfo | None = None
16801680 if isinstance (callable_node .node , TypeInfo ):
16811681 callable_info = callable_node .node
1682+ elif (
1683+ isinstance (callable_node .node , TypeAlias )
1684+ and isinstance (callable_node .node .target , Instance )
1685+ and isinstance (callable_node .node .target .type , TypeInfo )
1686+ ):
1687+ callable_info = callable_node .node .target .type
16821688 if callable_info is not None :
16831689 self .chk .check_deprecated (callee .definition , context )
16841690
Original file line number Diff line number Diff line change @@ -370,6 +370,35 @@ class D(C):
370370[builtins fixtures/tuple.pyi]
371371
372372
373+ [case testDeprecatedClassConstructorCalledFromTypeAlias]
374+ # flags: --enable-error-code=deprecated
375+
376+ from typing_extensions import deprecated, TypeAlias
377+
378+ class A:
379+ @deprecated("do not use")
380+ def __init__(self) -> None: ...
381+
382+ class B(A): ...
383+
384+ A_alias = A
385+ A_explicit_alias: TypeAlias = A
386+ B_alias = B
387+ B_explicit_alias: TypeAlias = B
388+
389+ A_alias() # E: function __main__.A.__init__ is deprecated: do not use
390+ A_explicit_alias() # E: function __main__.A.__init__ is deprecated: do not use
391+ B_alias() # E: function __main__.A.__init__ is deprecated: do not use
392+ B_explicit_alias() # E: function __main__.A.__init__ is deprecated: do not use
393+
394+ A_alias
395+ A_explicit_alias
396+ B_alias
397+ B_explicit_alias
398+
399+ [builtins fixtures/tuple.pyi]
400+
401+
373402[case testDeprecatedSpecialMethods]
374403# flags: --enable-error-code=deprecated
375404
You can’t perform that action at this time.
0 commit comments