/// <summary> /// Adds to a list of constant sources from a list of arguments. /// </summary> /// <param name="argumentList">The list of arguments.</param> /// <param name="constantSourceList">The list of constant sources.</param> public static void AddConstantArguments(IList <IArgument> argumentList, ISealableList <IExpression> constantSourceList) { Debug.Assert(argumentList.Count > 0); foreach (IArgument Argument in argumentList) { IExpression ArgumentSource = null; switch (Argument) { case IPositionalArgument AsPositionalArgument: ArgumentSource = (IExpression)AsPositionalArgument.Source; break; case IAssignmentArgument AsAssignmentArgument: ArgumentSource = (IExpression)AsAssignmentArgument.Source; break; } Debug.Assert(ArgumentSource != null); constantSourceList.Add(ArgumentSource); } }
private static bool CheckAssignemntList(IInitializedObjectExpression node, IErrorList errorList, ISealableDictionary <IFeatureName, IFeatureInstance> featureTable, ISealableList <IExpression> constantSourceList, ISealableDictionary <string, ICompiledFeature> assignedFeatureTable) { bool Success = true; IList <IAssignmentArgument> AssignmentList = node.AssignmentList; foreach (IAssignmentArgument AssignmentItem in AssignmentList) { constantSourceList.Add((IExpression)AssignmentItem.Source); IResultType ExpressionResult = AssignmentItem.ResolvedResult.Item; if (ExpressionResult.Count < AssignmentItem.ParameterList.Count) { errorList.AddError(new ErrorInvalidInstruction(AssignmentItem)); Success = false; } foreach (IIdentifier IdentifierItem in AssignmentItem.ParameterList) { Success &= CheckAssignemntIdentifier(errorList, featureTable, assignedFeatureTable, IdentifierItem); } } return(Success); }