@@ -315,18 +315,51 @@ class E: ...
315315[builtins fixtures/tuple.pyi]
316316
317317
318- [case testDeprecatedClassInitMethod ]
318+ [case testDeprecatedClassConstructor ]
319319# flags: --enable-error-code=deprecated
320320
321321from typing_extensions import deprecated
322322
323- @deprecated("use C2 instead")
324323class C:
324+ @deprecated("call `make_c()` instead")
325325 def __init__(self) -> None: ...
326+ @classmethod
327+ def make_c(cls) -> C: ...
326328
327- c: C # E: class __main__.C is deprecated: use C2 instead
328- C() # E: class __main__.C is deprecated: use C2 instead
329- C.__init__(c) # E: class __main__.C is deprecated: use C2 instead
329+ C() # E: function __main__.C.__init__ is deprecated: call `make_c()` instead
330+
331+ class D:
332+ @deprecated("call `make_d()` instead")
333+ def __new__(cls) -> D: ...
334+ @classmethod
335+ def make_d(cls) -> D: ...
336+
337+ D() # E: function __main__.D.__new__ is deprecated: call `make_d()` instead
338+
339+ [builtins fixtures/tuple.pyi]
340+
341+
342+ [case testDeprecatedSuperClassConstructor]
343+ # flags: --enable-error-code=deprecated
344+
345+ from typing_extensions import deprecated, Self
346+
347+ class A:
348+ @deprecated("call `self.initialise()` instead")
349+ def __init__(self) -> None: ...
350+ def initialise(self) -> None: ...
351+
352+ class B(A):
353+ def __init__(self) -> None:
354+ super().__init__() # E: function __main__.A.__init__ is deprecated: call `self.initialise()` instead
355+
356+ class C:
357+ @deprecated("call `object.__new__(cls)` instead")
358+ def __new__(cls) -> Self: ...
359+
360+ class D(C):
361+ def __new__(cls) -> Self:
362+ return super().__new__(cls) # E: function __main__.C.__new__ is deprecated: call `object.__new__(cls)` instead
330363
331364[builtins fixtures/tuple.pyi]
332365
0 commit comments