/// <summary>
        /// Evaluates the specified expression.
        /// </summary>
        /// <param name="expression">The expression to evaluate.</param>
        /// <returns>Value of the expression.</returns>
        public QueryValue Visit(LinqFreeVariableExpression expression)
        {
            QueryExpression freeVariable;

            if (!this.freeVariableAssignments.TryGetValue(expression.Name, out freeVariable))
            {
                freeVariable = expression.Values.First();
            }

            return(this.Evaluate(freeVariable));
        }
Example #2
0
        /// <summary>
        /// Replaces the given expression.
        /// </summary>
        /// <param name="expression">The root node of the expression tree being visited.</param>
        /// <returns>Replaced expression.</returns>
        public virtual QueryExpression Visit(LinqFreeVariableExpression expression)
        {
            QueryExpression[] values = expression.Values.Select(this.ReplaceExpression).ToArray();

            if (HasChanged(expression.Values, values))
            {
                return(new LinqFreeVariableExpression(expression.Name, expression.ExpressionType, values));
            }

            return(expression);
        }
Example #3
0
        /// <summary>
        /// Generates System.CodeDom.CodeExpression from the given expression.
        /// </summary>
        /// <param name="expression">Expression from which System.CodeDom.CodeExpression is generated.</param>
        /// <returns>Generated System.CodeDom.CodeExpression.</returns>
        public virtual CodeExpression Visit(LinqFreeVariableExpression expression)
        {
            CodeFreeVariable codeFreeVariable;

            if (!this.freeVariables.TryGetValue(expression, out codeFreeVariable))
            {
                IEnumerable <CodeExpression> values        = expression.Values.Select(v => this.GenerateCode(v));
                CodeTypeReference            typeReference = this.GetTypeReference(expression.ExpressionType);
                codeFreeVariable = new CodeFreeVariable(expression.Name, typeReference, values);
                this.freeVariables.Add(expression, codeFreeVariable);
            }

            return(Code.Variable(codeFreeVariable.Name));
        }
 /// <summary>
 /// Visits a QueryExpression tree whose root node is the LinqFreeVariableExpression.
 /// </summary>
 /// <param name="expression">The root node of the expression tree being visited.</param>
 /// <returns>Uri query string representing the expression.</returns>
 public override string Visit(LinqFreeVariableExpression expression)
 {
     return expression.Values.Single().Accept(this);
 }
Example #5
0
 /// <summary>
 /// Visits a QueryExpression tree whose root node is the LinqFreeVariableExpression.
 /// </summary>
 /// <param name="expression">The root node of the expression tree being visited.</param>
 /// <returns>Uri query string representing the expression.</returns>
 public virtual string Visit(LinqFreeVariableExpression expression)
 {
     throw new TaupoNotSupportedException("Not supported");
 }
        /// <summary>
        /// Visits a QueryExpression tree whose root node is the LinqFreeVariableExpression. Free variable information is extracted.
        /// </summary>
        /// <param name="expression">The root node of the expression tree being visited.</param>
        /// <returns>Replaced expression.</returns>
        public override QueryExpression Visit(LinqFreeVariableExpression expression)
        {
            this.freeVariableAssignments.Add(expression.Name, expression.Values);

            return base.Visit(expression);
        }
 /// <summary>
 /// Resolves types for the specified expression.
 /// </summary>
 /// <param name="expression">The expression to resolve types for.</param>
 /// <returns>Expression with resolved types.</returns>
 public QueryExpression Visit(LinqFreeVariableExpression expression)
 {
     return(expression);
 }
Example #8
0
        /// <summary>
        /// Visits a QueryExpression tree whose root node is the LinqFreeVariableExpression. Free variable information is extracted.
        /// </summary>
        /// <param name="expression">The root node of the expression tree being visited.</param>
        /// <returns>Replaced expression.</returns>
        public override QueryExpression Visit(LinqFreeVariableExpression expression)
        {
            this.freeVariableAssignments.Add(expression.Name, expression.Values);

            return(base.Visit(expression));
        }
 /// <summary>
 /// Visits a QueryExpression tree whose root node is the LinqFreeVariableExpression.
 /// </summary>
 /// <param name="expression">The root node of the expression tree being visited.</param>
 /// <returns>Uri query string representing the expression.</returns>
 public override string Visit(LinqFreeVariableExpression expression)
 {
     return(expression.Values.Single().Accept(this));
 }