Skip to content

Commit 9065f79

Browse files
committed
Added error test case for overloaded custom __init__
1 parent 34e831b commit 9065f79

File tree

1 file changed

+10
-21
lines changed

1 file changed

+10
-21
lines changed

test-data/unit/check-plugin-attrs.test

Lines changed: 10 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -2498,43 +2498,32 @@ reveal_type(c.run_type) # N: Revealed type is "Union[builtins.int, None]"
24982498
[builtins fixtures/plugin_attrs.pyi]
24992499

25002500
[case testAttrsInitOverload1]
2501-
from typing import Union
2501+
# flags: --python-version 3.10
25022502
from typing import overload
25032503

25042504
import attrs
25052505

25062506
@attrs.frozen(init=False)
25072507
class C:
2508-
x: Union[int, str]
2508+
x: "int | str"
2509+
25092510
@overload
25102511
def __init__(self, x: int) -> None: ...
25112512

25122513
@overload
25132514
def __init__(self, x: str) -> None: ...
25142515

2515-
def __init__(self, x: Union[int, str]) -> None:
2516+
def __init__(self, x: "int | str") -> None:
25162517
self.__attrs_init__(x)
25172518

2519+
25182520
obj = C(1)
2519-
attrs.evolve(obj, x=2)
2521+
attrs.evolve(obj, x=2) # E: Argument 1 to "evolve" has incompatible type "C"; expected an attrs class
2522+
attrs.evolve(obj, x="2") # E: Argument 1 to "evolve" has incompatible type "C"; expected an attrs class
25202523
[builtins fixtures/plugin_attrs.pyi]
25212524

25222525
[case testAttrsInitOverload2]
2523-
from typing import Union
2524-
import attrs
2525-
2526-
@attrs.frozen(init=False)
2527-
class C:
2528-
x: Union[int, str]
2529-
2530-
def __init__(self, x: Union[int, str], y: bool) -> None:
2531-
self.__attrs_init__(x)
2532-
2533-
obj = C(1, False)
2534-
attrs.evolve(obj, x=2)
2535-
[builtins fixtures/plugin_attrs.pyi]
2536-
2537-
[case testAttrsInitOverload3]
2526+
# flags: --python-version 3.10
25382527
from typing import overload
25392528

25402529
import attrs
@@ -2553,5 +2542,5 @@ class C:
25532542
self.__attrs_init__(x)
25542543

25552544
obj = C(1)
2556-
attrs.evolve(obj, x=2)
2557-
[builtins fixtures/plugin_attrs.pyi]
2545+
attrs.evolve(obj, x=2) # E: Argument 1 to "evolve" has incompatible type "C"; expected an attrs class
2546+
[builtins fixtures/plugin_attrs.pyi]

0 commit comments

Comments
 (0)