/// <summary> /// Compares two arguments. /// </summary> /// <param name="argument1">The first argument.</param> /// <param name="argument2">The second argument.</param> private static bool IsArgumentEqual(IArgument argument1, IArgument argument2) { bool Result = false; bool IsHandled = false; if (argument1 is IPositionalArgument AsPositionalArgument1) { if (argument2 is IAssignmentArgument AsAssignmentArgument2) { IsHandled = true; } else if (argument2 is IPositionalArgument AsPositionalArgument2) { Result = PositionalArgument.IsPositionalArgumentEqual(AsPositionalArgument1, AsPositionalArgument2); IsHandled = true; } } else if (argument1 is IAssignmentArgument AsAssignmentArgument1) { if (argument2 is IPositionalArgument AsPositionalArgument2) { IsHandled = true; } else if (argument2 is IAssignmentArgument AsAssignmentArgument2) { Result = AssignmentArgument.IsAssignmentArgumentEqual(AsAssignmentArgument1, AsAssignmentArgument2); IsHandled = true; } } Debug.Assert(IsHandled); return(Result); }
/// <summary> /// Compares two expressions. /// </summary> /// <param name="other">The other expression.</param> protected bool IsExpressionEqual(IInitializedObjectExpression other) { Debug.Assert(other != null); bool Result = true; Result &= AssignmentList.Count == other.AssignmentList.Count; for (int i = 0; i < AssignmentList.Count && i < other.AssignmentList.Count; i++) { IAssignmentArgument InitializationAssignment1 = AssignmentList[i]; IAssignmentArgument InitializationAssignment2 = other.AssignmentList[i]; Result &= AssignmentArgument.IsAssignmentArgumentEqual(InitializationAssignment1, InitializationAssignment2); } return(Result); }