예제 #1
0
 public ImmutableHashSet <object> VisitZenListAddFrontExpr <T>(ZenListAddFrontExpr <T> expression, Unit parameter)
 {
     return(LookupOrCompute(expression, () =>
     {
         var x = expression.Element.Accept(this, parameter);
         var y = expression.Expr.Accept(this, parameter);
         return x.Union(y);
     }));
 }
예제 #2
0
        public Expression VisitZenListAddFrontExpr <T>(ZenListAddFrontExpr <T> expression, ExpressionConverterEnvironment parameter)
        {
            return(LookupOrCompute(expression, () =>
            {
                var method = typeof(ImmutableList <T>).GetMethodCached("Insert");
                var list = expression.Expr.Accept(this, parameter);

                var toImmutableListMethod = typeof(CommonUtilities)
                                            .GetMethodCached("ToImmutableList")
                                            .MakeGenericMethod(typeof(T));

                var immutableListExpr = Expression.Call(null, toImmutableListMethod, list);

                var element = expression.Element.Accept(this, parameter);
                return Expression.Call(immutableListExpr, method, Expression.Constant(0), element);
            }));
        }