functionDefinition method

Parser<StatementNode> functionDefinition()
inherited

Implementation

Parser<StatementNode> functionDefinition() =>
    seq2(
      ref0(decorators).optional(),
      [ref0(syncFunctionDef), ref0(asyncFunctionDef)].toChoiceParser(),
    ).map2((decs, fn) {
      if (decs == null || decs.isEmpty) return fn;
      if (fn is FunctionDefNode) {
        return FunctionDefNode(
          name: fn.name,
          args: fn.args,
          body: fn.body,
          decoratorList: decs,
          returns: fn.returns,
          typeParams: fn.typeParams,
        );
      } else if (fn is AsyncFunctionDefNode) {
        return AsyncFunctionDefNode(
          name: fn.name,
          args: fn.args,
          body: fn.body,
          decoratorList: decs,
          returns: fn.returns,
          typeParams: fn.typeParams,
        );
      }
      return fn;
    });