mixinDeclaration method
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,
),
);