computeArguments method

List computeArguments(
  1. List<Node> args, {
  2. bool resolveNames = false,
})

Implementation

List computeArguments(List<Node> args, {bool resolveNames = false}) {
  List l = [];
  for (Node node in args) {
    if (resolveNames) {
      if (node is Expression) {
        if (node is SpreadExpression) {
          dynamic spreadValue = getValueFromExpression(node.argument);
          if (spreadValue is List) {
            l.addAll(spreadValue);
            continue;
          }
          throw JSException(node.line ?? 1,
              'Spread in function calls requires a list value.');
        }
        dynamic v = getValueFromExpression(node);
        if (v is JavascriptFunction) {
          l.add(v._onCall);
        } else {
          l.add(v);
        }
      } else if (node is Name) {
        l.add(getValue(node));
      }
    } else {
      l.add(node.visitBy(this));
    }
  }
  return l;
}