defaultFormalParameter method

Parser<ParameterNode> defaultFormalParameter()
inherited

Implementation

Parser<ParameterNode> defaultFormalParameter() =>
    seq2(
      ref0(normalFormalParameter),
      (ref1(token, '=') & ref0(expression))
          .map((l) => l[1] as ExpressionNode)
          .optional(),
    ).map2((param, defaultVal) {
      if (defaultVal != null) {
        if (param is SimpleParameterNode) {
          return SimpleParameterNode(
            name: param.name,
            type: param.type,
            defaultValue: defaultVal,
            metadata: param.metadata,
            isFinal: param.isFinal,
            isVar: param.isVar,
            isThis: param.isThis,
            isSuper: param.isSuper,
          );
        }
        if (param is FunctionTypedParameterNode) {
          return FunctionTypedParameterNode(
            name: param.name,
            type: param.type,
            parameters: param.parameters,
            defaultValue: defaultVal,
            metadata: param.metadata,
          );
        }
      }
      return param;
    });