public static Expression ReduceDynamicAssignment(DynamicCSharpArgument left, Func <Expression, Expression> functionalOp, CSharpBinderFlags flags, bool prefix = true)
        {
            var lhs = MakeWriteable(left.Expression);

            return(lhs switch
            {
                GetMemberDynamicCSharpExpression dynamicMember => ReduceDynamicMember(dynamicMember, functionalOp, flags, prefix),
                GetIndexDynamicCSharpExpression dynamicIndex => ReduceDynamicIndex(dynamicIndex, functionalOp, flags, prefix),
                _ => Helpers.ReduceAssignment(lhs, functionalOp, prefix),
            });
        public static Expression ReduceDynamicAssignment(DynamicCSharpArgument left, Func <Expression, Expression> functionalOp, CSharpBinderFlags flags, bool prefix = true)
        {
            var lhs = MakeWriteable(left.Expression);

            switch (lhs)
            {
            case GetMemberDynamicCSharpExpression dynamicMember:
                return(ReduceDynamicMember(dynamicMember, functionalOp, flags, prefix));

            case GetIndexDynamicCSharpExpression dynamicIndex:
                return(ReduceDynamicIndex(dynamicIndex, functionalOp, flags, prefix));
            }

            return(Helpers.ReduceAssignment(lhs, functionalOp, prefix));
        }
Exemple #3
0
        public static Expression ReduceDynamicAssignment(DynamicCSharpArgument left, Func <Expression, Expression> functionalOp, CSharpBinderFlags flags, bool prefix = true)
        {
            var lhs = MakeWriteable(left.Expression);

            var dynamicMember = lhs as GetMemberDynamicCSharpExpression;

            if (dynamicMember != null)
            {
                return(ReduceDynamicMember(dynamicMember, functionalOp, flags, prefix));
            }

            var dynamicIndex = lhs as GetIndexDynamicCSharpExpression;

            if (dynamicIndex != null)
            {
                return(ReduceDynamicIndex(dynamicIndex, functionalOp, flags, prefix));
            }

            return(Helpers.ReduceAssignment(lhs, functionalOp, prefix));
        }