private static void AddHashCode()

in src/Epam.GraphQL/Helpers/ExpressionEqualityComparer.cs [28:88]


        private static void AddHashCode(ParameterScope? parameterScope, ref HashCode hashCode, Expression? expression)
        {
            if (expression == null)
            {
                return;
            }

            hashCode.Add(expression.NodeType);
            hashCode.Add(expression.Type);

            switch (expression)
            {
                case BinaryExpression expr:
                    AddHashCode(parameterScope, ref hashCode, expr);
                    break;
                case ConditionalExpression expr:
                    AddHashCode(parameterScope, ref hashCode, expr);
                    break;
                case ConstantExpression expr:
                    AddHashCode(ref hashCode, expr);
                    break;
                case DefaultExpression expr:
                    AddHashCode(ref hashCode, expr);
                    break;
                case LambdaExpression expr:
                    AddHashCode(parameterScope, ref hashCode, expr);
                    break;
                case InvocationExpression expr:
                    AddHashCode(parameterScope, ref hashCode, expr);
                    break;
                case ListInitExpression expr:
                    AddHashCode(parameterScope, ref hashCode, expr);
                    break;
                case MemberExpression expr:
                    AddHashCode(parameterScope, ref hashCode, expr);
                    break;
                case MemberInitExpression expr:
                    AddHashCode(parameterScope, ref hashCode, expr);
                    break;
                case MethodCallExpression expr:
                    AddHashCode(parameterScope, ref hashCode, expr);
                    break;
                case NewArrayExpression expr:
                    AddHashCode(parameterScope, ref hashCode, expr);
                    break;
                case NewExpression expr:
                    AddHashCode(parameterScope, ref hashCode, expr);
                    break;
                case ParameterExpression expr:
                    AddHashCode(parameterScope, ref hashCode, expr);
                    break;
                case TypeBinaryExpression expr:
                    AddHashCode(parameterScope, ref hashCode, expr);
                    break;
                case UnaryExpression expr:
                    AddHashCode(parameterScope, ref hashCode, expr);
                    break;
                default:
                    throw new NotImplementedException($"Unhandled expression node type: {expression.NodeType}");
            }
        }