constructorBodyOrInitializers method

Parser<(List<ConstructorInitializerNode>, FunctionBodyNode?, String?)> constructorBodyOrInitializers()
inherited

Implementation

Parser<(List<ConstructorInitializerNode>, FunctionBodyNode?, String?)>
constructorBodyOrInitializers() => [
  // Redirecting factory constructor: = OtherClass.name; or = OtherClass<T>.name;
  seq3(
    ref1(token, '='),
    seq2(
      ref0(type),
      (ref1(token, '.') & ref0(constructorIdentifier)).optional(),
    ).flatten(),
    ref1(token, ';'),
  ).map3(
    (_, target, _) => (
      const <ConstructorInitializerNode>[],
      const EmptyFunctionBodyNode(),
      target,
    ),
  ),
  // Initializers + body: : super(), a = 1 { ... } or ; or => expr;
  seq2(
    ref0(constructorInitializers)
        .optionalWith(const <ConstructorInitializerNode>[]),
    ref0(methodBody),
  ).map2((inits, body) => (inits, body, null)),
].toChoiceParser();