Beispiel #1
0
        /// <summary>
        /// Adds the side effects to stores and returns temporaries (as a flat list) to access them.
        /// </summary>
        private ImmutableArray <BoundExpression> GetAssignmentTargetsAndSideEffects(BoundTupleExpression variables, ArrayBuilder <LocalSymbol> temps, ArrayBuilder <BoundExpression> stores)
        {
            var assignmentTargets = ArrayBuilder <BoundExpression> .GetInstance(variables.Arguments.Length);

            variables.VisitAllElements(
                (variable, args) =>
            {
                if (variable.Kind == BoundKind.DiscardExpression)
                {
                    args.targets.Add(variable);
                }
                else
                {
                    args.targets.Add(args.self.TransformCompoundAssignmentLHS(variable, args.stores, args.temps, isDynamicAssignment: variable.Type.IsDynamic()));
                }
            },
                (temps: temps, stores: stores, targets: assignmentTargets, self: this)
                );

            return(assignmentTargets.ToImmutableAndFree());
        }