classDefRaw method

Parser<ClassDefNode> classDefRaw()
inherited

Implementation

Parser<ClassDefNode> classDefRaw() =>
    seq5(
      ref0(classToken),
      ref0(identifier),
      ref0(typeParams).optional(),
      seq3(
        ref1(token, '('),
        ignore(ref0(classArguments).optional()),
        ref1(token, ')'),
      ).map3((_, args, _) => args).optional(),
      seq2(ref1(token, ':'), ref0(suite)).map2((_, s) => s),
    ).map5((_, name, tParams, args, body) {
      final parsedArgs =
          args ?? (bases: <ExpressionNode>[], kw: <KeywordNode>[]);
      return ClassDefNode(
        name: name,
        bases: parsedArgs.bases,
        keywords: parsedArgs.kw,
        body: body,
        typeParams: tParams ?? const [],
      );
    });