diff --git a/crates/ty_python_semantic/resources/mdtest/generics/legacy/classes.md b/crates/ty_python_semantic/resources/mdtest/generics/legacy/classes.md index ad1fe65958a2a..5e8858bf7b716 100644 --- a/crates/ty_python_semantic/resources/mdtest/generics/legacy/classes.md +++ b/crates/ty_python_semantic/resources/mdtest/generics/legacy/classes.md @@ -379,6 +379,21 @@ C[None](b"bytes") # error: [no-matching-overload] C[None](12) ``` +### Synthesized methods with dataclasses + +```py +from dataclasses import dataclass +from typing import Generic, TypeVar + +T = TypeVar("T") + +@dataclass +class A(Generic[T]): + x: T + +reveal_type(A(x=1)) # revealed: A[int] +``` + ## Generic subclass When a generic subclass fills its superclass's type parameter with one of its own, the actual types diff --git a/crates/ty_python_semantic/resources/mdtest/generics/pep695/classes.md b/crates/ty_python_semantic/resources/mdtest/generics/pep695/classes.md index 1d3fee229bace..9726dbae54225 100644 --- a/crates/ty_python_semantic/resources/mdtest/generics/pep695/classes.md +++ b/crates/ty_python_semantic/resources/mdtest/generics/pep695/classes.md @@ -354,6 +354,18 @@ C[None](b"bytes") # error: [no-matching-overload] C[None](12) ``` +### Synthesized methods with dataclasses + +```py +from dataclasses import dataclass + +@dataclass +class A[T]: + x: T + +reveal_type(A(x=1)) # revealed: A[int] +``` + ## Generic subclass When a generic subclass fills its superclass's type parameter with one of its own, the actual types diff --git a/crates/ty_python_semantic/resources/mdtest/named_tuple.md b/crates/ty_python_semantic/resources/mdtest/named_tuple.md index 8c5a79d62f909..dfc81a73f0e77 100644 --- a/crates/ty_python_semantic/resources/mdtest/named_tuple.md +++ b/crates/ty_python_semantic/resources/mdtest/named_tuple.md @@ -134,9 +134,7 @@ class Property[T](NamedTuple): name: str value: T -# TODO: this should be supported (no error, revealed type of `Property[float]`) -# error: [invalid-argument-type] -reveal_type(Property("height", 3.4)) # revealed: Property[Unknown] +reveal_type(Property("height", 3.4)) # revealed: Property[float] ``` ## Attributes on `NamedTuple` diff --git a/crates/ty_python_semantic/src/types/class.rs b/crates/ty_python_semantic/src/types/class.rs index 94158e653cd48..8056b9ef784ca 100644 --- a/crates/ty_python_semantic/src/types/class.rs +++ b/crates/ty_python_semantic/src/types/class.rs @@ -1372,7 +1372,8 @@ impl<'db> ClassLiteral<'db> { parameters.push(parameter); } - let signature = Signature::new(Parameters::new(parameters), Some(Type::none(db))); + let mut signature = Signature::new(Parameters::new(parameters), Some(Type::none(db))); + signature.inherited_generic_context = self.generic_context(db); Some(CallableType::function_like(db, signature)) };