[case testPEP695TypeAlias]
# comment
type A[T] = C[T]
[out]
MypyFile:1(
  TypeAliasStmt:2(
    NameExpr(A)
    TypeParam(
      T)
    LambdaExpr:2(
      Block:-1(
        ReturnStmt:2(
          IndexExpr:2(
            NameExpr(C)
            NameExpr(T)))))))

[case testPEP695GenericFunction]
# comment

def f[T](): pass
def g[T: str](): pass
def h[T: (int, str)](): pass
[out]
MypyFile:1(
  FuncDef:3(
    f
    TypeParam(
      T)
    Block:3(
      PassStmt:3()))
  FuncDef:4(
    g
    TypeParam(
      T
      str?)
    Block:4(
      PassStmt:4()))
  FuncDef:5(
    h
    TypeParam(
      T
      Values(
        int?
        str?))
    Block:5(
      PassStmt:5())))

[case testPEP695ParamSpec]
# comment

def f[**P](): pass
class C[T: int, **P]: pass
[out]
MypyFile:1(
  FuncDef:3(
    f
    TypeParam(
      **P)
    Block:3(
      PassStmt:3()))
  ClassDef:4(
    C
    TypeParam(
      T
      int?)
    TypeParam(
      **P)
    PassStmt:4()))

[case testPEP695TypeVarTuple]
# comment

def f[*Ts](): pass
class C[T: int, *Ts]: pass
[out]
MypyFile:1(
  FuncDef:3(
    f
    TypeParam(
      *Ts)
    Block:3(
      PassStmt:3()))
  ClassDef:4(
    C
    TypeParam(
      T
      int?)
    TypeParam(
      *Ts)
    PassStmt:4()))
