extensionDeclaration method

Parser<ExtensionDeclarationNode> extensionDeclaration()
inherited

Implementation

Parser<ExtensionDeclarationNode> extensionDeclaration() =>
    seq6(
      ref0(extensionToken),
      ref0(identifier).where((id) => id != 'on').optional(),
      ref0(typeParameters).optionalWith(const <TypeParameterNode>[]),
      ref0(onToken),
      ref0(type),
      [
        ref1(token, ';').map((_) => const <DeclarationNode>[]),
        seq3(
          ref1(token, '{'),
          ref0(classMemberDefinition).star(),
          ref1(token, '}'),
        ).map3((_, members, _) => members),
      ].toChoiceParser(),
    ).map6(
      (_, name, typeParams, _, onType, members) => ExtensionDeclarationNode(
        name: name,
        typeParameters: typeParams,
        onType: onType,
        members: members,
      ),
    );