mixinDeclaration method

Parser<MixinDeclarationNode> mixinDeclaration()
inherited

Implementation

Parser<MixinDeclarationNode> mixinDeclaration() =>
    seq7(
      ref0(baseToken).optional(),
      ref0(mixinToken),
      ref0(identifier),
      ref0(typeParameters).optionalWith(const <TypeParameterNode>[]),
      (ref0(onToken) & ref0(typeList))
          .map((l) => l[1] as List<TypeNode>)
          .optionalWith(const <TypeNode>[]),
      (ref0(implementsToken) & ref0(typeList))
          .map((l) => l[1] as List<TypeNode>)
          .optionalWith(const <TypeNode>[]),
      [
        ref1(token, ';').map((_) => const <DeclarationNode>[]),
        seq3(
          ref1(token, '{'),
          ref0(classMemberDefinition).star(),
          ref1(token, '}'),
        ).map3((_, members, _) => members),
      ].toChoiceParser(),
    ).map7(
      (base, _, name, typeParams, onTypes, interfaces, members) =>
          MixinDeclarationNode(
            name: name,
            isBase: base != null,
            typeParameters: typeParams,
            onTypes: onTypes,
            interfaces: interfaces,
            members: members,
          ),
    );