@@ -512,6 +512,32 @@ def func_d3(
512512 m = ClassD3[int, float]()
513513 reveal_type(m) # N: Revealed type is "__main__.ClassD3[builtins.int, builtins.float]"
514514
515+ [case testTypeVarDefaultsClassRecursive2]
516+ # flags: --disallow-any-generics
517+ from typing import Generic, ParamSpec
518+
519+ P1 = ParamSpec("P1", default=[int, str])
520+ P2 = ParamSpec("P2", default=P1)
521+ P3 = ParamSpec("P3")
522+
523+ class ClassE1(Generic[P1, P2]): ...
524+
525+ def func_e1(
526+ a: ClassE1,
527+ b: ClassE1[[float]],
528+ c: ClassE1[[float], [str]],
529+ ) -> None:
530+ reveal_type(a) # N: Revealed type is "__main__.ClassE1[[builtins.int, builtins.str], [builtins.int, builtins.str]]"
531+ reveal_type(b) # N: Revealed type is "__main__.ClassE1[[builtins.float], [builtins.float]]"
532+ reveal_type(c) # N: Revealed type is "__main__.ClassE1[[builtins.float], [builtins.str]]"
533+
534+ k = ClassE1()
535+ # reveal_type(k) # Revealed type is "__main__.ClassE1[[builtins.int, builtins.str], [builtins.int, builtins.str]]" # TODO
536+ l = ClassE1[[float]]()
537+ reveal_type(l) # N: Revealed type is "__main__.ClassE1[[builtins.float], [builtins.float]]"
538+ m = ClassE1[[float], [str]]()
539+ reveal_type(m) # N: Revealed type is "__main__.ClassE1[[builtins.float], [builtins.str]]"
540+
515541[case testTypeVarDefaultsClassRecursiveMultipleFiles]
516542# flags: --disallow-any-generics
517543from typing import Generic, TypeVar
0 commit comments