[case testPEP695TypeParameterDefaultSupported]
class C[T = None]: ...
def f[T = list[int]]() -> None: ...
def g[**P = [int, str]]() -> None: ...
type A[T, S = int, U = str] = list[T]

[case testPEP695TypeParameterDefaultBasic]
from typing import Callable

def f1[T1 = int](a: T1) -> list[T1]: ...
reveal_type(f1)  # N: Revealed type is "def [T1 = builtins.int] (a: T1`-1 = builtins.int) -> builtins.list[T1`-1 = builtins.int]"

def f2[**P1 = [int, str]](a: Callable[P1, None]) -> Callable[P1, None]: ...
reveal_type(f2)  # N: Revealed type is "def [P1 = [builtins.int, builtins.str]] (a: def (*P1.args, **P1.kwargs)) -> def (*P1.args, **P1.kwargs)"

def f3[*Ts1 = *tuple[int, str]](a: tuple[*Ts1]) -> tuple[*Ts1]: ...
reveal_type(f3)  # N: Revealed type is "def [Ts1 = Unpack[tuple[builtins.int, builtins.str]]] (a: tuple[Unpack[Ts1`-1 = Unpack[tuple[builtins.int, builtins.str]]]]) -> tuple[Unpack[Ts1`-1 = Unpack[tuple[builtins.int, builtins.str]]]]"


class ClassA1[T1 = int]: ...
class ClassA2[**P1 = [int, str]]: ...
class ClassA3[*Ts1 = *tuple[int, str]]: ...

reveal_type(ClassA1)  # N: Revealed type is "def [T1 = builtins.int] () -> __main__.ClassA1[T1`1 = builtins.int]"
reveal_type(ClassA2)  # N: Revealed type is "def [P1 = [builtins.int, builtins.str]] () -> __main__.ClassA2[P1`1 = [builtins.int, builtins.str]]"
reveal_type(ClassA3)  # N: Revealed type is "def [Ts1 = Unpack[tuple[builtins.int, builtins.str]]] () -> __main__.ClassA3[Unpack[Ts1`1 = Unpack[tuple[builtins.int, builtins.str]]]]"
[builtins fixtures/tuple.pyi]

[case testPEP695TypeParameterDefaultValid]
from typing import Any

class ClassT1[T = int]: ...
class ClassT2[T: float = int]: ...
class ClassT3[T: list[Any] = list[int]]: ...
class ClassT4[T: (int, str) = int]: ...

class ClassP1[**P = []]: ...
class ClassP2[**P = ...]: ...
class ClassP3[**P = [int, str]]: ...

class ClassTs1[*Ts = *tuple[int]]: ...
class ClassTs2[*Ts = *tuple[int, ...]]: ...
[builtins fixtures/tuple.pyi]

[case testPEP695TypeParameterDefaultInvalid]
class ClassT1[T = 2]: ...  # E: TypeVar "default" must be a type
class ClassT2[T = [int]]: ...  # E: Bracketed expression "[...]" is not valid as a type \
                               # N: Did you mean "List[...]"? \
                               # E: TypeVar "default" must be a type
class ClassT3[T: str = int]: ...               # E: TypeVar default must be a subtype of the bound type
class ClassT4[T: list[str] = list[int]]: ...   # E: TypeVar default must be a subtype of the bound type
class ClassT5[T: (int, str) = bytes]: ...      # E: TypeVar default must be one of the constraint types
class ClassT6[T: (int, str) = int | str]: ...  # E: TypeVar default must be one of the constraint types
class ClassT7[T: (float, str) = int]: ...      # E: TypeVar default must be one of the constraint types

class ClassP1[**P = int]: ...       # E: The default argument to ParamSpec must be a list expression, ellipsis, or a ParamSpec
class ClassP2[**P = 2]: ...         # E: The default argument to ParamSpec must be a list expression, ellipsis, or a ParamSpec
class ClassP3[**P = (2, int)]: ...  # E: The default argument to ParamSpec must be a list expression, ellipsis, or a ParamSpec
class ClassP4[**P = [2, int]]: ...  # E: Argument 0 of ParamSpec default must be a type

class ClassTs1[*Ts = 2]: ...           # E: The default argument to TypeVarTuple must be an Unpacked tuple
class ClassTs2[*Ts = int]: ...         # E: The default argument to TypeVarTuple must be an Unpacked tuple
class ClassTs3[*Ts = tuple[int]]: ...  # E: The default argument to TypeVarTuple must be an Unpacked tuple
[builtins fixtures/tuple.pyi]

[case testPEP695TypeParameterDefaultInvalid2]
from typing import overload
def f1[T = 2]() -> None: ...  # E: TypeVar "default" must be a type
def f2[T = [int]]() -> None: ...  # E: Bracketed expression "[...]" is not valid as a type \
                                  # N: Did you mean "List[...]"? \
                                  # E: TypeVar "default" must be a type
def f3[T: str = int](x: T) -> T: ...               # E: TypeVar default must be a subtype of the bound type
def f4[T: list[str] = list[int]](x: T) -> T: ...   # E: TypeVar default must be a subtype of the bound type
def f5[T: (int, str) = bytes](x: T) -> T: ...      # E: TypeVar default must be one of the constraint types
def f6[T: (int, str) = int | str](x: T) -> T: ...  # E: TypeVar default must be one of the constraint types
def f7[T: (float, str) = int](x: T) -> T: ...      # E: TypeVar default must be one of the constraint types
def f8[T: str = int]() -> None: ...                # TODO check unused TypeVars
@overload
def f9[T: str = int](x: T) -> T: ...               # E: TypeVar default must be a subtype of the bound type
@overload
def f9[T: (int, str) = bytes](x: T) -> T: ...      # E: TypeVar default must be one of the constraint types
def f9() -> None: ...  # type: ignore[misc]

def g1[**P = int]() -> None: ...       # E: The default argument to ParamSpec must be a list expression, ellipsis, or a ParamSpec
def g2[**P = 2]() -> None: ...         # E: The default argument to ParamSpec must be a list expression, ellipsis, or a ParamSpec
def g3[**P = (2, int)]() -> None: ...  # E: The default argument to ParamSpec must be a list expression, ellipsis, or a ParamSpec
def g4[**P = [2, int]]() -> None: ...  # E: Argument 0 of ParamSpec default must be a type

def h1[*Ts = 2]() -> None: ...           # E: The default argument to TypeVarTuple must be an Unpacked tuple
def h2[*Ts = int]() -> None: ...         # E: The default argument to TypeVarTuple must be an Unpacked tuple
def h3[*Ts = tuple[int]]() -> None: ...  # E: The default argument to TypeVarTuple must be an Unpacked tuple
[builtins fixtures/tuple.pyi]

[case testPEP695TypeParameterDefaultInvalid3]
from typing import Callable

type TA1[T: str = 1] = list[T]  # E: TypeVar "default" must be a type
type TA2[T: str = [int]] = list[T]  # E: Bracketed expression "[...]" is not valid as a type \
                                    # N: Did you mean "List[...]"? \
                                    # E: TypeVar "default" must be a type
type TA3[T: str = int] = list[T]               # E: TypeVar default must be a subtype of the bound type
type TA4[T: list[str] = list[int]] = list[T]   # E: TypeVar default must be a subtype of the bound type
type TA5[T: (int, str) = bytes] = list[T]      # E: TypeVar default must be one of the constraint types
type TA6[T: (int, str) = int | str] = list[T]  # E: TypeVar default must be one of the constraint types
type TA7[T: (float, str) = int] = list[T]      # E: TypeVar default must be one of the constraint types

type TB1[**P = int] = Callable[P, None]       # E: The default argument to ParamSpec must be a list expression, ellipsis, or a ParamSpec
type TB2[**P = 2] = Callable[P, None]         # E: The default argument to ParamSpec must be a list expression, ellipsis, or a ParamSpec
type TB3[**P = (2, int)] = Callable[P, None]  # E: The default argument to ParamSpec must be a list expression, ellipsis, or a ParamSpec
type TB4[**P = [2, int]] = Callable[P, None]  # E: Argument 0 of ParamSpec default must be a type

type TC1[*Ts = 2] = tuple[*Ts]           # E: The default argument to TypeVarTuple must be an Unpacked tuple
type TC2[*Ts = int] = tuple[*Ts]         # E: The default argument to TypeVarTuple must be an Unpacked tuple
type TC3[*Ts = tuple[int]] = tuple[*Ts]  # E: The default argument to TypeVarTuple must be an Unpacked tuple
[builtins fixtures/tuple.pyi]
[typing fixtures/typing-full.pyi]

[case testPEP695TypeParameterDefaultFunctions]
from typing import Callable

def callback1(x: str) -> None: ...

def func_a1[T = str](x: int | T) -> T: ...
reveal_type(func_a1(2))  # N: Revealed type is "builtins.str"
reveal_type(func_a1(2.1))  # N: Revealed type is "builtins.float"

def func_a2[T = str](x: int | T) -> list[T]: ...
reveal_type(func_a2(2))  # N: Revealed type is "builtins.list[builtins.str]"
reveal_type(func_a2(2.1))  # N: Revealed type is "builtins.list[builtins.float]"


def func_a3[T: str = str](x: int | T) -> T: ...
reveal_type(func_a3(2))  # N: Revealed type is "builtins.str"

def func_a4[T: (bytes, str) = str](x: int | T) -> T: ...
reveal_type(func_a4(2))  # N: Revealed type is "builtins.str"

def func_b1[**P = [int, str]](x: int | Callable[P, None]) -> Callable[P, None]: ...
reveal_type(func_b1(callback1))  # N: Revealed type is "def (x: builtins.str)"
reveal_type(func_b1(2))  # N: Revealed type is "def (builtins.int, builtins.str)"

def func_c1[*Ts = *tuple[int, str]](x: int | Callable[[*Ts], None]) -> tuple[*Ts]: ...
reveal_type(func_c1(callback1))  # N: Revealed type is "tuple[builtins.str]"
reveal_type(func_c1(2))  # N: Revealed type is "tuple[builtins.int, builtins.str]"
[builtins fixtures/tuple.pyi]

[case testPEP695TypeParameterDefaultClass1]
# flags: --disallow-any-generics

class ClassA1[T2 = int, T3 = str]: ...

def func_a1(
    a: ClassA1,
    b: ClassA1[float],
    c: ClassA1[float, float],
    d: ClassA1[float, float, float],  # E: "ClassA1" expects between 0 and 2 type arguments, but 3 given
) -> None:
    reveal_type(a)  # N: Revealed type is "__main__.ClassA1[builtins.int, builtins.str]"
    reveal_type(b)  # N: Revealed type is "__main__.ClassA1[builtins.float, builtins.str]"
    reveal_type(c)  # N: Revealed type is "__main__.ClassA1[builtins.float, builtins.float]"
    reveal_type(d)  # N: Revealed type is "__main__.ClassA1[builtins.int, builtins.str]"
[builtins fixtures/tuple.pyi]

[case testPEP695TypeParameterDefaultClass2]
# flags: --disallow-any-generics

class ClassB1[**P2 = [int, str], **P3 = ...]: ...

def func_b1(
    a: ClassB1,
    b: ClassB1[[float]],
    c: ClassB1[[float], [float]],
    d: ClassB1[[float], [float], [float]],  # E: "ClassB1" expects between 0 and 2 type arguments, but 3 given
) -> None:
    reveal_type(a)  # N: Revealed type is "__main__.ClassB1[[builtins.int, builtins.str], ...]"
    reveal_type(b)  # N: Revealed type is "__main__.ClassB1[[builtins.float], ...]"
    reveal_type(c)  # N: Revealed type is "__main__.ClassB1[[builtins.float], [builtins.float]]"
    reveal_type(d)  # N: Revealed type is "__main__.ClassB1[[builtins.int, builtins.str], ...]"

    k = ClassB1()
    reveal_type(k)  # N: Revealed type is "__main__.ClassB1[[builtins.int, builtins.str], [*Any, **Any]]"
    l = ClassB1[[float]]()
    reveal_type(l)  # N: Revealed type is "__main__.ClassB1[[builtins.float], [*Any, **Any]]"
    m = ClassB1[[float], [float]]()
    reveal_type(m)  # N: Revealed type is "__main__.ClassB1[[builtins.float], [builtins.float]]"
    n = ClassB1[[float], [float], [float]]()  # E: Type application has too many types (expected between 0 and 2)
    reveal_type(n)  # N: Revealed type is "Any"

[case testPEP695TypeParameterDefaultClass3]
# flags: --disallow-any-generics

class ClassC1[*Ts = *tuple[int, str]]: ...

def func_c1(
    a: ClassC1,
    b: ClassC1[float],
) -> None:
    reveal_type(a)  # N: Revealed type is "__main__.ClassC1[builtins.int, builtins.str]"
    reveal_type(b)  # N: Revealed type is "__main__.ClassC1[builtins.float]"

    k = ClassC1()
    reveal_type(k)  # N: Revealed type is "__main__.ClassC1[builtins.int, builtins.str]"
    l = ClassC1[float]()
    reveal_type(l)  # N: Revealed type is "__main__.ClassC1[builtins.float]"
[builtins fixtures/tuple.pyi]

[case testPEP695TypeParameterDefaultTypeAlias1]
# flags: --disallow-any-generics

type TA1[T2 = int, T3 = str] = dict[T2, T3]

def func_a1(
    a: TA1,
    b: TA1[float],
    c: TA1[float, float],
    d: TA1[float, float, float],  # E: Bad number of arguments for type alias, expected between 0 and 2, given 3
) -> None:
    reveal_type(a)  # N: Revealed type is "builtins.dict[builtins.int, builtins.str]"
    reveal_type(b)  # N: Revealed type is "builtins.dict[builtins.float, builtins.str]"
    reveal_type(c)  # N: Revealed type is "builtins.dict[builtins.float, builtins.float]"
    reveal_type(d)  # N: Revealed type is "builtins.dict[builtins.int, builtins.str]"
[builtins fixtures/dict.pyi]
[typing fixtures/typing-full.pyi]

[case testPEP695TypeParameterDefaultTypeAlias2]
# flags: --disallow-any-generics

class ClassB1[**P2, **P3]: ...
type TB1[**P2 = [int, str], **P3 = ...] = ClassB1[P2, P3]

def func_b1(
    a: TB1,
    b: TB1[[float]],
    c: TB1[[float], [float]],
    d: TB1[[float], [float], [float]],  # E: Bad number of arguments for type alias, expected between 0 and 2, given 3
) -> None:
    reveal_type(a)  # N: Revealed type is "__main__.ClassB1[[builtins.int, builtins.str], [*Any, **Any]]"
    reveal_type(b)  # N: Revealed type is "__main__.ClassB1[[builtins.float], [*Any, **Any]]"
    reveal_type(c)  # N: Revealed type is "__main__.ClassB1[[builtins.float], [builtins.float]]"
    reveal_type(d)  # N: Revealed type is "__main__.ClassB1[[builtins.int, builtins.str], [*Any, **Any]]"
[builtins fixtures/tuple.pyi]
[typing fixtures/typing-full.pyi]

[case testPEP695TypeParameterDefaultTypeAlias3]
# flags: --disallow-any-generics

type TC1[*Ts = *tuple[int, str]] = tuple[*Ts]

def func_c1(
    a: TC1,
    b: TC1[float],
) -> None:
    reveal_type(a)  # N: Revealed type is "tuple[builtins.int, builtins.str]"
    reveal_type(b)  # N: Revealed type is "tuple[builtins.float]"

[builtins fixtures/tuple.pyi]
[typing fixtures/typing-full.pyi]

[case testPEP695TypeParameterDefaultTypeAlias4]
# flags: --disallow-any-generics
class A[L = int, M = str]: ...
TD1 = A[float]
type TD2 = A[float]

def func_d1(
    a: TD1,
    b: TD1[float],  # E: Bad number of arguments for type alias, expected 0, given 1
    c: TD2,
    d: TD2[float],  # E: Bad number of arguments for type alias, expected 0, given 1
) -> None:
    reveal_type(a)  # N: Revealed type is "__main__.A[builtins.float, builtins.str]"
    reveal_type(b)  # N: Revealed type is "__main__.A[builtins.float, builtins.str]"
    reveal_type(c)  # N: Revealed type is "__main__.A[builtins.float, builtins.str]"
    reveal_type(d)  # N: Revealed type is "__main__.A[builtins.float, builtins.str]"
[builtins fixtures/tuple.pyi]
[typing fixtures/typing-full.pyi]

[case testTypeVarConstraintsDefaultAliasesInline]
type K = int
type V = int

class A1[T: (str, int) = K]:
    x: T
class A2[T: (str, K) = K]:
    x: T
class A3[T: (str, K) = V]:
    x: T

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.int"
[builtins fixtures/tuple.pyi]

[case testTypeVarDefaultToAnotherTypeVarClass]
class A[X, Y = X, Z = Y]:
    x: X
    y: Y
    z: Z

a1: A[int]
reveal_type(a1.x)  # N: Revealed type is "builtins.int"
reveal_type(a1.y)  # N: Revealed type is "builtins.int"
reveal_type(a1.z)  # N: Revealed type is "builtins.int"

a2: A[int, str]
reveal_type(a2.x)  # N: Revealed type is "builtins.int"
reveal_type(a2.y)  # N: Revealed type is "builtins.str"
reveal_type(a2.z)  # N: Revealed type is "builtins.str"

a3: A[int, str, bool]
reveal_type(a3.x)  # N: Revealed type is "builtins.int"
reveal_type(a3.y)  # N: Revealed type is "builtins.str"
reveal_type(a3.z)  # N: Revealed type is "builtins.bool"
[builtins fixtures/tuple.pyi]

[case testTypeVarDefaultToAnotherTypeVarAlias]
type A[X, Y = X, Z = Y] = tuple[X, Y, Z]

a1: A[int]
reveal_type(a1[0])  # N: Revealed type is "builtins.int"
reveal_type(a1[1])  # N: Revealed type is "builtins.int"
reveal_type(a1[2])  # N: Revealed type is "builtins.int"

a2: A[int, str]
reveal_type(a2[0])  # N: Revealed type is "builtins.int"
reveal_type(a2[1])  # N: Revealed type is "builtins.str"
reveal_type(a2[2])  # N: Revealed type is "builtins.str"

a3: A[int, str, bool]
reveal_type(a3[0])  # N: Revealed type is "builtins.int"
reveal_type(a3[1])  # N: Revealed type is "builtins.str"
reveal_type(a3[2])  # N: Revealed type is "builtins.bool"
[builtins fixtures/tuple.pyi]

[case testTypeVarDefaultAssertTypeType]
from typing import assert_type

class NoNonDefaults[T = str, S = int]: ...

assert_type(NoNonDefaults[()], type[NoNonDefaults[str, int]])
assert_type(NoNonDefaults[str], type[NoNonDefaults[str, int]])
assert_type(NoNonDefaults[str, int], type[NoNonDefaults[str, int]])
[builtins fixtures/tuple.pyi]

[case testTypeVarDefaultToAnotherTypeVarWrong]
class A[Y = X, X = int]: ...  # E: Name "X" is not defined

class B[Y = X]: ...  # E: Name "X" is not defined
[builtins fixtures/tuple.pyi]


[case testTernaryOperatorWithTypeVarDefault]
# https://github.com/python/mypy/issues/18817

class Ok[T, E = None]:
    def __init__(self, value: T) -> None:
        self._value = value

class Err[E, T = None]:
    def __init__(self, value: E) -> None:
        self._value = value

type Result[T, E] = Ok[T, E] | Err[E, T]

class Bar[U]:
    def foo(data: U, cond: bool) -> Result[U, str]:
        return Ok(data) if cond else Err("Error")

[case testRecursiveTypeVarDefaultBasicNewStyle]
class C[T: C = C]:
    pass

c: C
reveal_type(c)  # N: Revealed type is "__main__.C[__main__.C[Any]]"

[case testRecursiveTypeVarDefaultMutualNewStyle]
class C[T = D]:
    pass

class D[S = C]:
    pass

c: C
d: D
reveal_type(c)  # N: Revealed type is "__main__.C[__main__.D[Any]]"
reveal_type(d)  # N: Revealed type is "__main__.D[__main__.C[Any]]"

[case testNonRecursiveSimpleTypeVarDefaultNewStyle]
class Child[S = Parent]: ...

class Parent[T = int]: ...

reveal_type(Child())  # N: Revealed type is "__main__.Child[__main__.Parent[builtins.int]]"

[case testNonRecursiveTypeVarDefaultImportCycleClassNewStyle]
import exp
[file exp.pyi]
import ind

class F[T: D = D]:
    x: T

class D(E): ...
class E: ...

[file ind.pyi]
from exp import F

class Ind(F): ...
x: Ind
reveal_type(x.x)  # N: Revealed type is "exp.D"

[case testNonRecursiveTypeVarDefaultImportCycleAliasNewStyle]
import exp
[file exp.pyi]
import ind

type F[T: D = D] = list[T]

class D(E): ...
class E: ...

[file ind.pyi]
from exp import F

type Ind = list[F]
x: Ind
reveal_type(x)  # N: Revealed type is "builtins.list[builtins.list[exp.D]]"

[case testRecursiveTypeVarDefaultClassAndAliasNewStyle]
class Trait[T = Pattern]:
    pass

class Pattern1(Trait):
    pass
class Pattern2(Trait):
    pass

type Pattern = Pattern1 | Pattern2

reveal_type(Trait())  # N: Revealed type is "__main__.Trait[__main__.Pattern1 | __main__.Pattern2]"
[builtins fixtures/tuple.pyi]

[case testRecursiveTypeVarDefaultOnlyAliasNewStyle]
type A[T = A] = list[T]
a: A
reveal_type(a)  # N: Revealed type is "builtins.list[builtins.list[Any]]"
[builtins fixtures/tuple.pyi]

[case testRecursiveAliasTypeVarDefaultNewStyle]
type A[T = A] = int
a: A
reveal_type(a)  # N: Revealed type is "builtins.int"

[case testPEP695VariadicGenericClassEmptyTupleUnpackIndex]
class Blah[*Ts]:
    pass

x: Blah[()]
y: Blah[*tuple[()]]

type Empty = tuple[()]
z: Blah[*Empty]

reveal_type(x)  # N: Revealed type is "__main__.Blah[()]"
reveal_type(y)  # N: Revealed type is "__main__.Blah[()]"
reveal_type(z)  # N: Revealed type is "__main__.Blah[()]"
[builtins fixtures/tuple.pyi]

[case testPEP695VariadicGenericAliasEmptyTupleUnpackIndex]
type Blah[*Ts] = list[tuple[*Ts]]

x: Blah[()]
y: Blah[*tuple[()]]

type Empty = tuple[()]
z: Blah[*Empty]

reveal_type(x)  # N: Revealed type is "builtins.list[tuple[()]]"
reveal_type(y)  # N: Revealed type is "builtins.list[tuple[()]]"
reveal_type(z)  # N: Revealed type is "builtins.list[tuple[()]]"
[builtins fixtures/tuple.pyi]
