in src/Epam.GraphQL/Helpers/ExpressionPrinter.cs [115:177]
protected override Expression VisitMethodCall(MethodCallExpression methodCallExpression)
{
var thisArg = methodCallExpression.Object;
var isExtension = methodCallExpression.Method.IsExtensionMethod();
var args = (isExtension ? methodCallExpression.Arguments.Skip(1) : methodCallExpression.Arguments).ToArray();
if (isExtension)
{
thisArg = methodCallExpression.Arguments[0];
}
var shouldIndent = false;
if (thisArg != null)
{
if ((_calls.TryPeek(out var storedMethodCall) && storedMethodCall == methodCallExpression)
|| thisArg is MethodCallExpression)
{
shouldIndent = true;
if (thisArg is MethodCallExpression previousMethodCall)
{
_calls.Push(previousMethodCall);
}
}
Visit(thisArg);
if (shouldIndent)
{
Indent();
AppendLine();
if (thisArg is MethodCallExpression)
{
_calls.Pop();
}
}
}
Append(".");
Append(methodCallExpression.Method.Name);
Append("(");
for (var i = 0; i < args.Length; i++)
{
Visit(args[i]);
if (i < args.Length - 1)
{
Append(", ");
}
}
Append(")");
if (shouldIndent)
{
Unindent();
}
return methodCallExpression;
}