diff --git a/mypy/plugins/dataclasses.py b/mypy/plugins/dataclasses.py index ee6f8889b894..e916ded01dd2 100644 --- a/mypy/plugins/dataclasses.py +++ b/mypy/plugins/dataclasses.py @@ -410,13 +410,12 @@ def _add_dunder_replace(self, attributes: list[DataclassAttribute]) -> None: for attr in attributes if attr.is_in_init ] - type_vars = [tv for tv in self._cls.type_vars] add_method_to_class( self._api, self._cls, "__replace__", args=args, - return_type=Instance(self._cls.info, type_vars), + return_type=fill_typevars(self._cls.info), ) def _add_internal_replace_method(self, attributes: list[DataclassAttribute]) -> None: diff --git a/test-data/unit/check-python312.test b/test-data/unit/check-python312.test index bfd6334b5077..d275503dc411 100644 --- a/test-data/unit/check-python312.test +++ b/test-data/unit/check-python312.test @@ -2084,3 +2084,14 @@ reveal_type(A1().x) # N: Revealed type is "builtins.int" reveal_type(A2().x) # N: Revealed type is "builtins.int" reveal_type(A3().x) # N: Revealed type is "builtins.list[builtins.int]" [builtins fixtures/tuple.pyi] + +[case testDataclassWithTypeVarTuple] +# flags: --python-version 3.13 +# https://github.com/python/mypy/issues/19559 +from typing import Callable +from dataclasses import dataclass + +@dataclass +class Test[*Ts, R]: + a: Callable[[*Ts], R] +[builtins fixtures/dict.pyi]