classOrCapturePattern method

Parser<PatternNode> classOrCapturePattern()
inherited

Class pattern Point(x, y) or simple capture name.

Implementation

Parser<PatternNode> classOrCapturePattern() =>
    seq2(
      ref0(dottedName),
      seq3(
        ref1(token, '('),
        ignore(ref0(patternArguments).optional()),
        ref1(token, ')'),
      ).map3((_, args, _) => args).optional(),
    ).map2((name, args) {
      if (args == null) {
        if (!name.contains('.')) {
          return MatchAsNode(name: name);
        }
        return MatchValueNode(NameNode(name));
      }
      final parsedArgs = args;
      return MatchClassNode(
        cls: NameNode(name),
        patterns: parsedArgs.pos,
        kwdAttrs: parsedArgs.kwdNames,
        kwdPatterns: parsedArgs.kwdPatterns,
      );
    });