Exemple #1
0
        /// <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);
            }
        }
Exemple #2
0
        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);
        }