typeParamItem method

Parser<TypeParamNode> typeParamItem()
inherited

Implementation

Parser<TypeParamNode> typeParamItem() => [
  seq2(
    ref1(token, '**'),
    ref0(identifier),
  ).map2((_, id) => ParamSpecNode(id)),
  seq2(
    ref1(token, '*'),
    ref0(identifier),
  ).map2((_, id) => TypeVarTupleNode(id)),
  seq3(
    ref0(identifier),
    seq2(
      ref1(token, ':'),
      ref0(singleExpression),
    ).map2((_, e) => e).optional(),
    seq2(
      ref0(assignToken),
      ref0(singleExpression),
    ).map2((_, e) => e).optional(),
  ).map3(
    (name, bound, defVal) =>
        TypeVarParamNode(name, bound: bound, defaultValue: defVal),
  ),
].toChoiceParser();