[case testPEP696TypeAlias]
type A[T = int] = C[T]
[out]
MypyFile:1(
  TypeAliasStmt:1(
    NameExpr(A)
    TypeParam(
      T
      Default(
        int?))
    LambdaExpr:1(
      Block:-1(
        ReturnStmt:1(
          IndexExpr:1(
            NameExpr(C)
            NameExpr(T)))))))

[case testPEP696GenericFunction]
def f[T = int](): pass
class C[T = int]: pass
[out]
MypyFile:1(
  FuncDef:1(
    f
    TypeParam(
      T
      Default(
        int?))
    Block:1(
      PassStmt:1()))
  ClassDef:2(
    C
    TypeParam(
      T
      Default(
        int?))
    PassStmt:2()))

[case testPEP696ParamSpec]
def f[**P = [int, str]](): pass
class C[**P = [int, str]]: pass
[out]
[out]
MypyFile:1(
  FuncDef:1(
    f
    TypeParam(
      **P
      Default(
        <TypeList int?, str?>))
    Block:1(
      PassStmt:1()))
  ClassDef:2(
    C
    TypeParam(
      **P
      Default(
        <TypeList int?, str?>))
    PassStmt:2()))

[case testPEP696TypeVarTuple]
def f[*Ts = *tuple[str, int]](): pass
class C[*Ts = *tuple[str, int]]: pass
[out]
MypyFile:1(
  FuncDef:1(
    f
    TypeParam(
      *Ts
      Default(
        *tuple?[str?, int?]))
    Block:1(
      PassStmt:1()))
  ClassDef:2(
    C
    TypeParam(
      *Ts
      Default(
        *tuple?[str?, int?]))
    PassStmt:2()))
