forElement method

Parser<CollectionElementNode> forElement()
inherited

Implementation

Parser<CollectionElementNode> forElement() =>
    seq5(
      ref0(awaitToken).optional(),
      ref0(forToken),
      ref1(token, '('),
      ref0(forLoopParts),
      seq2(ref1(token, ')'), ref0(collectionElement)),
    ).map5((awaitKw, _, _, parts, closeAndBody) {
      if (parts is ForPartsClassic) {
        return ForElementNode(
          initialization: parts.init,
          condition: parts.condition,
          updates: parts.updates,
          body: closeAndBody.$2,
        );
      } else if (parts is ForPartsIn) {
        return ForInElementNode(
          variable: parts.variable,
          pattern: parts.pattern,
          iterable: parts.iterable,
          body: closeAndBody.$2,
          isAsync: awaitKw != null,
        );
      }
      throw StateError('Invalid for loop parts');
    });