protected virtual BoundExpression RewriteCallExpression(BoundCallExpression node) { ImmutableArray <BoundExpression> .Builder builder = null; for (int i = 0; i < node.Arguments.Length; i++) { var oldArgument = node.Arguments[i]; var newArgument = RewriteExpression(oldArgument); if (newArgument != oldArgument) { if (builder == null) { builder = ImmutableArray.CreateBuilder <BoundExpression>(node.Arguments.Length); for (int j = 0; j < i; j++) { builder.Add(node.Arguments[j]); } } } if (builder != null) { builder.Add(newArgument); } } if (builder == null) { return(node); } return(new BoundCallExpression(node.Function, builder.MoveToImmutable())); }
private static void WriteCallExpression(BoundCallExpression node, IndentedTextWriter writer) { writer.WriteIdentifier(node.Function.Name); writer.WritePunctuation(SyntaxKind.OpenParenthesisToken); var isFirst = true; foreach (var argument in node.Arguments) { if (isFirst) { isFirst = false; } else { writer.WritePunctuation(SyntaxKind.CommaToken); writer.WriteSpace(); } argument.WriteTo(writer); } writer.WritePunctuation(SyntaxKind.CloseParenthesisToken); }