parenthesizedOrRecordPattern method

Parser<PatternNode> parenthesizedOrRecordPattern()
inherited

Parenthesized or record pattern (...).

Implementation

Parser<PatternNode> parenthesizedOrRecordPattern() =>
    seq3(
      ref1(token, '('),
      ref0(patternField)
          .plusSeparated(ref1(token, ','))
          .map((l) => l.elements)
          .optionalWith(const <PatternFieldNode>[]),
      seq2(ref1(token, ',').optional(), ref1(token, ')')),
    ).map3((_, fields, commaAndClose) {
      if (fields.length == 1 &&
          fields.first.name == null &&
          commaAndClose.$1 == null) {
        return ParenthesizedPatternNode(fields.first.pattern);
      }
      return RecordPatternNode(fields: fields);
    });