30 types derived from Expression
System.Core (25)
Microsoft\Scripting\Ast\BinaryExpression.cs (1)
39public class BinaryExpression : Expression {
Microsoft\Scripting\Ast\BlockExpression.cs (1)
38public class BlockExpression : Expression {
Microsoft\Scripting\Ast\ConditionalExpression.cs (1)
36public class ConditionalExpression : Expression {
Microsoft\Scripting\Ast\ConstantExpression.cs (1)
36public class ConstantExpression : Expression {
Microsoft\Scripting\Ast\DebugInfoExpression.cs (1)
38public class DebugInfoExpression : Expression {
Microsoft\Scripting\Ast\DefaultExpression.cs (1)
30public sealed class DefaultExpression : Expression {
Microsoft\Scripting\Ast\DynamicExpression.cs (1)
41public class DynamicExpression : Expression, IDynamicExpression
Microsoft\Scripting\Ast\GotoExpression.cs (1)
57public sealed class GotoExpression : Expression {
Microsoft\Scripting\Ast\IndexExpression.cs (1)
40public sealed class IndexExpression : Expression, IArgumentProvider {
Microsoft\Scripting\Ast\InvocationExpression.cs (1)
38public sealed class InvocationExpression : Expression, IArgumentProvider {
Microsoft\Scripting\Ast\LabelExpression.cs (1)
33public sealed class LabelExpression : Expression {
Microsoft\Scripting\Ast\LambdaExpression.cs (1)
47public abstract class LambdaExpression : Expression {
Microsoft\Scripting\Ast\ListInitExpression.cs (1)
43public sealed class ListInitExpression : Expression {
Microsoft\Scripting\Ast\LoopExpression.cs (1)
35public sealed class LoopExpression : Expression {
Microsoft\Scripting\Ast\MemberExpression.cs (1)
37public class MemberExpression : Expression {
Microsoft\Scripting\Ast\MemberInitExpression.cs (1)
34public sealed class MemberInitExpression : Expression {
Microsoft\Scripting\Ast\MethodCallExpression.cs (1)
39public class MethodCallExpression : Expression, IArgumentProvider {
Microsoft\Scripting\Ast\NewArrayExpression.cs (1)
39public class NewArrayExpression : Expression {
Microsoft\Scripting\Ast\NewExpression.cs (1)
40public class NewExpression : Expression, IArgumentProvider {
Microsoft\Scripting\Ast\ParameterExpression.cs (1)
36public class ParameterExpression : Expression {
Microsoft\Scripting\Ast\RuntimeVariablesExpression.cs (1)
36public sealed class RuntimeVariablesExpression : Expression {
Microsoft\Scripting\Ast\SwitchExpression.cs (1)
38public sealed class SwitchExpression : Expression {
Microsoft\Scripting\Ast\TryExpression.cs (1)
44public sealed class TryExpression : Expression {
Microsoft\Scripting\Ast\TypeBinaryExpression.cs (1)
35public sealed class TypeBinaryExpression : Expression {
Microsoft\Scripting\Ast\UnaryExpression.cs (1)
38public sealed class UnaryExpression : Expression {
System.Data.Entity (1)
System\Data\Objects\ELinq\Funcletizer.cs (1)
598internal sealed class QueryParameterExpression : Expression
System.Data.Linq (1)
SqlClient\Common\Expressions.cs (1)
19abstract internal class InternalExpression : Expression {
System.Data.Services.Client (3)
System\Data\Services\Client\ALinq\InputReferenceExpression.cs (1)
31internal sealed class InputReferenceExpression : Expression
System\Data\Services\Client\ALinq\QueryOptionExpression.cs (1)
20internal abstract class QueryOptionExpression : Expression
System\Data\Services\Client\ALinq\ResourceExpression.cs (1)
40internal abstract class ResourceExpression : Expression
6214 references to Expression
System.Activities (287)
Microsoft\CSharp\Activities\CSharpReference.cs (1)
69public Expression GetExpressionTree()
Microsoft\CSharp\Activities\CSharpValue.cs (1)
70public Expression GetExpressionTree()
Microsoft\VisualBasic\Activities\VisualBasicDesignerHelper.cs (9)
390static void FindTypeReferences(Expression expression, HashSet<Type> typeReferences) 468ReadOnlyCollection<Expression> arguments = listInit.Initializers[i].Arguments; 510ReadOnlyCollection<Expression> arguments = arrayIndex.Arguments; 554ReadOnlyCollection<Expression> callArguments = methodCall.Arguments; 564ReadOnlyCollection<Expression> expressions = newArray.Expressions; 574ReadOnlyCollection<Expression> boundExpressions = newArrayBounds.Expressions; 592ReadOnlyCollection<Expression> ctorArguments = newExpression.Arguments; 632ReadOnlyCollection<Expression> blockExpressions = block.Expressions; 664ReadOnlyCollection<Expression> arguments = initializers[i].Arguments;
Microsoft\VisualBasic\Activities\VisualBasicHelper.cs (60)
46typeof(Expression).Assembly, // System.Core 292Expression finalBody; 328return Expression.Lambda(rawTree.Type, finalBody, rawTree.Parameters); 404return Expression.Lambda(lambda.Type, finalBody, lambda.Parameters); 428Expression finalBody; 468return Expression.Lambda<Func<ActivityContext, T>>(finalBody, 576return Expression.Lambda<Func<ActivityContext, T>>(finalBody, 654Expression Rewrite(Expression expression, ReadOnlyCollection<ParameterExpression> lambdaParameters, out bool abort) 659Expression Rewrite(Expression expression, ReadOnlyCollection<ParameterExpression> lambdaParameters, bool isLocationExpression, out bool abort) 663Expression expr1; 664Expression expr2; 665Expression expr3; 666List<Expression> arguments; 668ReadOnlyCollection<Expression> tmpArguments; 721return Expression.MakeBinary( 749return Expression.Condition(expr1, expr2, expr3); 768arguments = new List<Expression>(tmpArguments.Count); 779return Expression.Invoke(expr1, arguments); 789return Expression.Lambda(lambda.Type, expr1, lambda.Parameters); 807arguments = new List<Expression>(tmpArguments.Count); 817initializers.Add(Expression.ElementInit(tmpInitializers[i].AddMethod, arguments)); 819return Expression.ListInit(newExpression, initializers); 898return Expression.MakeMemberAccess(expr1, memberExpression.Member); 921return Expression.MemberInit(newExpression, bindings); 936List<Expression> indexes = new List<Expression>(tmpArguments.Count); 946return Expression.ArrayIndex(expr1, indexes); 959return Expression.ArrayIndex(expr1, expr2); 974arguments = new List<Expression>(tmpArguments.Count); 985return Expression.Call(expr1, methodCall.Method, arguments); 990ReadOnlyCollection<Expression> tmpExpressions = newArray.Expressions; 992List<Expression> arrayInitializers = new List<Expression>(tmpExpressions.Count); 1002return Expression.NewArrayInit(newArray.Type.GetElementType(), arrayInitializers); 1009List<Expression> bounds = new List<Expression>(tmpExpressions.Count); 1019return Expression.NewArrayBounds(newArrayBounds.Type.GetElementType(), bounds); 1035arguments = new List<Expression>(tmpArguments.Count); 1056return Expression.TypeIs(expr1, typeBinary.TypeOperand); 1073return Expression.MakeUnary(unary.NodeType, expr1, unary.Type, unary.Method); 1083return Expression.UnaryPlus(expr1, unaryPlus.Method); 1103List<Expression> expressionList = new List<Expression>(tmpExpressions.Count); 1113return Expression.Block(parameterList, expressionList); 1128return Expression.Assign(expr1, expr2); 1139Expression expr1; 1140ReadOnlyCollection<Expression> tmpArguments; 1152return Expression.Bind(assignment.Member, expr1); 1165List<Expression> arguments = null; 1170arguments = new List<Expression>(tmpArguments.Count); 1181initializers.Add(Expression.ElementInit(tmpInitializers[i].AddMethod, arguments)); 1184return Expression.ListBind(list.Member, initializers); 1201return Expression.MemberBind(member.Member, bindings); 1209static ParameterExpression FindParameter(Expression expression) 1326List<Expression> variableList = new List<Expression>(); 1342static ParameterExpression FindParameter(ICollection<Expression> collection) 1344foreach (Expression expression in collection)
Microsoft\VisualBasic\Activities\VisualBasicReference.cs (1)
118public Expression GetExpressionTree()
Microsoft\VisualBasic\Activities\VisualBasicValue.cs (1)
118public Expression GetExpressionTree()
System\Activities\Expressions\BinaryExpressionHelper.cs (5)
36ParameterExpression leftParameter = Expression.Parameter(typeof(TLeft), "left"); 37ParameterExpression rightParameter = Expression.Parameter(typeof(TRight), "right"); 41BinaryExpression binaryExpression = Expression.MakeBinary(operatorType, leftParameter, rightParameter); 43Expression expressionToCompile = OperatorPermissionHelper.InjectReflectionPermissionIfNecessary(binaryExpression.Method, binaryExpression); 44Expression<Func<TLeft, TRight, TResult>> lambdaExpression = Expression.Lambda<Func<TLeft, TRight, TResult>>(expressionToCompile, leftParameter, rightParameter);
System\Activities\Expressions\CompiledExpressionInvoker.cs (1)
180internal Expression GetExpressionTree()
System\Activities\Expressions\ExpressionServices.cs (12)
52static string TryConvert<TResult>(Expression body, bool throwOnError, out Activity<TResult> result) 173static string TryConvertReference<TResult>(Expression body, bool throwOnError, out Activity<Location<TResult>> result) 409Expression<Func<Variable>> funcExpression = Expression.Lambda<Func<Variable>>(methodCallExpression.Object); 551Expression<Func<Variable>> funcExpression = Expression.Lambda<Func<Variable>>(methodCallExpression.Object); 606Expression<Func<DelegateArgument>> funcExpression = Expression.Lambda<Func<DelegateArgument>>(methodCallExpression.Object); 661Expression<Func<DelegateArgument>> funcExpression = Expression.Lambda<Func<DelegateArgument>>(methodCallExpression.Object); 693Expression<Func<RuntimeArgument>> expr = Expression.Lambda<Func<RuntimeArgument>>(memberExpression, null); 1370static string TryConvertArgumentExpressionWorker<TArgument>(Expression expression, bool isByRef, bool throwOnError, out System.Activities.Argument result) 1447static string TryConvertArguments(ReadOnlyCollection<Expression> source, IList target, Type expressionType, int baseEvaluationOrder, ParameterInfo[] parameterInfoArray, bool throwOnError) 1453Expression expression = source[i]; 1488Expression expression = methodCallExpression.Arguments[0]; 1546Expression expression = methodCallExpression.Arguments[0];
System\Activities\Expressions\ITextExpression.cs (1)
26Expression GetExpressionTree();
System\Activities\Expressions\LambdaReference.cs (2)
36internal Expression LambdaExpression 49Expression newTree;
System\Activities\Expressions\LambdaValue.cs (2)
36internal Expression LambdaExpression 49Expression newTree;
System\Activities\Expressions\MemberExpressionHelper.cs (4)
38ParameterExpression operandParameter = Expression.Parameter(typeof(TOperand), "operand"); 42memberExpression = Expression.MakeMemberAccess(null, GetMemberInfo<TOperand>(memberName, isField)); 46memberExpression = Expression.MakeMemberAccess(operandParameter, GetMemberInfo<TOperand>(memberName, isField)); 48Expression<Func<TOperand, TResult>> lambdaExpression = Expression.Lambda<Func<TOperand, TResult>>(memberExpression, operandParameter);
System\Activities\Expressions\MethodCallExpressionHelper.cs (69)
21Collection<Expression> assignVariablesExpressions, Collection<Expression> assignVariablesBackExpressions) 30ParameterExpression variable = Expression.Parameter(parameterType.IsByRef ? parameterType.GetElementType() : parameterType, "arg" + i); 34assignVariablesExpressions.Add(Expression.Assign(variable, 35Expression.Convert( 36Expression.Call(typeof(Convert).GetMethod("ChangeType", new Type[] { typeof(object), typeof(Type) }), Expression.ArrayIndex(objectArray, Expression.Constant(i)), Expression.Constant(variable.Type, typeof(Type))), 41assignVariablesExpressions.Add(Expression.Assign(variable, 42Expression.Convert(Expression.ArrayIndex(objectArray, Expression.Constant(i)), variable.Type))); 48assignVariablesBackExpressions.Add(Expression.Assign(Expression.ArrayAccess(objectArray, Expression.Constant(i)), 49Expression.Convert(variable, typeof(object)))); 53assignVariablesBackExpressions.Add(Expression.Assign(Expression.ArrayAccess(objectArray, Expression.Constant(i)), 67callExpression = Expression.Call(Expression.Convert(targetInstance, methodInfo.DeclaringType), methodInfo, variables); 71callExpression = Expression.Call(methodInfo, variables); 77Collection<ParameterExpression> variables, out ParameterExpression tempInstance, out Expression assignTempInstanceExpression) 86tempInstance = Expression.Parameter(methodInfo.DeclaringType, "tempInstance"); 87assignTempInstanceExpression = Expression.Assign(tempInstance, Expression.Convert(targetInstance, methodInfo.DeclaringType)); 88callExpression = Expression.Call(tempInstance, 93callExpression = Expression.Call(Expression.Convert(targetInstance, methodInfo.DeclaringType), methodInfo, variables); 98callExpression = Expression.Call(methodInfo, variables); 103static Expression ComposeBlockExpression(Collection<ParameterExpression> variables, Collection<Expression> assignVariables, Expression callExpression, 104Collection<Expression> assignVariablesBack, Type returnType, bool isConstructor, bool valueTypeReference) 106Collection<Expression> expressions = new Collection<Expression>(); 107foreach (Expression expression in assignVariables) 112ParameterExpression result = Expression.Parameter(isConstructor ? returnType : typeof(object), "result"); 116Expression resultAssign = null; 119resultAssign = Expression.Assign(result, 120Expression.Convert(callExpression, typeof(object))); 124resultAssign = Expression.Assign(result, callExpression); 132foreach (Expression expression in assignVariablesBack) 142Expression block = Expression.Block(variables, expressions); 146static Expression ComposeLinqExpression(MethodInfo methodInfo, ParameterExpression targetInstance, ParameterExpression objectArray, Type returnType, bool valueTypeReference) 148Collection<Expression> assignVariablesExpressions = new Collection<Expression>(); 149Collection<Expression> assignVariablesBackExpressions = new Collection<Expression>(); 155Expression assignTempInstanceExpression = null; 156Expression expression; 163assignVariablesBackExpressions.Add(Expression.Assign(targetInstance, Expression.Convert(tempInstance, typeof(object)))); 175static Expression ComposeLinqExpression<TResult>(ConstructorInfo constructorInfo, ParameterExpression objectArray) 177Collection<Expression> assignVariablesExpressions = new Collection<Expression>(); 178Collection<Expression> assignVariablesBackExpressions = new Collection<Expression>(); 186newExpression = Expression.New(constructorInfo, variables); 190newExpression = Expression.New(typeof(TResult)); 199ParameterExpression targetInstance = Expression.Parameter(typeof(object), "targetInstance"); 200ParameterExpression objectArray = Expression.Parameter(typeof(object[]), "arguments"); 201Expression block = ComposeLinqExpression(methodInfo, targetInstance, objectArray, methodInfo.ReturnType, valueTypeReference); 202Expression<Func<object, object[], object>> lambdaExpression = Expression.Lambda<Func<object, object[], object>>(block, targetInstance, objectArray); 221ParameterExpression objectArray = Expression.Parameter(typeof(object[]), "arguments"); 222Expression block = ComposeLinqExpression<TResult>(constructorInfo, objectArray); 223Expression<Func<object[], TResult>> lambdaExpression = Expression.Lambda<Func<object[], TResult>>(block, objectArray);
System\Activities\Expressions\OperatorPermissionHelper.cs (6)
29internal static Expression InjectReflectionPermissionIfNecessary(MethodInfo method, Expression expression) 43Expression demandExpression = Expression.Call(Expression.Constant(reflectionMemberAccessPermission), "Demand", null, null); 44return Expression.Block(expression.Type, demandExpression, expression);
System\Activities\Expressions\UnaryExpressionHelper.cs (4)
31ParameterExpression operandParameter = Expression.Parameter(typeof(TOperand), "operand"); 34UnaryExpression unaryExpression = Expression.MakeUnary(operatorType, operandParameter, typeof(TResult)); 35Expression expressionToCompile = OperatorPermissionHelper.InjectReflectionPermissionIfNecessary(unaryExpression.Method, unaryExpression); 36Expression<Func<TOperand, TResult>> lambdaExpression = Expression.Lambda<Func<TOperand, TResult>>(expressionToCompile, operandParameter);
System\Activities\ExpressionUtilities.cs (96)
21public static ParameterExpression RuntimeContextParameter = Expression.Parameter(typeof(ActivityContext), "context"); 62public static Expression CreateIdentifierExpression(LocationReference locationReference) 64return Expression.Call(RuntimeContextParameter, activityContextGetValueGenericMethod.MakeGenericMethod(locationReference.Type), Expression.Constant(locationReference, typeof(LocationReference))); 73Expression body = expression.Body; 159Expression body = expression.Body; 234static LocationFactory CreateParentReference(Expression expression, ReadOnlyCollection<ParameterExpression> lambdaParameters) 247LambdaExpression parentLambda = Expression.Lambda(funcType, expression, lambdaParameters); 254static Func<ActivityContext, T> Compile<T>(Expression objectExpression, ReadOnlyCollection<ParameterExpression> parametersCollection) 262Expression<Func<ActivityContext, T>> objectLambda = Expression.Lambda<Func<ActivityContext, T>>(objectExpression, parameters); 266static T Evaluate<T>(Expression objectExpression, ReadOnlyCollection<ParameterExpression> parametersCollection, ActivityContext context) 355Expression.Convert(memberExpression.Expression, TypeHelper.ObjectType), expression.Parameters); 456public ArgumentFactory(Expression argumentExpression, ReadOnlyCollection<ParameterExpression> expressionParameters) 473public LocationReferenceFactory(Expression locationReferenceExpression, ReadOnlyCollection<ParameterExpression> expressionParameters) 527Expression argument = callExpression.Arguments[i]; 530argument = Expression.Convert(argument, TypeHelper.ObjectType); 751Expression.Convert(memberExpression.Expression, TypeHelper.ObjectType), expression.Parameters); 876public static bool TryRewriteLambdaExpression(Expression expression, out Expression newExpression, CodeActivityPublicEnvironmentAccessor publicAccessor, bool isLocationExpression = false) 886Expression left = null; 887Expression right = null; 888Expression other = null; 890IList<Expression> expressionList = null; 931newExpression = Expression.MakeBinary( 950newExpression = Expression.Condition( 968newExpression = Expression.Invoke( 981newExpression = Expression.Lambda( 996newExpression = Expression.ListInit( 1016newExpression = Expression.MakeMemberAccess( 1030newExpression = Expression.MemberInit( 1046newExpression = Expression.ArrayIndex( 1060newExpression = Expression.ArrayIndex( 1081newExpression = Expression.NewArrayInit( 1094newExpression = Expression.NewArrayBounds( 1126newExpression = Expression.TypeIs( 1146newExpression = Expression.MakeUnary( 1161newExpression = Expression.UnaryPlus( 1177newExpression = Expression.Block(block.Variables, expressionList); 1189newExpression = Expression.Assign(left, right); 1246Expression other = null; 1259newBinding = Expression.Bind(assignment.Member, other); 1270newBinding = Expression.ListBind(list.Member, initializerList); 1281newBinding = Expression.MemberBind(member.Member, bindingList); 1290static bool TryRewriteLambdaExpressionCollection(IList<Expression> expressions, out IList<Expression> newExpressions, CodeActivityPublicEnvironmentAccessor publicAccessor) 1292IList<Expression> temporaryExpressions = null; 1296Expression expression = expressions[i]; 1298Expression newExpression; 1305temporaryExpressions = new List<Expression>(expressions.Count); 1342IList<Expression> newExpressions; 1357elementInit = Expression.ElementInit(elementInit.AddMethod, newExpressions); 1378static bool TryGetInlinedArgumentReference(MethodCallExpression originalExpression, Expression argumentExpression, out LocationReference inlinedReference, CodeActivityPublicEnvironmentAccessor publicAccessor, bool isLocationExpression) 1393Expression<Func<Argument>> argumentLambda = Expression.Lambda<Func<Argument>>(argumentExpression); 1442static bool TryRewriteArgumentGetCall(MethodCallExpression originalExpression, Type returnType, out Expression newExpression, CodeActivityPublicEnvironmentAccessor publicAccessor, bool isLocationExpression) 1447ReadOnlyCollection<Expression> argumentExpressions = originalExpression.Arguments; 1451Expression contextExpression = argumentExpressions[0]; 1458newExpression = Expression.Call(contextExpression, activityContextGetValueGenericMethod.MakeGenericMethod(returnType), Expression.Constant(inlinedReference, typeof(LocationReference))); 1468static bool TryRewriteArgumentGetLocationCall(MethodCallExpression originalExpression, Type returnType, out Expression newExpression, CodeActivityPublicEnvironmentAccessor publicAccessor) 1473ReadOnlyCollection<Expression> argumentExpressions = originalExpression.Arguments; 1477Expression contextExpression = argumentExpressions[0]; 1486newExpression = Expression.Call(Expression.Constant(inlinedReference, typeof(LocationReference)), locationReferenceGetLocationMethod, contextExpression); 1490newExpression = Expression.Call(contextExpression, activityContextGetLocationGenericMethod.MakeGenericMethod(returnType), Expression.Constant(inlinedReference, typeof(LocationReference))); 1502static bool TryRewriteLocationReferenceSubclassGetCall(MethodCallExpression originalExpression, Type returnType, out Expression newExpression, CodeActivityPublicEnvironmentAccessor publicAccessor, bool isLocationExpression) 1507ReadOnlyCollection<Expression> argumentExpressions = originalExpression.Arguments; 1511Expression contextExpression = argumentExpressions[0]; 1518newExpression = Expression.Call(contextExpression, activityContextGetValueGenericMethod.MakeGenericMethod(returnType), Expression.Constant(inlinedReference, typeof(LocationReference))); 1528static bool TryRewriteLocationReferenceSubclassGetLocationCall(MethodCallExpression originalExpression, Type returnType, out Expression newExpression, CodeActivityPublicEnvironmentAccessor publicAccessor) 1533ReadOnlyCollection<Expression> argumentExpressions = originalExpression.Arguments; 1537Expression contextExpression = argumentExpressions[0]; 1546newExpression = Expression.Call(Expression.Constant(inlinedReference, typeof(LocationReference)), locationReferenceGetLocationMethod, originalExpression.Arguments[0]); 1550newExpression = Expression.Call(contextExpression, activityContextGetLocationGenericMethod.MakeGenericMethod(returnType), Expression.Constant(inlinedReference, typeof(LocationReference))); 1562static bool CustomMemberResolver(Expression expression, out object memberValue) 1616static bool TryGetInlinedLocationReference(MethodCallExpression originalExpression, Expression locationReferenceExpression, out LocationReference inlinedReference, CodeActivityPublicEnvironmentAccessor publicAccessor, bool isLocationExpression) 1630Expression<Func<LocationReference>> locationReferenceLambda = Expression.Lambda<Func<LocationReference>>(locationReferenceExpression); 1662static bool TryRewriteActivityContextGetValueCall(MethodCallExpression originalExpression, Type returnType, out Expression newExpression, CodeActivityPublicEnvironmentAccessor publicAccessor, bool isLocationExpression) 1671ReadOnlyCollection<Expression> argumentExpressions = originalExpression.Arguments; 1675Expression parameterExpression = argumentExpressions[0]; 1697newExpression = Expression.Call(originalExpression.Object, activityContextGetValueGenericMethod.MakeGenericMethod(returnType), Expression.Constant(inlinedReference, typeof(LocationReference))); 1704static bool TryRewriteActivityContextGetLocationCall(MethodCallExpression originalExpression, Type returnType, out Expression newExpression, CodeActivityPublicEnvironmentAccessor publicAccessor) 1709ReadOnlyCollection<Expression> argumentExpressions = originalExpression.Arguments; 1713Expression locationReference = argumentExpressions[0]; 1720newExpression = Expression.Call(originalExpression.Object, activityContextGetLocationGenericMethod.MakeGenericMethod(returnType), Expression.Constant(inlinedReference, typeof(LocationReference))); 1736static bool TryRewriteMethodCall(MethodCallExpression methodCall, out Expression newExpression, CodeActivityPublicEnvironmentAccessor publicAccessor, bool isLocationExpression) 1962Expression objectExpression; 1963IList<Expression> expressionList; 1970newExpression = Expression.Call(objectExpression, targetMethod, expressionList); 1976internal static Expression RewriteNonCompiledExpressionTree(LambdaExpression originalLambdaExpression) 1979return expressionVisitor.Visit(Expression.Lambda(
System\Activities\XamlIntegration\CompiledDataContext.cs (3)
63protected Expression RewriteExpressionTree(Expression originalExpression) 77return this.visitor.Visit(Expression.Lambda(
System\Activities\XamlIntegration\ExpressionTreeRewriter.cs (6)
25protected override Expression VisitMember(MemberExpression node) 27Expression newNode = null; 41protected override Expression VisitConstant(ConstantExpression node) 45Expression newNode = node; 49newNode = Expression.Constant(inlinedReference.LocationReference, typeof(LocationReference)); 57bool TryRewriteMemberExpressionNode(MemberExpression node, out Expression newNode)
System\Activities\XamlIntegration\ICompiledExpressionRoot.cs (1)
27Expression GetExpressionTreeForExpression(int expressionId, IList<LocationReference> locationReferences);
System\Activities\XamlIntegration\TextExpressionCompiler.cs (2)
884getExpressionTreeForExpressionMethod.ReturnType = new CodeTypeReference(typeof(Expression)); 1478expressionMethod.ReturnType = new CodeTypeReference(typeof(Expression));
System.Activities.Presentation (14)
System.Activities.Presentation\System\Activities\Presentation\Model\ModelItemImpl.cs (14)
465DynamicMetaObject IDynamicMetaObjectProvider.GetMetaObject(System.Linq.Expressions.Expression parameter) 529public ModelItemMetaObject(System.Linq.Expressions.Expression parameter, ModelItemImpl target) 536System.Linq.Expressions.Expression s = System.Linq.Expressions.Expression.Convert(this.Expression, typeof(ModelItemImpl)); 537System.Linq.Expressions.Expression value = System.Linq.Expressions.Expression.Call(s, getPropertyValueMethodInfo, System.Linq.Expressions.Expression.Constant(binder.Name)); 543System.Linq.Expressions.Expression s = System.Linq.Expressions.Expression.Convert(this.Expression, typeof(ModelItemImpl)); 544System.Linq.Expressions.Expression objectValue = System.Linq.Expressions.Expression.Convert(value.Expression, typeof(object)); 545System.Linq.Expressions.Expression valueExp = System.Linq.Expressions.Expression.Call(s, setPropertyValueMethodInfo, System.Linq.Expressions.Expression.Constant(binder.Name), objectValue);
System.Core (2791)
Microsoft\Scripting\Actions\BindingRestrictions.cs (39)
41public static readonly BindingRestrictions Empty = new CustomRestriction(Expression.Constant(true)); 51internal abstract Expression GetExpression(); 75public static BindingRestrictions GetTypeRestriction(Expression expression, Type type) { 100public static BindingRestrictions GetInstanceRestriction(Expression expression, object instance) { 115public static BindingRestrictions GetExpressionRestriction(Expression expression) { 149internal Expression Node; 161internal Expression ToExpression() { 162Expression result = _tests.Pop().Node; 164result = Expression.AndAlso(_tests.Pop().Node, result); 169private void Push(Expression node, int depth) { 171node = Expression.AndAlso(_tests.Pop().Node, node); 179/// Creates the <see cref="Expression"/> representing the binding restrictions. 182public Expression ToExpression() { 187return Expression.Constant(true); 221internal override Expression GetExpression() { 227private readonly Expression _expression; 229internal CustomRestriction(Expression expression) { 242internal override Expression GetExpression() { 248private readonly Expression _expression; 251internal TypeRestriction(Expression parameter, Type type) { 265internal override Expression GetExpression() { 266return Expression.TypeEqual(_expression, _type); 271private readonly Expression _expression; 274internal InstanceRestriction(Expression parameter, object instance) { 288internal override Expression GetExpression() { 290return Expression.Equal( 291Expression.Convert(_expression, typeof(object)), 292Expression.Constant(null) 296ParameterExpression temp = Expression.Parameter(typeof(object), null); 297return Expression.Block( 299Expression.Assign( 301Expression.Property( 302Expression.Constant(new WeakReference(_instance)), 306Expression.AndAlso( 308Expression.NotEqual(temp, Expression.Constant(null)), 309Expression.Equal( 310Expression.Convert(_expression, typeof(object)), 333public Expression Test {
Microsoft\Scripting\Actions\CallSite.cs (124)
338var @params = invoke.GetParametersCached().Map(p => Expression.Parameter(p.ParameterType, p.Name)); 339return Expression.Lambda<T>( 340Expression.Block( 341Expression.Call( 345Expression.Default(invoke.GetReturnType()) 359var body = new List<Expression>(); 361var @params = invoke.GetParametersCached().Map(p => Expression.Parameter(p.ParameterType, p.Name)); 362var @return = Expression.Label(invoke.GetReturnType()); 369var @this = Expression.Variable(typeof(CallSite<T>), "this"); 371body.Add(Expression.Assign(@this, Expression.Convert(site, @this.Type))); 374var applicable = Expression.Variable(typeof(T[]), "applicable"); 378var rule = Expression.Variable(typeof(T), "rule"); 381var originalRule = Expression.Variable(typeof(T), "originalRule"); 383body.Add(Expression.Assign(originalRule, Expression.Field(@this, "Target"))); 388vars.Add(result = Expression.Variable(@return.Type, "result")); 392var count = Expression.Variable(typeof(int), "count"); 394var index = Expression.Variable(typeof(int), "index"); 402Expression.Assign( 404Expression.Call( 437Expression invokeRule; 439Expression getMatch = Expression.Call( 444Expression resetMatch = Expression.Call( 449var onMatch = Expression.Call( 458invokeRule = Expression.Block( 459Expression.Invoke(rule, new TrueReadOnlyCollection<Expression>(@params)), 460Expression.IfThen( 462Expression.Block(onMatch, Expression.Return(@return)) 466invokeRule = Expression.Block( 467Expression.Assign(result, Expression.Invoke(rule, new TrueReadOnlyCollection<Expression>(@params))), 468Expression.IfThen( 470Expression.Block(onMatch, Expression.Return(@return, result)) 475Expression getRule = Expression.Assign(rule, Expression.ArrayAccess(applicable, index)); 477var @break = Expression.Label(); 479var breakIfDone = Expression.IfThen( 480Expression.Equal(index, count), 481Expression.Break(@break) 484var incrementIndex = Expression.PreIncrementAssign(index); 487Expression.IfThen( 488Expression.NotEqual( 489Expression.Assign(applicable, Expression.Call(typeof(CallSiteOps), "GetRules", typeArgs, @this)), 490Expression.Constant(null, applicable.Type) 492Expression.Block( 493Expression.Assign(count, Expression.ArrayLength(applicable)), 494Expression.Assign(index, Expression.Constant(0)), 495Expression.Loop( 496Expression.Block( 499Expression.IfThen( 500Expression.NotEqual( 501Expression.Convert(rule, typeof(object)), 502Expression.Convert(originalRule, typeof(object)) 504Expression.Block( 505Expression.Assign( 506Expression.Field(@this, "Target"), 532var cache = Expression.Variable(typeof(RuleCache<T>), "cache"); 536Expression.Assign( 538Expression.Call(typeof(CallSiteOps), "GetRuleCache", typeArgs, @this) 545Expression.Assign( 547Expression.Call(typeof(CallSiteOps), "GetCachedRules", typeArgs, cache) 583invokeRule = Expression.Block( 584Expression.Invoke(rule, new TrueReadOnlyCollection<Expression>(@params)), 585Expression.IfThen( 587Expression.Return(@return) 591invokeRule = Expression.Block( 592Expression.Assign(result, Expression.Invoke(rule, new TrueReadOnlyCollection<Expression>(@params))), 593Expression.IfThen( 595Expression.Return(@return, result) 600var tryRule = Expression.TryFinally( 602Expression.IfThen( 604Expression.Block( 605Expression.Call(typeof(CallSiteOps), "AddRule", typeArgs, @this, rule), 606Expression.Call(typeof(CallSiteOps), "MoveRule", typeArgs, cache, rule, index) 611getRule = Expression.Assign( 612Expression.Field(@this, "Target"), 613Expression.Assign(rule, Expression.ArrayAccess(applicable, index)) 616body.Add(Expression.Assign(index, Expression.Constant(0))); 617body.Add(Expression.Assign(count, Expression.ArrayLength(applicable))); 619Expression.Loop( 620Expression.Block( 637body.Add(Expression.Assign(rule, Expression.Constant(null, rule.Type))); 640var args = Expression.Variable(typeof(object[]), "args"); 643Expression.Assign( 645Expression.NewArrayInit(typeof(object), arguments.Map(p => Convert(p, typeof(object)))) 675Expression setOldTarget = Expression.Assign( 676Expression.Field(@this, "Target"), 680getRule = Expression.Assign( 681Expression.Field(@this, "Target"), 682Expression.Assign( 684Expression.Call( 688Expression.Property(@this, "Binder"), 695tryRule = Expression.TryFinally( 697Expression.IfThen( 699Expression.Call(typeof(CallSiteOps), "AddRule", typeArgs, @this, rule) 704Expression.Loop( 705Expression.Block(setOldTarget, getRule, tryRule, resetMatch), 710body.Add(Expression.Default(@return.Type)); 712var lambda = Expression.Lambda<T>( 713Expression.Label( 715Expression.Block( 717new ReadOnlyCollection<Expression>(body) 730private static Expression Convert(Expression arg, Type type) { 734return Expression.Convert(arg, type);
Microsoft\Scripting\Actions\CallSiteBinder.cs (20)
38private static readonly LabelTarget _updateLabel = Expression.Label("CallSiteBinder.UpdateLabel"); 81@params[i] = Expression.Parameter(pis[i + 1].ParameterType, "$arg" + i); 85ReturnLabel = Expression.Label(invoke.GetReturnType()); 99/// to produce a new <see cref="Expression"/> for the new argument types. 101public abstract Expression Bind(object[] args, ReadOnlyCollection<ParameterExpression> parameters, LabelTarget returnLabel); 130Expression binding = Bind(args, signature.Parameters, signature.ReturnLabel); 168private static Expression<T> Stitch<T>(Expression binding, LambdaSignature<T> signature) where T : class { 171var body = new ReadOnlyCollectionBuilder<Expression>(3); 174var site = Expression.Parameter(typeof(CallSite), "$site"); 177Expression updLabel = Expression.Label(CallSiteBinder.UpdateLabel); 189Expression.Label( 191Expression.Condition( 192Expression.Call( 196Expression.Default(signature.ReturnLabel.Type), 197Expression.Invoke( 198Expression.Property( 199Expression.Convert(site, siteType), 202new TrueReadOnlyCollection<Expression>(@params) 209Expression.Block(body),
Microsoft\Scripting\Actions\DynamicMetaObject.cs (9)
37private readonly Expression _expression; 53public DynamicMetaObject(Expression expression, BindingRestrictions restrictions) { 67public DynamicMetaObject(Expression expression, BindingRestrictions restrictions, object value) 76public Expression Expression { 285internal static Expression[] GetExpressions(DynamicMetaObject[] objects) { 288Expression[] res = new Expression[objects.Length]; 292Expression expr = mo.Expression; 310public static DynamicMetaObject Create(object value, Expression expression) {
Microsoft\Scripting\Actions\DynamicMetaObjectBinder.cs (18)
71/// to produce a new <see cref="Expression"/> for the new argument types. 73public sealed override Expression Bind(object[] args, ReadOnlyCollection<ParameterExpression> parameters, LabelTarget returnLabel) { 113Expression body = binding.Expression; 144body = Expression.Return(returnLabel, body); 149body = Expression.IfThen(restrictions.ToExpression(), body); 182Expression.AndAlso( 183Expression.NotEqual(expr, Expression.Constant(null)), 184Expression.Call( 192Expression.AndAlso( 193Expression.NotEqual(expr, Expression.Constant(null)), 194Expression.Not( 195Expression.Call( 225/// <param name="type">The <see cref="Expression.Type">Type</see> property of the resulting expression; any type is allowed.</param> 228public Expression GetUpdateExpression(Type type) { 229return Expression.Goto(CallSiteBinder.UpdateLabel, type); 268DynamicExpression.Make(ReturnType, delegateType, this, new TrueReadOnlyCollection<Expression>(exprs)),
Microsoft\Scripting\Actions\DynamicObject.cs (84)
230internal MetaDynamic(Expression expression, DynamicObject value) 365private readonly static Expression[] NoArgs = new Expression[0]; 367private static Expression[] GetConvertedArgs(params Expression[] args) { 368ReadOnlyCollectionBuilder<Expression> paramArgs = new ReadOnlyCollectionBuilder<Expression>(args.Length); 371paramArgs.Add(Expression.Convert(args[i], typeof(object))); 381private static Expression ReferenceArgAssign(Expression callArgs, Expression[] args) { 382ReadOnlyCollectionBuilder<Expression> block = null; 388block = new ReadOnlyCollectionBuilder<Expression>(); 391Expression.Assign( 393Expression.Convert( 394Expression.ArrayIndex( 396Expression.Constant(i) 406return Expression.Block(block); 408return Expression.Empty(); 417private static Expression[] BuildCallArgs(DynamicMetaObjectBinder binder, Expression[] parameters, Expression arg0, Expression arg1) { 419return arg1 != null ? new Expression[] { Constant(binder), arg0, arg1 } : new Expression[] { Constant(binder), arg0 }; 421return arg1 != null ? new Expression[] { Constant(binder), arg1 } : new Expression[] { Constant(binder) }; 429return Expression.Constant(binder, t); 436private DynamicMetaObject CallMethodWithResult(string methodName, DynamicMetaObjectBinder binder, Expression[] args, Fallback fallback) { 444private DynamicMetaObject CallMethodWithResult(string methodName, DynamicMetaObjectBinder binder, Expression[] args, Fallback fallback, Fallback fallbackInvoke) { 472private DynamicMetaObject BuildCallMethodWithResult(string methodName, DynamicMetaObjectBinder binder, Expression[] args, DynamicMetaObject fallbackResult, Fallback fallbackInvoke) { 484var result = Expression.Parameter(typeof(object), null); 485ParameterExpression callArgs = methodName != "TryBinaryOperation" ? Expression.Parameter(typeof(object[]), null) : Expression.Parameter(typeof(object), null); 494var convert = Expression.Convert(resultMO.Expression, binder.ReturnType); 507Expression condition; 510condition = Expression.TypeIs(resultMO.Expression, binder.ReturnType); 513condition = Expression.OrElse( 514Expression.Equal(resultMO.Expression, Expression.Constant(null)), 515Expression.TypeIs(resultMO.Expression, binder.ReturnType)); 518var checkedConvert = Expression.Condition( 521Expression.Throw( 522Expression.New(typeof(InvalidCastException).GetConstructor(new Type[]{typeof(string)}), 523Expression.Call( 525Expression.Constant(convertFailed), 526Expression.NewArrayInit(typeof(object), 527Expression.Condition( 528Expression.Equal(resultMO.Expression, Expression.Constant(null)), 529Expression.Constant("null"), 530Expression.Call( 555Expression.Block( 557methodName != "TryBinaryOperation" ? Expression.Assign(callArgs, Expression.NewArrayInit(typeof(object), callArgsValue)) : Expression.Assign(callArgs, callArgsValue[0]), 558Expression.Condition( 559Expression.Call( 569Expression.Block( 570methodName != "TryBinaryOperation" ? ReferenceArgAssign(callArgs, args) : Expression.Empty(), 592private DynamicMetaObject CallMethodReturnLast(string methodName, DynamicMetaObjectBinder binder, Expression[] args, Expression value, Fallback fallback) { 607var result = Expression.Parameter(typeof(object), null); 608var callArgs = Expression.Parameter(typeof(object[]), null); 612Expression.Block( 614Expression.Assign(callArgs, Expression.NewArrayInit(typeof(object), callArgsValue)), 615Expression.Condition( 616Expression.Call( 623Expression.Assign(result, Expression.Convert(value, typeof(object))) 626Expression.Block( 658private DynamicMetaObject CallMethodNoResult(string methodName, DynamicMetaObjectBinder binder, Expression[] args, Fallback fallback) { 664var callArgs = Expression.Parameter(typeof(object[]), null); 672Expression.Block( 674Expression.Assign(callArgs, Expression.NewArrayInit(typeof(object), callArgsValue)), 675Expression.Condition( 676Expression.Call( 686Expression.Block( 688Expression.Empty() 738private Expression GetLimitedSelf() { 744return Expression.Convert(Expression, typeof(DynamicObject)); 777public virtual DynamicMetaObject GetMetaObject(Expression parameter) {
Microsoft\Scripting\Actions\ExpandoObject.cs (35)
270DynamicMetaObject IDynamicMetaObjectProvider.GetMetaObject(Expression parameter) { 687public MetaExpando(Expression expression, ExpandoObject value) 697ParameterExpression value = Expression.Parameter(typeof(object), "value"); 699Expression tryGetValue = Expression.Call( 702Expression.Constant(klass, typeof(object)), 703Expression.Constant(index), 704Expression.Constant(name), 705Expression.Constant(ignoreCase), 715Expression.Block( 717Expression.Condition( 766Expression.Call( 769Expression.Constant(klass, typeof(object)), 770Expression.Constant(index), 771Expression.Convert(value.Expression, typeof(object)), 772Expression.Constant(binder.Name), 773Expression.Constant(binder.IgnoreCase) 785Expression tryDelete = Expression.Call( 788Expression.Constant(Value.Class, typeof(object)), 789Expression.Constant(index), 790Expression.Constant(binder.Name), 791Expression.Constant(binder.IgnoreCase) 796Expression.IfThen(Expression.Not(tryDelete), fallback.Expression), 820Expression ifTestSucceeds = succeeds.Expression; 828ifTestSucceeds = Expression.Block( 829Expression.Call( 833Expression.Constant(originalClass, typeof(object)), 834Expression.Constant(klass, typeof(object)) 841Expression.Condition( 842Expression.Call( 846Expression.Constant(originalClass ?? klass, typeof(object)) 886private Expression GetLimitedSelf() { 890return Expression.Convert(Expression, LimitType);
Microsoft\Scripting\Actions\IDynamicMetaObjectProvider.cs (1)
36DynamicMetaObject GetMetaObject(Expression parameter);
Microsoft\Scripting\Ast\BinaryExpression.cs (454)
37[DebuggerTypeProxy(typeof(Expression.BinaryExpressionProxy))] 40private readonly Expression _left; 41private readonly Expression _right; 43internal BinaryExpression(Expression left, Expression right) { 82public Expression Right { 89public Expression Left { 118public BinaryExpression Update(Expression left, LambdaExpression conversion, Expression right) { 124return Expression.ReferenceEqual(left, right); 126return Expression.ReferenceNotEqual(left, right); 129return Expression.MakeBinary(NodeType, left, right, IsLiftedToNull, Method, conversion); 139public override Expression Reduce() { 195private Expression ReduceVariable() { 200Expression r = Expression.MakeBinary(op, _left, _right, false, Method); 203r = Expression.Invoke(conversion, r); 205return Expression.Assign(_left, r); 208private Expression ReduceMember() { 224Expression e1 = Expression.Assign(temp1, member.Expression); 228Expression e2 = Expression.MakeBinary(op, Expression.MakeMemberAccess(temp1, member.Member), _right, false, Method); 231e2 = Expression.Invoke(conversion, e2); 234e2 = Expression.Assign(temp2, e2); 237Expression e3 = Expression.Assign(Expression.MakeMemberAccess(temp1, member.Member), temp2); 240Expression e4 = temp2; 242return Expression.Block( 249private Expression ReduceIndex() { 264var exprs = new List<Expression>(index.Arguments.Count + 3); 266var tempObj = Expression.Variable(index.Object.Type, "tempObj"); 268exprs.Add(Expression.Assign(tempObj, index.Object)); 270var tempArgs = new List<Expression>(index.Arguments.Count); 271foreach (var arg in index.Arguments) { 272var tempArg = Expression.Variable(arg.Type, "tempArg" + tempArgs.Count); 275exprs.Add(Expression.Assign(tempArg, arg)); 278var tempIndex = Expression.MakeIndex(tempObj, index.Indexer, tempArgs); 282Expression op = Expression.MakeBinary(binaryOp, tempIndex, _right, false, Method); 285op = Expression.Invoke(conversion, op); 287var tempValue = Expression.Variable(op.Type, "tempValue"); 289exprs.Add(Expression.Assign(tempValue, op)); 292exprs.Add(Expression.Assign(tempIndex, tempValue)); 294return Expression.Block(vars, exprs); 336protected internal override Expression Accept(ExpressionVisitor visitor) { 340internal static Expression Create(ExpressionType nodeType, Expression left, Expression right, Type type, MethodInfo method, LambdaExpression conversion) { 415internal Expression ReduceUserdefinedLifted() { 460internal LogicalBinaryExpression(ExpressionType nodeType, Expression left, Expression right) 476internal AssignBinaryExpression(Expression left, Expression right) 495internal CoalesceConversionBinaryExpression(Expression left, Expression right, LambdaExpression conversion) 519internal OpAssignMethodConversionBinaryExpression(ExpressionType nodeType, Expression left, Expression right, Type type, MethodInfo method, LambdaExpression conversion) 535internal SimpleBinaryExpression(ExpressionType nodeType, Expression left, Expression right, Type type) 555internal MethodBinaryExpression(ExpressionType nodeType, Expression left, Expression right, Type type, MethodInfo method) 572/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 573/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 577public static BinaryExpression Assign(Expression left, Expression right) { 591private static BinaryExpression GetUserDefinedBinaryOperator(ExpressionType binaryType, string name, Expression left, Expression right, bool liftToNull) { 614private static BinaryExpression GetMethodBasedBinaryOperator(ExpressionType binaryType, Expression left, Expression right, MethodInfo method, bool liftToNull) { 640private static BinaryExpression GetMethodBasedAssignOperator(ExpressionType binaryType, Expression left, Expression right, MethodInfo method, LambdaExpression conversion, bool liftToNull) { 656private static BinaryExpression GetUserDefinedBinaryOperatorOrThrow(ExpressionType binaryType, string name, Expression left, Expression right, bool liftToNull) { 667private static BinaryExpression GetUserDefinedAssignOperatorOrThrow(ExpressionType binaryType, string name, Expression left, Expression right, LambdaExpression conversion, bool liftToNull) { 743private static bool IsNullComparison(Expression left, Expression right) { 763private static bool IsNullConstant(Expression e) { 827public static BinaryExpression MakeBinary(ExpressionType binaryType, Expression left, Expression right) { 840public static BinaryExpression MakeBinary(ExpressionType binaryType, Expression left, Expression right, bool liftToNull, MethodInfo method) { 856public static BinaryExpression MakeBinary(ExpressionType binaryType, Expression left, Expression right, bool liftToNull, MethodInfo method, LambdaExpression conversion) { 947/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 948/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 951public static BinaryExpression Equal(Expression left, Expression right) { 958/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 959/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 965public static BinaryExpression Equal(Expression left, Expression right, bool liftToNull, MethodInfo method) { 977/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 978/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 982public static BinaryExpression ReferenceEqual(Expression left, Expression right) { 994/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 995/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 998public static BinaryExpression NotEqual(Expression left, Expression right) { 1005/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 1006/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 1012public static BinaryExpression NotEqual(Expression left, Expression right, bool liftToNull, MethodInfo method) { 1024/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 1025/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 1029public static BinaryExpression ReferenceNotEqual(Expression left, Expression right) { 1038private static BinaryExpression GetEqualityComparisonOperator(ExpressionType binaryType, string opName, Expression left, Expression right, bool liftToNull) { 1073/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 1074/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 1077public static BinaryExpression GreaterThan(Expression left, Expression right) { 1084/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 1085/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 1091public static BinaryExpression GreaterThan(Expression left, Expression right, bool liftToNull, MethodInfo method) { 1103/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 1104/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 1108public static BinaryExpression LessThan(Expression left, Expression right) { 1115/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 1116/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 1122public static BinaryExpression LessThan(Expression left, Expression right, bool liftToNull, MethodInfo method) { 1135/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 1136/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 1139public static BinaryExpression GreaterThanOrEqual(Expression left, Expression right) { 1146/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 1147/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 1153public static BinaryExpression GreaterThanOrEqual(Expression left, Expression right, bool liftToNull, MethodInfo method) { 1166/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 1167/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 1170public static BinaryExpression LessThanOrEqual(Expression left, Expression right) { 1177/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 1178/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 1184public static BinaryExpression LessThanOrEqual(Expression left, Expression right, bool liftToNull, MethodInfo method) { 1194private static BinaryExpression GetComparisonOperator(ExpressionType binaryType, string opName, Expression left, Expression right, bool liftToNull) { 1213/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 1214/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 1217public static BinaryExpression AndAlso(Expression left, Expression right) { 1224/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 1225/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 1230public static BinaryExpression AndAlso(Expression left, Expression right, MethodInfo method) { 1259/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 1260/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 1263public static BinaryExpression OrElse(Expression left, Expression right) { 1270/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 1271/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 1276public static BinaryExpression OrElse(Expression left, Expression right, MethodInfo method) { 1309/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 1310/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 1312public static BinaryExpression Coalesce(Expression left, Expression right) { 1320/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 1321/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 1325public static BinaryExpression Coalesce(Expression left, Expression right, LambdaExpression conversion) { 1391/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 1392/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 1395public static BinaryExpression Add(Expression left, Expression right) { 1402/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 1403/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 1408public static BinaryExpression Add(Expression left, Expression right, MethodInfo method) { 1424/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 1425/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 1428public static BinaryExpression AddAssign(Expression left, Expression right) { 1435/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 1436/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 1441public static BinaryExpression AddAssign(Expression left, Expression right, MethodInfo method) { 1448/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 1449/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 1457public static BinaryExpression AddAssign(Expression left, Expression right, MethodInfo method, LambdaExpression conversion) { 1474private static void ValidateOpAssignConversionLambda(LambdaExpression conversion, Expression left, MethodInfo method, ExpressionType nodeType) { 1498/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 1499/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 1504public static BinaryExpression AddAssignChecked(Expression left, Expression right) { 1511/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 1512/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 1517public static BinaryExpression AddAssignChecked(Expression left, Expression right, MethodInfo method) { 1524/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 1525/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 1532public static BinaryExpression AddAssignChecked(Expression left, Expression right, MethodInfo method, LambdaExpression conversion) { 1554/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 1555/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 1558public static BinaryExpression AddChecked(Expression left, Expression right) { 1565/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 1566/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 1571public static BinaryExpression AddChecked(Expression left, Expression right, MethodInfo method) { 1587/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 1588/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 1591public static BinaryExpression Subtract(Expression left, Expression right) { 1598/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 1599/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 1604public static BinaryExpression Subtract(Expression left, Expression right, MethodInfo method) { 1620/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 1621/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 1624public static BinaryExpression SubtractAssign(Expression left, Expression right) { 1631/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 1632/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 1637public static BinaryExpression SubtractAssign(Expression left, Expression right, MethodInfo method) { 1644/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 1645/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 1652public static BinaryExpression SubtractAssign(Expression left, Expression right, MethodInfo method, LambdaExpression conversion) { 1673/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 1674/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 1677public static BinaryExpression SubtractAssignChecked(Expression left, Expression right) { 1684/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 1685/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 1690public static BinaryExpression SubtractAssignChecked(Expression left, Expression right, MethodInfo method) { 1697/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 1698/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 1705public static BinaryExpression SubtractAssignChecked(Expression left, Expression right, MethodInfo method, LambdaExpression conversion) { 1726/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 1727/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 1730public static BinaryExpression SubtractChecked(Expression left, Expression right) { 1737/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 1738/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 1743public static BinaryExpression SubtractChecked(Expression left, Expression right, MethodInfo method) { 1759/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 1760/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 1763public static BinaryExpression Divide(Expression left, Expression right) { 1770/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 1771/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 1776public static BinaryExpression Divide(Expression left, Expression right, MethodInfo method) { 1792/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 1793/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 1796public static BinaryExpression DivideAssign(Expression left, Expression right) { 1803/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 1804/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 1809public static BinaryExpression DivideAssign(Expression left, Expression right, MethodInfo method) { 1816/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 1817/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 1824public static BinaryExpression DivideAssign(Expression left, Expression right, MethodInfo method, LambdaExpression conversion) { 1845/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 1846/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 1849public static BinaryExpression Modulo(Expression left, Expression right) { 1856/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 1857/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 1862public static BinaryExpression Modulo(Expression left, Expression right, MethodInfo method) { 1878/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 1879/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 1882public static BinaryExpression ModuloAssign(Expression left, Expression right) { 1889/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 1890/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 1895public static BinaryExpression ModuloAssign(Expression left, Expression right, MethodInfo method) { 1902/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 1903/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 1910public static BinaryExpression ModuloAssign(Expression left, Expression right, MethodInfo method, LambdaExpression conversion) { 1931/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 1932/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 1935public static BinaryExpression Multiply(Expression left, Expression right) { 1942/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 1943/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 1948public static BinaryExpression Multiply(Expression left, Expression right, MethodInfo method) { 1964/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 1965/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 1968public static BinaryExpression MultiplyAssign(Expression left, Expression right) { 1975/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 1976/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 1981public static BinaryExpression MultiplyAssign(Expression left, Expression right, MethodInfo method) { 1988/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 1989/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 1996public static BinaryExpression MultiplyAssign(Expression left, Expression right, MethodInfo method, LambdaExpression conversion) { 2017/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 2018/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 2021public static BinaryExpression MultiplyAssignChecked(Expression left, Expression right) { 2028/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 2029/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 2034public static BinaryExpression MultiplyAssignChecked(Expression left, Expression right, MethodInfo method) { 2041/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 2042/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 2049public static BinaryExpression MultiplyAssignChecked(Expression left, Expression right, MethodInfo method, LambdaExpression conversion) { 2070/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 2071/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 2074public static BinaryExpression MultiplyChecked(Expression left, Expression right) { 2081/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 2082/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 2087public static BinaryExpression MultiplyChecked(Expression left, Expression right, MethodInfo method) { 2116/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 2117/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 2120public static BinaryExpression LeftShift(Expression left, Expression right) { 2127/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 2128/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 2133public static BinaryExpression LeftShift(Expression left, Expression right, MethodInfo method) { 2150/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 2151/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 2154public static BinaryExpression LeftShiftAssign(Expression left, Expression right) { 2161/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 2162/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 2167public static BinaryExpression LeftShiftAssign(Expression left, Expression right, MethodInfo method) { 2174/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 2175/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 2182public static BinaryExpression LeftShiftAssign(Expression left, Expression right, MethodInfo method, LambdaExpression conversion) { 2204/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 2205/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 2208public static BinaryExpression RightShift(Expression left, Expression right) { 2215/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 2216/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 2221public static BinaryExpression RightShift(Expression left, Expression right, MethodInfo method) { 2238/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 2239/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 2242public static BinaryExpression RightShiftAssign(Expression left, Expression right) { 2249/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 2250/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 2255public static BinaryExpression RightShiftAssign(Expression left, Expression right, MethodInfo method) { 2262/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 2263/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 2270public static BinaryExpression RightShiftAssign(Expression left, Expression right, MethodInfo method, LambdaExpression conversion) { 2292/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 2293/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 2296public static BinaryExpression And(Expression left, Expression right) { 2303/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 2304/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 2309public static BinaryExpression And(Expression left, Expression right, MethodInfo method) { 2325/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 2326/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 2329public static BinaryExpression AndAssign(Expression left, Expression right) { 2336/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 2337/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 2342public static BinaryExpression AndAssign(Expression left, Expression right, MethodInfo method) { 2349/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 2350/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 2357public static BinaryExpression AndAssign(Expression left, Expression right, MethodInfo method, LambdaExpression conversion) { 2378/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 2379/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 2382public static BinaryExpression Or(Expression left, Expression right) { 2389/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 2390/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 2395public static BinaryExpression Or(Expression left, Expression right, MethodInfo method) { 2411/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 2412/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 2415public static BinaryExpression OrAssign(Expression left, Expression right) { 2422/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 2423/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 2428public static BinaryExpression OrAssign(Expression left, Expression right, MethodInfo method) { 2435/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 2436/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 2443public static BinaryExpression OrAssign(Expression left, Expression right, MethodInfo method, LambdaExpression conversion) { 2463/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 2464/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 2467public static BinaryExpression ExclusiveOr(Expression left, Expression right) { 2474/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 2475/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 2480public static BinaryExpression ExclusiveOr(Expression left, Expression right, MethodInfo method) { 2495/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 2496/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 2499public static BinaryExpression ExclusiveOrAssign(Expression left, Expression right) { 2506/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 2507/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 2512public static BinaryExpression ExclusiveOrAssign(Expression left, Expression right, MethodInfo method) { 2519/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 2520/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 2527public static BinaryExpression ExclusiveOrAssign(Expression left, Expression right, MethodInfo method, LambdaExpression conversion) { 2547/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 2548/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 2551public static BinaryExpression Power(Expression left, Expression right) { 2558/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 2559/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 2564public static BinaryExpression Power(Expression left, Expression right, MethodInfo method) { 2581/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 2582/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 2585public static BinaryExpression PowerAssign(Expression left, Expression right) { 2592/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 2593/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 2598public static BinaryExpression PowerAssign(Expression left, Expression right, MethodInfo method) { 2605/// <param name="left">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Left"/> property equal to.</param> 2606/// <param name="right">An <see cref="Expression"/> to set the <see cref="P:BinaryExpression.Right"/> property equal to.</param> 2613public static BinaryExpression PowerAssign(Expression left, Expression right, MethodInfo method, LambdaExpression conversion) { 2638public static BinaryExpression ArrayIndex(Expression array, Expression index) {
Microsoft\Scripting\Ast\BlockExpression.cs (103)
36[DebuggerTypeProxy(typeof(Expression.BlockExpressionProxy))] 42public ReadOnlyCollection<Expression> Expressions { 58public Expression Result { 71protected internal override Expression Accept(ExpressionVisitor visitor) { 85/// Gets the static type of the expression that this <see cref="Expression" /> represents. 100public BlockExpression Update(IEnumerable<ParameterExpression> variables, IEnumerable<Expression> expressions) { 105return Expression.Block(Type, variables, expressions); 108internal virtual Expression GetExpression(int index) { 118internal virtual ReadOnlyCollection<Expression> GetOrMakeExpressions() { 146internal virtual BlockExpression Rewrite(ReadOnlyCollection<ParameterExpression> variables, Expression[] args) { 163internal static ReadOnlyCollection<Expression> ReturnReadOnlyExpressions(BlockExpression provider, ref object collection) { 164Expression tObj = collection as Expression; 169new ReadOnlyCollection<Expression>(new BlockExpressionList(provider, tObj)), 175return (ReadOnlyCollection<Expression>)collection; 183private readonly Expression _arg1; // storage for the 2nd argument. 185internal Block2(Expression arg0, Expression arg1) { 190internal override Expression GetExpression(int index) { 192case 0: return ReturnObject<Expression>(_arg0); 204internal override ReadOnlyCollection<Expression> GetOrMakeExpressions() { 208internal override BlockExpression Rewrite(ReadOnlyCollection<ParameterExpression> variables, Expression[] args) { 218private readonly Expression _arg1, _arg2; // storage for the 2nd and 3rd arguments. 220internal Block3(Expression arg0, Expression arg1, Expression arg2) { 226internal override Expression GetExpression(int index) { 228case 0: return ReturnObject<Expression>(_arg0); 241internal override ReadOnlyCollection<Expression> GetOrMakeExpressions() { 245internal override BlockExpression Rewrite(ReadOnlyCollection<ParameterExpression> variables, Expression[] args) { 255private readonly Expression _arg1, _arg2, _arg3; // storarg for the 2nd, 3rd, and 4th arguments. 257internal Block4(Expression arg0, Expression arg1, Expression arg2, Expression arg3) { 264internal override Expression GetExpression(int index) { 266case 0: return ReturnObject<Expression>(_arg0); 280internal override ReadOnlyCollection<Expression> GetOrMakeExpressions() { 284internal override BlockExpression Rewrite(ReadOnlyCollection<ParameterExpression> variables, Expression[] args) { 294private readonly Expression _arg1, _arg2, _arg3, _arg4; // storage for the 2nd - 5th args. 296internal Block5(Expression arg0, Expression arg1, Expression arg2, Expression arg3, Expression arg4) { 304internal override Expression GetExpression(int index) { 306case 0: return ReturnObject<Expression>(_arg0); 321internal override ReadOnlyCollection<Expression> GetOrMakeExpressions() { 325internal override BlockExpression Rewrite(ReadOnlyCollection<ParameterExpression> variables, Expression[] args) { 334private IList<Expression> _expressions; // either the original IList<Expression> or a ReadOnlyCollection if the user has accessed it. 336internal BlockN(IList<Expression> expressions) { 342internal override Expression GetExpression(int index) { 354internal override ReadOnlyCollection<Expression> GetOrMakeExpressions() { 358internal override BlockExpression Rewrite(ReadOnlyCollection<ParameterExpression> variables, Expression[] args) { 407internal Scope1(IList<ParameterExpression> variables, Expression body) 412internal override Expression GetExpression(int index) { 414case 0: return ReturnObject<Expression>(_body); 425internal override ReadOnlyCollection<Expression> GetOrMakeExpressions() { 429internal override BlockExpression Rewrite(ReadOnlyCollection<ParameterExpression> variables, Expression[] args) { 438private IList<Expression> _body; 440internal ScopeN(IList<ParameterExpression> variables, IList<Expression> body) 445internal override Expression GetExpression(int index) { 455internal override ReadOnlyCollection<Expression> GetOrMakeExpressions() { 459internal override BlockExpression Rewrite(ReadOnlyCollection<ParameterExpression> variables, Expression[] args) { 470internal ScopeWithType(IList<ParameterExpression> variables, IList<Expression> expressions, Type type) 479internal override BlockExpression Rewrite(ReadOnlyCollection<ParameterExpression> variables, Expression[] args) { 501internal class BlockExpressionList : IList<Expression> { 503private readonly Expression _arg0; 505internal BlockExpressionList(BlockExpression provider, Expression arg0) { 512public int IndexOf(Expression item) { 526public void Insert(int index, Expression item) { 534public Expression this[int index] { 551public void Add(Expression item) { 559public bool Contains(Expression item) { 563public void CopyTo(Expression[] array, int arrayIndex) { 578public bool Remove(Expression item) { 586public IEnumerator<Expression> GetEnumerator() { 619public static BlockExpression Block(Expression arg0, Expression arg1) { 632public static BlockExpression Block(Expression arg0, Expression arg1, Expression arg2) { 647public static BlockExpression Block(Expression arg0, Expression arg1, Expression arg2, Expression arg3) { 664public static BlockExpression Block(Expression arg0, Expression arg1, Expression arg2, Expression arg3, Expression arg4) { 679public static BlockExpression Block(params Expression[] expressions) { 699public static BlockExpression Block(IEnumerable<Expression> expressions) { 709public static BlockExpression Block(Type type, params Expression[] expressions) { 711return Block(type, (IEnumerable<Expression>)expressions); 720public static BlockExpression Block(Type type, IEnumerable<Expression> expressions) { 730public static BlockExpression Block(IEnumerable<ParameterExpression> variables, params Expression[] expressions) { 731return Block(variables, (IEnumerable<Expression>)expressions); 741public static BlockExpression Block(Type type, IEnumerable<ParameterExpression> variables, params Expression[] expressions) { 742return Block(type, variables, (IEnumerable<Expression>)expressions); 751public static BlockExpression Block(IEnumerable<ParameterExpression> variables, IEnumerable<Expression> expressions) { 767public static BlockExpression Block(Type type, IEnumerable<ParameterExpression> variables, IEnumerable<Expression> expressions) { 778Expression last = expressionList.Last();
Microsoft\Scripting\Ast\CatchBlock.cs (18)
35[DebuggerTypeProxy(typeof(Expression.CatchBlockProxy))] 40private readonly Expression _body; 41private readonly Expression _filter; 43internal CatchBlock(Type test, ParameterExpression variable, Expression body, Expression filter) { 67public Expression Body { 74public Expression Filter { 97public CatchBlock Update(ParameterExpression variable, Expression filter, Expression body) { 101return Expression.MakeCatchBlock(Test, variable, body, filter); 114public static CatchBlock Catch(Type type, Expression body) { 124public static CatchBlock Catch(ParameterExpression variable, Expression body) { 137public static CatchBlock Catch(Type type, Expression body, Expression filter) { 149public static CatchBlock Catch(ParameterExpression variable, Expression body, Expression filter) { 163public static CatchBlock MakeCatchBlock(Type type, ParameterExpression variable, Expression body, Expression filter) {
Microsoft\Scripting\Ast\ConditionalExpression.cs (50)
34[DebuggerTypeProxy(typeof(Expression.ConditionalExpressionProxy))] 37private readonly Expression _test; 38private readonly Expression _true; 40internal ConditionalExpression(Expression test, Expression ifTrue) { 45internal static ConditionalExpression Make(Expression test, Expression ifTrue, Expression ifFalse, Type type) { 65/// Gets the static type of the expression that this <see cref="Expression" /> represents. 75public Expression Test { 81public Expression IfTrue { 87public Expression IfFalse { 91internal virtual Expression GetFalse() { 92return Expression.Empty(); 98protected internal override Expression Accept(ExpressionVisitor visitor) { 111public ConditionalExpression Update(Expression test, Expression ifTrue, Expression ifFalse) { 115return Expression.Condition(test, ifTrue, ifFalse, Type); 120private readonly Expression _false; 122internal FullConditionalExpression(Expression test, Expression ifTrue, Expression ifFalse) 127internal override Expression GetFalse() { 135internal FullConditionalExpressionWithType(Expression test, Expression ifTrue, Expression ifFalse, Type type) 150/// <param name="test">An <see cref="Expression"/> to set the <see cref="P:ConditionalExpression.Test"/> property equal to.</param> 151/// <param name="ifTrue">An <see cref="Expression"/> to set the <see cref="P:ConditionalExpression.IfTrue"/> property equal to.</param> 152/// <param name="ifFalse">An <see cref="Expression"/> to set the <see cref="P:ConditionalExpression.IfFalse"/> property equal to.</param> 156public static ConditionalExpression Condition(Expression test, Expression ifTrue, Expression ifFalse) { 175/// <param name="test">An <see cref="Expression"/> to set the <see cref="P:ConditionalExpression.Test"/> property equal to.</param> 176/// <param name="ifTrue">An <see cref="Expression"/> to set the <see cref="P:ConditionalExpression.IfTrue"/> property equal to.</param> 177/// <param name="ifFalse">An <see cref="Expression"/> to set the <see cref="P:ConditionalExpression.IfFalse"/> property equal to.</param> 185public static ConditionalExpression Condition(Expression test, Expression ifTrue, Expression ifFalse, Type type) { 208/// <param name="test">An <see cref="Expression"/> to set the <see cref="P:ConditionalExpression.Test"/> property equal to.</param> 209/// <param name="ifTrue">An <see cref="Expression"/> to set the <see cref="P:ConditionalExpression.IfTrue"/> property equal to.</param> 214public static ConditionalExpression IfThen(Expression test, Expression ifTrue) { 215return Condition(test, ifTrue, Expression.Empty(), typeof(void)); 221/// <param name="test">An <see cref="Expression"/> to set the <see cref="P:ConditionalExpression.Test"/> property equal to.</param> 222/// <param name="ifTrue">An <see cref="Expression"/> to set the <see cref="P:ConditionalExpression.IfTrue"/> property equal to.</param> 223/// <param name="ifFalse">An <see cref="Expression"/> to set the <see cref="P:ConditionalExpression.IfFalse"/> property equal to.</param> 228public static ConditionalExpression IfThenElse(Expression test, Expression ifTrue, Expression ifFalse) {
Microsoft\Scripting\Ast\ConstantExpression.cs (3)
34[DebuggerTypeProxy(typeof(Expression.ConstantExpressionProxy))] 54/// Gets the static type of the expression that this <see cref="Expression" /> represents. 84protected internal override Expression Accept(ExpressionVisitor visitor) {
Microsoft\Scripting\Ast\DebugInfoExpression.cs (7)
36[DebuggerTypeProxy(typeof(Expression.DebugInfoExpressionProxy))] 47/// Gets the static type of the expression that this <see cref="Expression" /> represents. (Inherited from <see cref="Expression"/>.) 55/// Returns the node type of this <see cref="Expression" />. (Inherited from <see cref="Expression" />.) 107protected internal override Expression Accept(ExpressionVisitor visitor) { 155protected internal override Expression Accept(ExpressionVisitor visitor) {
Microsoft\Scripting\Ast\DebugViewWriter.cs (40)
135internal static void WriteTo(Expression node, TextWriter writer) { 142private void WriteTo(Expression node) { 265private void VisitExpressions<T>(char open, IList<T> expressions) where T : Expression { 269private void VisitExpressions<T>(char open, char separator, IList<T> expressions) where T : Expression { 320protected internal override Expression VisitDynamic(DynamicExpression node) { 328protected internal override Expression VisitBinary(BinaryExpression node) { 415protected internal override Expression VisitParameter(ParameterExpression node) { 430protected internal override Expression VisitLambda<T>(Expression<T> node) { 452private static bool IsSimpleExpression(Expression node) { 461protected internal override Expression VisitConditional(ConditionalExpression node) { 484protected internal override Expression VisitConstant(ConstantExpression node) { 540protected internal override Expression VisitRuntimeVariables(RuntimeVariablesExpression node) { 547private void OutMember(Expression node, Expression instance, MemberInfo member) { 557protected internal override Expression VisitMember(MemberExpression node) { 562protected internal override Expression VisitInvocation(InvocationExpression node) { 570private static bool NeedsParentheses(Expression parent, Expression child) { 643private static int GetOperatorPrecedence(Expression node) { 762private void ParenthesizedVisit(Expression parent, Expression nodeToVisit) { 772protected internal override Expression VisitMethodCall(MethodCallExpression node) { 787protected internal override Expression VisitNewArray(NewArrayExpression node) { 800protected internal override Expression VisitNew(NewExpression node) { 815protected internal override Expression VisitListInit(ListInitExpression node) { 842protected internal override Expression VisitMemberInit(MemberInitExpression node) { 848protected internal override Expression VisitTypeBinary(TypeBinaryExpression node) { 863protected internal override Expression VisitUnary(UnaryExpression node) { 946protected internal override Expression VisitBlock(BlockExpression node) { 963protected internal override Expression VisitDefault(DefaultExpression node) { 968protected internal override Expression VisitLabel(LabelExpression node) { 978protected internal override Expression VisitGoto(GotoExpression node) { 987protected internal override Expression VisitLoop(LoopExpression node) { 1005foreach (var test in node.TestValues) { 1017protected internal override Expression VisitSwitch(SwitchExpression node) { 1051protected internal override Expression VisitTry(TryExpression node) { 1073protected internal override Expression VisitIndex(IndexExpression node) { 1084protected internal override Expression VisitExtension(Expression node) { 1098protected internal override Expression VisitDebugInfo(DebugInfoExpression node) {
Microsoft\Scripting\Ast\DefaultExpression.cs (3)
28[DebuggerTypeProxy(typeof(Expression.DefaultExpressionProxy))] 38/// Gets the static type of the expression that this <see cref="Expression" /> represents. 57protected internal override Expression Accept(ExpressionVisitor visitor) {
Microsoft\Scripting\Ast\DynamicExpression.cs (137)
39[DebuggerTypeProxy(typeof(Expression.DynamicExpressionProxy))] 52internal static DynamicExpression Make(Type returnType, Type delegateType, CallSiteBinder binder, ReadOnlyCollection<Expression> arguments) { 60internal static DynamicExpression Make(Type returnType, Type delegateType, CallSiteBinder binder, Expression arg0) { 68internal static DynamicExpression Make(Type returnType, Type delegateType, CallSiteBinder binder, Expression arg0, Expression arg1) { 76internal static DynamicExpression Make(Type returnType, Type delegateType, CallSiteBinder binder, Expression arg0, Expression arg1, Expression arg2) { 84internal static DynamicExpression Make(Type returnType, Type delegateType, CallSiteBinder binder, Expression arg0, Expression arg1, Expression arg2, Expression arg3) { 93/// Gets the static type of the expression that this <see cref="Expression" /> represents. 127public ReadOnlyCollection<Expression> Arguments { 131internal virtual ReadOnlyCollection<Expression> GetOrMakeArguments() { 138protected internal override Expression Accept(ExpressionVisitor visitor) { 149internal virtual DynamicExpression Rewrite(Expression[] args) { 160public DynamicExpression Update(IEnumerable<Expression> arguments) { 165return Expression.MakeDynamic(DelegateType, Binder, arguments); 170Expression IArgumentProvider.GetArgument(int index) { 198public static new DynamicExpression Dynamic(CallSiteBinder binder, Type returnType, params Expression[] arguments) { 199return Expression.Dynamic(binder, returnType, arguments); 218public static new DynamicExpression Dynamic(CallSiteBinder binder, Type returnType, IEnumerable<Expression> arguments) { 219return Expression.Dynamic(binder, returnType, arguments); 238public static new DynamicExpression Dynamic(CallSiteBinder binder, Type returnType, Expression arg0) { 239return Expression.Dynamic(binder, returnType, arg0); 259public static new DynamicExpression Dynamic(CallSiteBinder binder, Type returnType, Expression arg0, Expression arg1) { 260return Expression.Dynamic(binder, returnType, arg0, arg1); 281public static new DynamicExpression Dynamic(CallSiteBinder binder, Type returnType, Expression arg0, Expression arg1, Expression arg2) { 282return Expression.Dynamic(binder, returnType, arg0, arg1, arg2); 304public static new DynamicExpression Dynamic(CallSiteBinder binder, Type returnType, Expression arg0, Expression arg1, Expression arg2, Expression arg3) { 305return Expression.Dynamic(binder, returnType, arg0, arg1, arg2, arg3); 321public static new DynamicExpression MakeDynamic(Type delegateType, CallSiteBinder binder, IEnumerable<Expression> arguments) { 322return Expression.MakeDynamic(delegateType, binder, arguments); 338public static new DynamicExpression MakeDynamic(Type delegateType, CallSiteBinder binder, params Expression[] arguments) { 339return Expression.MakeDynamic(delegateType, binder, arguments); 355public static new DynamicExpression MakeDynamic(Type delegateType, CallSiteBinder binder, Expression arg0) { 356return Expression.MakeDynamic(delegateType, binder, arg0); 373public static new DynamicExpression MakeDynamic(Type delegateType, CallSiteBinder binder, Expression arg0, Expression arg1) { 374return Expression.MakeDynamic(delegateType, binder, arg0, arg1); 392public static new DynamicExpression MakeDynamic(Type delegateType, CallSiteBinder binder, Expression arg0, Expression arg1, Expression arg2) { 393return Expression.MakeDynamic(delegateType, binder, arg0, arg1, arg2); 412public static new DynamicExpression MakeDynamic(Type delegateType, CallSiteBinder binder, Expression arg0, Expression arg1, Expression arg2, Expression arg3) { 413return Expression.MakeDynamic(delegateType, binder, arg0, arg1, arg2, arg3); 418Expression IDynamicExpression.Rewrite(Expression[] args) 432private IList<Expression> _arguments; // storage for the original IList or readonly collection. See IArgumentProvider for more info. 434internal DynamicExpressionN(Type delegateType, CallSiteBinder binder, IList<Expression> arguments) 439Expression IArgumentProvider.GetArgument(int index) { 449internal override ReadOnlyCollection<Expression> GetOrMakeArguments() { 453internal override DynamicExpression Rewrite(Expression[] args) { 456return Expression.MakeDynamic(DelegateType, Binder, args); 463internal TypedDynamicExpressionN(Type returnType, Type delegateType, CallSiteBinder binder, IList<Expression> arguments) 477internal DynamicExpression1(Type delegateType, CallSiteBinder binder, Expression arg0) 482Expression IArgumentProvider.GetArgument(int index) { 484case 0: return ReturnObject<Expression>(_arg0); 495internal override ReadOnlyCollection<Expression> GetOrMakeArguments() { 499internal override DynamicExpression Rewrite(Expression[] args) { 502return Expression.MakeDynamic(DelegateType, Binder, args[0]); 509internal TypedDynamicExpression1(Type retType, Type delegateType, CallSiteBinder binder, Expression arg0) 521private readonly Expression _arg1; // storage for the 2nd argument 523internal DynamicExpression2(Type delegateType, CallSiteBinder binder, Expression arg0, Expression arg1) 529Expression IArgumentProvider.GetArgument(int index) { 531case 0: return ReturnObject<Expression>(_arg0); 543internal override ReadOnlyCollection<Expression> GetOrMakeArguments() { 547internal override DynamicExpression Rewrite(Expression[] args) { 550return Expression.MakeDynamic(DelegateType, Binder, args[0], args[1]); 557internal TypedDynamicExpression2(Type retType, Type delegateType, CallSiteBinder binder, Expression arg0, Expression arg1) 569private readonly Expression _arg1, _arg2; // storage for the 2nd & 3rd arguments 571internal DynamicExpression3(Type delegateType, CallSiteBinder binder, Expression arg0, Expression arg1, Expression arg2) 578Expression IArgumentProvider.GetArgument(int index) { 580case 0: return ReturnObject<Expression>(_arg0); 593internal override ReadOnlyCollection<Expression> GetOrMakeArguments() { 597internal override DynamicExpression Rewrite(Expression[] args) { 600return Expression.MakeDynamic(DelegateType, Binder, args[0], args[1], args[2]); 607internal TypedDynamicExpression3(Type retType, Type delegateType, CallSiteBinder binder, Expression arg0, Expression arg1, Expression arg2) 619private readonly Expression _arg1, _arg2, _arg3; // storage for the 2nd - 4th arguments 621internal DynamicExpression4(Type delegateType, CallSiteBinder binder, Expression arg0, Expression arg1, Expression arg2, Expression arg3) 629Expression IArgumentProvider.GetArgument(int index) { 631case 0: return ReturnObject<Expression>(_arg0); 645internal override ReadOnlyCollection<Expression> GetOrMakeArguments() { 649internal override DynamicExpression Rewrite(Expression[] args) { 652return Expression.MakeDynamic(DelegateType, Binder, args[0], args[1], args[2], args[3]); 659internal TypedDynamicExpression4(Type retType, Type delegateType, CallSiteBinder binder, Expression arg0, Expression arg1, Expression arg2, Expression arg3) 686public static DynamicExpression MakeDynamic(Type delegateType, CallSiteBinder binder, params Expression[] arguments) { 687return MakeDynamic(delegateType, binder, (IEnumerable<Expression>)arguments); 703public static DynamicExpression MakeDynamic(Type delegateType, CallSiteBinder binder, IEnumerable<Expression> arguments) { 729public static DynamicExpression MakeDynamic(Type delegateType, CallSiteBinder binder, Expression arg0) { 758public static DynamicExpression MakeDynamic(Type delegateType, CallSiteBinder binder, Expression arg0, Expression arg1) { 790public static DynamicExpression MakeDynamic(Type delegateType, CallSiteBinder binder, Expression arg0, Expression arg1, Expression arg2) { 825public static DynamicExpression MakeDynamic(Type delegateType, CallSiteBinder binder, Expression arg0, Expression arg1, Expression arg2, Expression arg3) { 869public static DynamicExpression Dynamic(CallSiteBinder binder, Type returnType, params Expression[] arguments) { 870return Dynamic(binder, returnType, (IEnumerable<Expression>)arguments); 889public static DynamicExpression Dynamic(CallSiteBinder binder, Type returnType, Expression arg0) { 926public static DynamicExpression Dynamic(CallSiteBinder binder, Type returnType, Expression arg0, Expression arg1) { 968public static DynamicExpression Dynamic(CallSiteBinder binder, Type returnType, Expression arg0, Expression arg1, Expression arg2) { 1015public static DynamicExpression Dynamic(CallSiteBinder binder, Type returnType, Expression arg0, Expression arg1, Expression arg2, Expression arg3) { 1063public static DynamicExpression Dynamic(CallSiteBinder binder, Type returnType, IEnumerable<Expression> arguments) { 1072private static DynamicExpression MakeDynamic(CallSiteBinder binder, Type returnType, ReadOnlyCollection<Expression> args) { 1076Expression arg = args[i]; 1095private static void ValidateDynamicArgument(Expression arg) {
Microsoft\Scripting\Ast\ElementInit.cs (10)
37private ReadOnlyCollection<Expression> _arguments; 39internal ElementInit(MethodInfo addMethod, ReadOnlyCollection<Expression> arguments) { 53public ReadOnlyCollection<Expression> Arguments { 57Expression IArgumentProvider.GetArgument(int index) { 82public ElementInit Update(IEnumerable<Expression> arguments) { 86return Expression.ElementInit(AddMethod, arguments); 98public static ElementInit ElementInit(MethodInfo addMethod, params Expression[] arguments) { 99return ElementInit(addMethod, arguments as IEnumerable<Expression>); 106/// <param name="arguments">An <see cref="IEnumerable{T}"/> containing <see cref="Expression"/> elements to initialize the list.</param> 108public static ElementInit ElementInit(MethodInfo addMethod, IEnumerable<Expression> arguments) {
Microsoft\Scripting\Ast\Expression.cs (27)
41private delegate LambdaExpression LambdaFactory(Expression body, string name, bool tailCall, ReadOnlyCollection<ParameterExpression> parameters); 67private static ConditionalWeakTable<Expression, ExtensionInfo> _legacyCtorSupportTable; 70/// Constructs a new instance of <see cref="Expression"/>. 72/// <param name="nodeType">The <see ctype="ExpressionType"/> of the <see cref="Expression"/>.</param> 73/// <param name="type">The <see cref="Type"/> of the <see cref="Expression"/>.</param> 80new ConditionalWeakTable<Expression, ExtensionInfo>(), 90/// Constructs a new instance of <see cref="Expression"/>. 96/// The <see cref="ExpressionType"/> of the <see cref="Expression"/>. 113/// The <see cref="Type"/> of the value represented by this <see cref="Expression"/>. 143public virtual Expression Reduce() { 160protected internal virtual Expression VisitChildren(ExpressionVisitor visitor) { 179protected internal virtual Expression Accept(ExpressionVisitor visitor) { 193public Expression ReduceAndCheck() { 196var newNode = Reduce(); 210public Expression ReduceExtensions() { 211var node = this; 297internal static ReadOnlyCollection<Expression> ReturnReadOnly(IArgumentProvider provider, ref object collection) { 298Expression tObj = collection as Expression; 303new ReadOnlyCollection<Expression>(new ListArgumentProvider(provider, tObj)), 309return (ReadOnlyCollection<Expression>)collection; 338private static void RequiresCanRead(Expression expression, string paramName) { 364private static void RequiresCanRead(IEnumerable<Expression> items, string paramName) { 367IList<Expression> listItems = items as IList<Expression>; 375foreach (var i in items) { 380private static void RequiresCanWrite(Expression expression, string paramName) {
Microsoft\Scripting\Ast\Expression.DebuggerProxy.cs (32)
45public Expression Left { get { return _node.Left; } } 48public Expression Right { get { return _node.Right; } } 61public ReadOnlyCollection<Expression> Expressions { get { return _node.Expressions; } } 63public Expression Result { get { return _node.Result; } } 75public Expression Body { get { return _node.Body; } } 76public Expression Filter { get { return _node.Filter; } } 90public Expression IfFalse { get { return _node.IfFalse; } } 91public Expression IfTrue { get { return _node.IfTrue; } } 93public Expression Test { get { return _node.Test; } } 150public ReadOnlyCollection<Expression> Arguments { get { return _node.Arguments; } } 172public Expression Value { get { return _node.Value; } } 182public ReadOnlyCollection<Expression> Arguments { get { return _node.Arguments; } } 187public Expression Object { get { return _node.Object; } } 198public ReadOnlyCollection<Expression> Arguments { get { return _node.Arguments; } } 201public Expression Expression { get { return _node.Expression; } } 215public Expression DefaultValue { get { return _node.DefaultValue; } } 228public Expression Body { get { return _node.Body; } } 261public Expression Body { get { return _node.Body; } } 279public Expression Expression { get { return _node.Expression; } } 307public ReadOnlyCollection<Expression> Arguments { get { return _node.Arguments; } } 312public Expression Object { get { return _node.Object; } } 325public ReadOnlyCollection<Expression> Expressions { get { return _node.Expressions; } } 337public ReadOnlyCollection<Expression> Arguments { get { return _node.Arguments; } } 382public Expression Body { get { return _node.Body; } } 383public ReadOnlyCollection<Expression> TestValues { get { return _node.TestValues; } } 397public Expression DefaultBody { get { return _node.DefaultBody; } } 399public Expression SwitchValue { get { return _node.SwitchValue; } } 410public Expression Body { get { return _node.Body; } } 413public Expression Fault { get { return _node.Fault; } } 414public Expression Finally { get { return _node.Finally; } } 429public Expression Expression { get { return _node.Expression; } } 448public Expression Operand { get { return _node.Operand; } }
Microsoft\Scripting\Ast\ExpressionStringBuilder.cs (33)
118internal static string ExpressionToString(Expression node) { 198private void VisitExpressions<T>(char open, IList<T> expressions, char close) where T : Expression { 202private void VisitExpressions<T>(char open, IList<T> expressions, char close, string seperator) where T : Expression { 218protected internal override Expression VisitDynamic(DynamicExpression node) { 225protected internal override Expression VisitBinary(BinaryExpression node) { 328protected internal override Expression VisitParameter(ParameterExpression node) { 347protected internal override Expression VisitLambda<T>(Expression<T> node) { 360protected internal override Expression VisitListInit(ListInitExpression node) { 373protected internal override Expression VisitConditional(ConditionalExpression node) { 384protected internal override Expression VisitConstant(ConstantExpression node) { 404protected internal override Expression VisitDebugInfo(DebugInfoExpression node) { 418protected internal override Expression VisitRuntimeVariables(RuntimeVariablesExpression node) { 424private void OutMember(Expression instance, MemberInfo member) { 434protected internal override Expression VisitMember(MemberExpression node) { 439protected internal override Expression VisitMemberInit(MemberInitExpression node) { 502protected internal override Expression VisitInvocation(InvocationExpression node) { 517protected internal override Expression VisitMethodCall(MethodCallExpression node) { 519Expression ob = node.Object; 541protected internal override Expression VisitNewArray(NewArrayExpression node) { 577protected internal override Expression VisitNew(NewExpression node) { 605protected internal override Expression VisitTypeBinary(TypeBinaryExpression node) { 622protected internal override Expression VisitUnary(UnaryExpression node) { 691protected internal override Expression VisitBlock(BlockExpression node) { 702protected internal override Expression VisitDefault(DefaultExpression node) { 709protected internal override Expression VisitLabel(LabelExpression node) { 716protected internal override Expression VisitGoto(GotoExpression node) { 727protected internal override Expression VisitLoop(LoopExpression node) { 739protected internal override Expression VisitSwitch(SwitchExpression node) { 756protected internal override Expression VisitTry(TryExpression node) { 761protected internal override Expression VisitIndex(IndexExpression node) { 777protected internal override Expression VisitExtension(Expression node) { 781if (toString.DeclaringType != typeof(Expression)) {
Microsoft\Scripting\Ast\ExpressionVisitor.cs (56)
55public virtual Expression Visit(Expression node) { 68public ReadOnlyCollection<Expression> Visit(ReadOnlyCollection<Expression> nodes) { 69Expression[] newNodes = null; 71Expression node = Visit(nodes[i]); 76newNodes = new Expression[n]; 86return new TrueReadOnlyCollection<Expression>(newNodes); 89internal Expression[] VisitArguments(IArgumentProvider nodes) { 90Expression[] newNodes = null; 92Expression curNode = nodes.GetArgument(i); 93Expression node = Visit(curNode); 98newNodes = new Expression[n]; 146public T VisitAndConvert<T>(T node, string callerName) where T : Expression { 166public ReadOnlyCollection<T> VisitAndConvert<T>(ReadOnlyCollection<T> nodes, string callerName) where T : Expression { 196protected internal virtual Expression VisitBinary(BinaryExpression node) { 214protected internal virtual Expression VisitBlock(BlockExpression node) { 216Expression[] nodes = null; 218Expression oldNode = node.GetExpression(i); 219Expression newNode = Visit(oldNode); 223nodes = new Expression[count]; 249protected internal virtual Expression VisitConditional(ConditionalExpression node) { 259protected internal virtual Expression VisitConstant(ConstantExpression node) { 269protected internal virtual Expression VisitDebugInfo(DebugInfoExpression node) { 279protected internal virtual Expression VisitDynamic(DynamicExpression node) { 280Expression[] a = VisitArguments((IArgumentProvider)node); 294protected internal virtual Expression VisitDefault(DefaultExpression node) { 306/// If it is not overridden, this method will call <see cref="Expression.VisitChildren" />, 308/// <see cref="Expression.VisitChildren" /> will try to reduce the node. 310protected internal virtual Expression VisitExtension(Expression node) { 320protected internal virtual Expression VisitGoto(GotoExpression node) { 330protected internal virtual Expression VisitInvocation(InvocationExpression node) { 331Expression e = Visit(node.Expression); 332Expression[] a = VisitArguments(node); 356protected internal virtual Expression VisitLabel(LabelExpression node) { 367protected internal virtual Expression VisitLambda<T>(Expression<T> node) { 377protected internal virtual Expression VisitLoop(LoopExpression node) { 387protected internal virtual Expression VisitMember(MemberExpression node) { 397protected internal virtual Expression VisitIndex(IndexExpression node) { 398Expression o = Visit(node.Object); 399Expression[] a = VisitArguments(node); 413protected internal virtual Expression VisitMethodCall(MethodCallExpression node) { 414Expression o = Visit(node.Object); 415Expression[] a = VisitArguments((IArgumentProvider)node); 429protected internal virtual Expression VisitNewArray(NewArrayExpression node) { 440protected internal virtual Expression VisitNew(NewExpression node) { 450protected internal virtual Expression VisitParameter(ParameterExpression node) { 460protected internal virtual Expression VisitRuntimeVariables(RuntimeVariablesExpression node) { 480protected internal virtual Expression VisitSwitch(SwitchExpression node) { 507protected internal virtual Expression VisitTry(TryExpression node) { 522protected internal virtual Expression VisitTypeBinary(TypeBinaryExpression node) { 532protected internal virtual Expression VisitUnary(UnaryExpression node) { 542protected internal virtual Expression VisitMemberInit(MemberInitExpression node) { 555protected internal virtual Expression VisitListInit(ListInitExpression node) { 707protected internal override Expression VisitDynamic(DynamicExpression node) {
Microsoft\Scripting\Ast\GotoExpression.cs (20)
55[DebuggerTypeProxy(typeof(Expression.GotoExpressionProxy))] 59private readonly Expression _value; 63internal GotoExpression(GotoExpressionKind kind, LabelTarget target, Expression value, Type type) { 71/// Gets the static type of the expression that this <see cref="Expression" /> represents. (Inherited from <see cref="Expression"/>.) 79/// Returns the node type of this <see cref="Expression" />. (Inherited from <see cref="Expression" />.) 90public Expression Value { 111protected internal override Expression Accept(ExpressionVisitor visitor) { 123public GotoExpression Update(LabelTarget target, Expression value) { 127return Expression.MakeGoto(Kind, target, value, Type); 154public static GotoExpression Break(LabelTarget target, Expression value) { 185public static GotoExpression Break(LabelTarget target, Expression value, Type type) { 255public static GotoExpression Return(LabelTarget target, Expression value) { 272public static GotoExpression Return(LabelTarget target, Expression value, Type type) { 314public static GotoExpression Goto(LabelTarget target, Expression value) { 331public static GotoExpression Goto(LabelTarget target, Expression value, Type type) { 349public static GotoExpression MakeGoto(GotoExpressionKind kind, LabelTarget target, Expression value, Type type) { 354private static void ValidateGoto(LabelTarget target, ref Expression value, string targetParameter, string valueParameter) { 364private static void ValidateGotoType(Type expectedType, ref Expression value, string paramName) {
Microsoft\Scripting\Ast\IArgumentProvider.cs (2)
59Expression GetArgument(int index); 66internal static T[] Map<T>(this IArgumentProvider collection, Func<Expression, T> select) {
Microsoft\Scripting\Ast\IDynamicExpression.cs (2)
42Expression Rewrite(Expression[] args);
Microsoft\Scripting\Ast\IndexExpression.cs (53)
38[DebuggerTypeProxy(typeof(Expression.IndexExpressionProxy))] 41private readonly Expression _instance; 43private IList<Expression> _arguments; 46Expression instance, 48IList<Expression> arguments) { 61/// Returns the node type of this <see cref="Expression" />. (Inherited from <see cref="Expression" />.) 69/// Gets the static type of the expression that this <see cref="Expression" /> represents. (Inherited from <see cref="Expression"/>.) 84public Expression Object { 98public ReadOnlyCollection<Expression> Arguments { 110public IndexExpression Update(Expression @object, IEnumerable<Expression> arguments) { 114return Expression.MakeIndex(@object, Indexer, arguments); 117Expression IArgumentProvider.GetArgument(int index) { 130protected internal override Expression Accept(ExpressionVisitor visitor) { 134internal Expression Rewrite(Expression instance, Expression[] arguments) { 138return Expression.MakeIndex(instance, _indexer, arguments ?? _arguments); 148/// <param name="indexer">An <see cref="Expression"/> representing the property to index.</param> 151public static IndexExpression MakeIndex(Expression instance, PropertyInfo indexer, IEnumerable<Expression> arguments) { 169public static IndexExpression ArrayAccess(Expression array, params Expression[] indexes) { 170return ArrayAccess(array, (IEnumerable<Expression>)indexes); 181public static IndexExpression ArrayAccess(Expression array, IEnumerable<Expression> indexes) { 194foreach (Expression e in indexList) { 212/// <param name="arguments">An array of <see cref="Expression"/> objects that are used to index the property.</param> 214public static IndexExpression Property(Expression instance, string propertyName, params Expression[] arguments) { 226private static PropertyInfo FindInstanceProperty(Type type, string propertyName, Expression[] arguments) { 244private static string GetArgTypesString(Expression[] arguments) { 259private static PropertyInfo FindProperty(Type type, string propertyName, Expression[] arguments, BindingFlags flags) { 275private static int FindBestProperty(IEnumerable<PropertyInfo> properties, Expression[] args, out PropertyInfo property) { 292private static bool IsCompatible(PropertyInfo pi, Expression[] args) { 330/// <param name="arguments">An array of <see cref="Expression"/> objects that are used to index the property.</param> 332public static IndexExpression Property(Expression instance, PropertyInfo indexer, params Expression[] arguments) { 333return Property(instance, indexer, (IEnumerable<Expression>)arguments); 341/// <param name="arguments">An <see cref="IEnumerable{T}"/> of <see cref="Expression"/> objects that are used to index the property.</param> 343public static IndexExpression Property(Expression instance, PropertyInfo indexer, IEnumerable<Expression> arguments) { 354private static void ValidateIndexedProperty(Expression instance, PropertyInfo property, ref ReadOnlyCollection<Expression> argList) { 400private static void ValidateAccessor(Expression instance, MethodInfo method, ParameterInfo[] indexes, ref ReadOnlyCollection<Expression> arguments) { 416private static void ValidateAccessorArgumentTypes(MethodInfo method, ParameterInfo[] indexes, ref ReadOnlyCollection<Expression> arguments) { 421Expression[] newArgs = null; 423Expression arg = arguments[i]; 437newArgs = new Expression[arguments.Count]; 447arguments = new TrueReadOnlyCollection<Expression>(newArgs);
Microsoft\Scripting\Ast\InvocationExpression.cs (21)
36[DebuggerTypeProxy(typeof(Expression.InvocationExpressionProxy))] 39private IList<Expression> _arguments; 40private readonly Expression _lambda; 43internal InvocationExpression(Expression lambda, IList<Expression> arguments, Type returnType) { 69public Expression Expression { 76public ReadOnlyCollection<Expression> Arguments { 88public InvocationExpression Update(Expression expression, IEnumerable<Expression> arguments) { 93return Expression.Invoke(expression, arguments); 96Expression IArgumentProvider.GetArgument(int index) { 109protected internal override Expression Accept(ExpressionVisitor visitor) { 113internal InvocationExpression Rewrite(Expression lambda, Expression[] arguments) { 117return Expression.Invoke(lambda, arguments ?? _arguments); 153public static InvocationExpression Invoke(Expression expression, params Expression[] arguments) { 154return Invoke(expression, (IEnumerable<Expression>)arguments); 179public static InvocationExpression Invoke(Expression expression, IEnumerable<Expression> arguments) { 192internal static MethodInfo GetInvokeMethod(Expression expression) {
Microsoft\Scripting\Ast\LabelExpression.cs (13)
25/// Represents a label, which can be placed in any <see cref="Expression"/> context. If 31[DebuggerTypeProxy(typeof(Expression.LabelExpressionProxy))] 34private readonly Expression _defaultValue; 37internal LabelExpression(LabelTarget label, Expression defaultValue) { 43/// Gets the static type of the expression that this <see cref="Expression" /> represents. (Inherited from <see cref="Expression"/>.) 51/// Returns the node type of this <see cref="Expression" />. (Inherited from <see cref="Expression" />.) 69public Expression DefaultValue { 76protected internal override Expression Accept(ExpressionVisitor visitor) { 88public LabelExpression Update(LabelTarget target, Expression defaultValue) { 92return Expression.Label(target, defaultValue); 112public static LabelExpression Label(LabelTarget target, Expression defaultValue) {
Microsoft\Scripting\Ast\LambdaExpression.cs (51)
45[DebuggerTypeProxy(typeof(Expression.LambdaExpressionProxy))] 49private readonly Expression _body; 57Expression body, 72/// Gets the static type of the expression that this <see cref="Expression" /> represents. (Inherited from <see cref="Expression"/>.) 80/// Returns the node type of this <see cref="Expression" />. (Inherited from <see cref="Expression" />.) 105public Expression Body { 191internal Expression(Expression body, string name, bool tailCall, ReadOnlyCollection<ParameterExpression> parameters) 226public Expression<TDelegate> Update(Expression body, IEnumerable<ParameterExpression> parameters) { 230return Expression.Lambda<TDelegate>(body, Name, TailCall, parameters); 236protected internal override Expression Accept(ExpressionVisitor visitor) { 244internal static LambdaExpression Create(Expression body, string name, bool tailCall, ReadOnlyCollection<ParameterExpression> parameters) { 256internal static LambdaExpression CreateLambda(Type delegateType, Expression body, string name, bool tailCall, ReadOnlyCollection<ParameterExpression> parameters) { 286/// <param name="body">An <see cref="Expression"/> to set the <see cref="P:Body"/> property equal to. </param> 289public static Expression<TDelegate> Lambda<TDelegate>(Expression body, params ParameterExpression[] parameters) { 297/// <param name="body">An <see cref="Expression"/> to set the <see cref="P:Body"/> property equal to. </param> 301public static Expression<TDelegate> Lambda<TDelegate>(Expression body, bool tailCall, params ParameterExpression[] parameters) { 309/// <param name="body">An <see cref="Expression"/> to set the <see cref="P:Body"/> property equal to. </param> 312public static Expression<TDelegate> Lambda<TDelegate>(Expression body, IEnumerable<ParameterExpression> parameters) { 320/// <param name="body">An <see cref="Expression"/> to set the <see cref="P:Body"/> property equal to. </param> 324public static Expression<TDelegate> Lambda<TDelegate>(Expression body, bool tailCall, IEnumerable<ParameterExpression> parameters) { 332/// <param name="body">An <see cref="Expression"/> to set the <see cref="P:Body"/> property equal to. </param> 336public static Expression<TDelegate> Lambda<TDelegate>(Expression body, String name, IEnumerable<ParameterExpression> parameters) { 344/// <param name="body">An <see cref="Expression"/> to set the <see cref="P:Body"/> property equal to. </param> 349public static Expression<TDelegate> Lambda<TDelegate>(Expression body, String name, bool tailCall, IEnumerable<ParameterExpression> parameters) { 359/// <param name="body">An <see cref="Expression"/> to set the <see cref="P:Body"/> property equal to. </param> 362public static LambdaExpression Lambda(Expression body, params ParameterExpression[] parameters) { 369/// <param name="body">An <see cref="Expression"/> to set the <see cref="P:Body"/> property equal to. </param> 373public static LambdaExpression Lambda(Expression body, bool tailCall, params ParameterExpression[] parameters) { 380/// <param name="body">An <see cref="Expression"/> to set the <see cref="P:Body"/> property equal to. </param> 383public static LambdaExpression Lambda(Expression body, IEnumerable<ParameterExpression> parameters) { 390/// <param name="body">An <see cref="Expression"/> to set the <see cref="P:Body"/> property equal to. </param> 394public static LambdaExpression Lambda(Expression body, bool tailCall, IEnumerable<ParameterExpression> parameters) { 401/// <param name="body">An <see cref="Expression"/> to set the <see cref="P:Body"/> property equal to. </param> 405public static LambdaExpression Lambda(Type delegateType, Expression body, params ParameterExpression[] parameters) { 412/// <param name="body">An <see cref="Expression"/> to set the <see cref="P:Body"/> property equal to. </param> 417public static LambdaExpression Lambda(Type delegateType, Expression body, bool tailCall, params ParameterExpression[] parameters) { 424/// <param name="body">An <see cref="Expression"/> to set the <see cref="P:Body"/> property equal to. </param> 428public static LambdaExpression Lambda(Type delegateType, Expression body, IEnumerable<ParameterExpression> parameters) { 435/// <param name="body">An <see cref="Expression"/> to set the <see cref="P:Body"/> property equal to. </param> 440public static LambdaExpression Lambda(Type delegateType, Expression body, bool tailCall, IEnumerable<ParameterExpression> parameters) { 447/// <param name="body">An <see cref="Expression"/> to set the <see cref="P:Body"/> property equal to. </param> 451public static LambdaExpression Lambda(Expression body, string name, IEnumerable<ParameterExpression> parameters) { 458/// <param name="body">An <see cref="Expression"/> to set the <see cref="P:Body"/> property equal to. </param> 463public static LambdaExpression Lambda(Expression body, string name, bool tailCall, IEnumerable<ParameterExpression> parameters) { 492/// <param name="body">An <see cref="Expression"/> to set the <see cref="P:Body"/> property equal to. </param> 497public static LambdaExpression Lambda(Type delegateType, Expression body, string name, IEnumerable<ParameterExpression> parameters) { 508/// <param name="body">An <see cref="Expression"/> to set the <see cref="P:Body"/> property equal to. </param> 513public static LambdaExpression Lambda(Type delegateType, Expression body, string name, bool tailCall, IEnumerable<ParameterExpression> parameters) { 520private static void ValidateLambdaArgs(Type delegateType, ref Expression body, ReadOnlyCollection<ParameterExpression> parameters) {
Microsoft\Scripting\Ast\ListArgumentProvider.cs (11)
36class ListArgumentProvider : IList<Expression> { 38private readonly Expression _arg0; 40internal ListArgumentProvider(IArgumentProvider provider, Expression arg0) { 47public int IndexOf(Expression item) { 61public void Insert(int index, Expression item) { 69public Expression this[int index] { 86public void Add(Expression item) { 94public bool Contains(Expression item) { 98public void CopyTo(Expression[] array, int arrayIndex) { 113public bool Remove(Expression item) { 121public IEnumerator<Expression> GetEnumerator() {
Microsoft\Scripting\Ast\ListInitExpression.cs (19)
41[DebuggerTypeProxy(typeof(Expression.ListInitExpressionProxy))] 53/// Returns the node type of this <see cref="Expression"/>. (Inherited from <see cref="Expression" />.) 61/// Gets the static type of the expression that this <see cref="Expression" /> represents. (Inherited from <see cref="Expression"/>.) 94protected internal override Expression Accept(ExpressionVisitor visitor) { 105public override Expression Reduce() { 121return Expression.ListInit(newExpression, initializers); 131/// <param name="initializers">An array of <see cref="Expression"/> objects to use to populate the <see cref="ListInitExpression.Initializers"/> collection.</param> 133public static ListInitExpression ListInit(NewExpression newExpression, params Expression[] initializers) { 136return ListInit(newExpression, initializers as IEnumerable<Expression>); 145public static ListInitExpression ListInit(NewExpression newExpression, IEnumerable<Expression> initializers) { 154MethodInfo addMethod = FindMethod(newExpression.Type, "Add", null, new Expression[] { initializerlist[0] }, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); 163/// <param name="initializers">An array of <see cref="Expression"/> objects to use to populate the <see cref="ListInitExpression.Initializers"/> collection.</param> 165public static ListInitExpression ListInit(NewExpression newExpression, MethodInfo addMethod, params Expression[] initializers) { 167return ListInit(newExpression, initializers as IEnumerable<Expression>); 171return ListInit(newExpression, addMethod, initializers as IEnumerable<Expression>); 179/// <param name="initializers">An <see cref="IEnumerable{T}"/> that contains <see cref="Expression"/> objects to use to populate the Initializers collection.</param> 181public static ListInitExpression ListInit(NewExpression newExpression, MethodInfo addMethod, IEnumerable<Expression> initializers) {
Microsoft\Scripting\Ast\LoopExpression.cs (12)
33[DebuggerTypeProxy(typeof(Expression.LoopExpressionProxy))] 36private readonly Expression _body; 40internal LoopExpression(Expression body, LabelTarget @break, LabelTarget @continue) { 47/// Gets the static type of the expression that this <see cref="Expression" /> represents. 64/// Gets the <see cref="Expression"/> that is the body of the loop. 66public Expression Body { 87protected internal override Expression Accept(ExpressionVisitor visitor) { 100public LoopExpression Update(LabelTarget breakLabel, LabelTarget continueLabel, Expression body) { 104return Expression.Loop(body, breakLabel, continueLabel); 114public static LoopExpression Loop(Expression body) { 124public static LoopExpression Loop(Expression body, LabelTarget @break) { 135public static LoopExpression Loop(Expression body, LabelTarget @break, LabelTarget @continue) {
Microsoft\Scripting\Ast\MemberAssignment.cs (7)
33Expression _expression; 34internal MemberAssignment(MemberInfo member, Expression expression) 43public Expression Expression { 54public MemberAssignment Update(Expression expression) { 58return Expression.Bind(Member, expression); 70public static MemberAssignment Bind(MemberInfo member, Expression expression) { 87public static MemberAssignment Bind(MethodInfo propertyAccessor, Expression expression) {
Microsoft\Scripting\Ast\MemberExpression.cs (23)
35[DebuggerTypeProxy(typeof(Expression.MemberExpressionProxy))] 38private readonly Expression _expression; 50public Expression Expression { 55internal MemberExpression(Expression expression) { 60internal static MemberExpression Make(Expression expression, MemberInfo member) { 85protected internal override Expression Accept(ExpressionVisitor visitor) { 96public MemberExpression Update(Expression expression) { 100return Expression.MakeMemberAccess(expression, Member); 107public FieldExpression(Expression expression, FieldInfo member) 123public PropertyExpression(Expression expression, PropertyInfo member) 148public static MemberExpression Field(Expression expression, FieldInfo field) { 169public static MemberExpression Field(Expression expression, string fieldName) { 180return Expression.Field(expression, fi); 192public static MemberExpression Field(Expression expression, Type type, string fieldName) { 204return Expression.Field(expression, fi); 216public static MemberExpression Property(Expression expression, string propertyName) { 237public static MemberExpression Property(Expression expression, Type type, string propertyName) { 258public static MemberExpression Property(Expression expression, PropertyInfo property) { 285public static MemberExpression Property(Expression expression, MethodInfo propertyAccessor) { 329public static MemberExpression PropertyOrField(Expression expression, string propertyOrFieldName) { 354public static MemberExpression MakeMemberAccess(Expression expression, MemberInfo member) { 359return Expression.Field(expression, fi); 363return Expression.Property(expression, pi);
Microsoft\Scripting\Ast\MemberInitExpression.cs (27)
32[DebuggerTypeProxy(typeof(Expression.MemberInitExpressionProxy))] 44/// Gets the static type of the expression that this <see cref="Expression" /> represents. 84protected internal override Expression Accept(ExpressionVisitor visitor) { 95public override Expression Reduce() { 99internal static Expression ReduceMemberInit(Expression objExpression, ReadOnlyCollection<MemberBinding> bindings, bool keepOnStack) { 100var objVar = Expression.Variable(objExpression.Type, null); 102var block = new Expression[count + 2]; 103block[0] = Expression.Assign(objVar, objExpression); 107block[count + 1] = keepOnStack ? (Expression)objVar : Expression.Empty(); 108return Expression.Block(new TrueReadOnlyCollection<Expression>(block)); 111internal static Expression ReduceListInit(Expression listExpression, ReadOnlyCollection<ElementInit> initializers, bool keepOnStack) { 112var listVar = Expression.Variable(listExpression.Type, null); 114var block = new Expression[count + 2]; 115block[0] = Expression.Assign(listVar, listExpression); 118block[i + 1] = Expression.Call(listVar, element.AddMethod, element.Arguments); 120block[count + 1] = keepOnStack ? (Expression)listVar : Expression.Empty(); 121return Expression.Block(new TrueReadOnlyCollection<Expression>(block)); 124internal static Expression ReduceMemberBinding(ParameterExpression objVar, MemberBinding binding) { 125MemberExpression member = Expression.MakeMemberAccess(objVar, binding.Member); 128return Expression.Assign(member, ((MemberAssignment)binding).Expression); 149return Expression.MemberInit(newExpression, bindings);
Microsoft\Scripting\Ast\MemberListBinding.cs (1)
63return Expression.ListBind(Member, initializers);
Microsoft\Scripting\Ast\MemberMemberBinding.cs (1)
65return Expression.MemberBind(Member, bindings);
Microsoft\Scripting\Ast\MethodCallExpression.cs (210)
37[DebuggerTypeProxy(typeof(Expression.MethodCallExpressionProxy))] 47internal virtual Expression GetInstance() { 52/// Returns the node type of this <see cref="Expression" />. (Inherited from <see cref="Expression" />.) 60/// Gets the static type of the expression that this <see cref="Expression" /> represents. (Inherited from <see cref="Expression"/>.) 75/// Gets the <see cref="Expression" /> that represents the instance 78public Expression Object { 85public ReadOnlyCollection<Expression> Arguments { 97public MethodCallExpression Update(Expression @object, IEnumerable<Expression> arguments) { 101return Expression.Call(@object, Method, arguments); 104internal virtual ReadOnlyCollection<Expression> GetOrMakeArguments() { 111protected internal override Expression Accept(ExpressionVisitor visitor) { 123internal virtual MethodCallExpression Rewrite(Expression instance, IList<Expression> args) { 129Expression IArgumentProvider.GetArgument(int index) { 143private IList<Expression> _arguments; 145public MethodCallExpressionN(MethodInfo method, IList<Expression> args) 150Expression IArgumentProvider.GetArgument(int index) { 160internal override ReadOnlyCollection<Expression> GetOrMakeArguments() { 164internal override MethodCallExpression Rewrite(Expression instance, IList<Expression> args) { 168return Expression.Call(Method, args ?? _arguments); 173private IList<Expression> _arguments; 174private readonly Expression _instance; 176public InstanceMethodCallExpressionN(MethodInfo method, Expression instance, IList<Expression> args) 182Expression IArgumentProvider.GetArgument(int index) { 192internal override Expression GetInstance() { 196internal override ReadOnlyCollection<Expression> GetOrMakeArguments() { 200internal override MethodCallExpression Rewrite(Expression instance, IList<Expression> args) { 204return Expression.Call(instance, Method, args ?? _arguments); 211public MethodCallExpression1(MethodInfo method, Expression arg0) 216Expression IArgumentProvider.GetArgument(int index) { 218case 0: return ReturnObject<Expression>(_arg0); 229internal override ReadOnlyCollection<Expression> GetOrMakeArguments() { 233internal override MethodCallExpression Rewrite(Expression instance, IList<Expression> args) { 238return Expression.Call(Method, args[0]); 241return Expression.Call(Method, ReturnObject<Expression>(_arg0)); 247private readonly Expression _arg1; // storage for the 2nd arg 249public MethodCallExpression2(MethodInfo method, Expression arg0, Expression arg1) 255Expression IArgumentProvider.GetArgument(int index) { 257case 0: return ReturnObject<Expression>(_arg0); 269internal override ReadOnlyCollection<Expression> GetOrMakeArguments() { 273internal override MethodCallExpression Rewrite(Expression instance, IList<Expression> args) { 278return Expression.Call(Method, args[0], args[1]); 280return Expression.Call(Method, ReturnObject<Expression>(_arg0), _arg1); 286private readonly Expression _arg1, _arg2; // storage for the 2nd - 3rd args. 288public MethodCallExpression3(MethodInfo method, Expression arg0, Expression arg1, Expression arg2) 295Expression IArgumentProvider.GetArgument(int index) { 297case 0: return ReturnObject<Expression>(_arg0); 310internal override ReadOnlyCollection<Expression> GetOrMakeArguments() { 314internal override MethodCallExpression Rewrite(Expression instance, IList<Expression> args) { 319return Expression.Call(Method, args[0], args[1], args[2]); 321return Expression.Call(Method, ReturnObject<Expression>(_arg0), _arg1, _arg2); 327private readonly Expression _arg1, _arg2, _arg3; // storage for the 2nd - 4th args. 329public MethodCallExpression4(MethodInfo method, Expression arg0, Expression arg1, Expression arg2, Expression arg3) 337Expression IArgumentProvider.GetArgument(int index) { 339case 0: return ReturnObject<Expression>(_arg0); 353internal override ReadOnlyCollection<Expression> GetOrMakeArguments() { 357internal override MethodCallExpression Rewrite(Expression instance, IList<Expression> args) { 362return Expression.Call(Method, args[0], args[1], args[2], args[3]); 364return Expression.Call(Method, ReturnObject<Expression>(_arg0), _arg1, _arg2, _arg3); 370private readonly Expression _arg1, _arg2, _arg3, _arg4; // storage for the 2nd - 5th args. 372public MethodCallExpression5(MethodInfo method, Expression arg0, Expression arg1, Expression arg2, Expression arg3, Expression arg4) 381Expression IArgumentProvider.GetArgument(int index) { 383case 0: return ReturnObject<Expression>(_arg0); 398internal override ReadOnlyCollection<Expression> GetOrMakeArguments() { 402internal override MethodCallExpression Rewrite(Expression instance, IList<Expression> args) { 407return Expression.Call(Method, args[0], args[1], args[2], args[3], args[4]); 410return Expression.Call(Method, ReturnObject<Expression>(_arg0), _arg1, _arg2, _arg3, _arg4); 415private readonly Expression _instance; 417private readonly Expression _arg1; // storage for the 2nd argument 419public InstanceMethodCallExpression2(MethodInfo method, Expression instance, Expression arg0, Expression arg1) 428Expression IArgumentProvider.GetArgument(int index) { 430case 0: return ReturnObject<Expression>(_arg0); 442internal override Expression GetInstance() { 446internal override ReadOnlyCollection<Expression> GetOrMakeArguments() { 450internal override MethodCallExpression Rewrite(Expression instance, IList<Expression> args) { 455return Expression.Call(instance, Method, args[0], args[1]); 457return Expression.Call(instance, Method, ReturnObject<Expression>(_arg0), _arg1); 462private readonly Expression _instance; 464private readonly Expression _arg1, _arg2; // storage for the 2nd - 3rd argument 466public InstanceMethodCallExpression3(MethodInfo method, Expression instance, Expression arg0, Expression arg1, Expression arg2) 476Expression IArgumentProvider.GetArgument(int index) { 478case 0: return ReturnObject<Expression>(_arg0); 491internal override Expression GetInstance() { 495internal override ReadOnlyCollection<Expression> GetOrMakeArguments() { 499internal override MethodCallExpression Rewrite(Expression instance, IList<Expression> args) { 504return Expression.Call(instance, Method, args[0], args[1], args[2]); 506return Expression.Call(instance, Method, ReturnObject<Expression>(_arg0), _arg1, _arg2); 519///<param name="arg0">The <see cref="Expression" /> that represents the first argument.</param> 522public static MethodCallExpression Call(MethodInfo method, Expression arg0) { 538///<param name="arg0">The <see cref="Expression" /> that represents the first argument.</param> 539///<param name="arg1">The <see cref="Expression" /> that represents the second argument.</param> 542public static MethodCallExpression Call(MethodInfo method, Expression arg0, Expression arg1) { 560///<param name="arg0">The <see cref="Expression" /> that represents the first argument.</param> 561///<param name="arg1">The <see cref="Expression" /> that represents the second argument.</param> 562///<param name="arg2">The <see cref="Expression" /> that represents the third argument.</param> 565public static MethodCallExpression Call(MethodInfo method, Expression arg0, Expression arg1, Expression arg2) { 585///<param name="arg0">The <see cref="Expression" /> that represents the first argument.</param> 586///<param name="arg1">The <see cref="Expression" /> that represents the second argument.</param> 587///<param name="arg2">The <see cref="Expression" /> that represents the third argument.</param> 588///<param name="arg3">The <see cref="Expression" /> that represents the fourth argument.</param> 591public static MethodCallExpression Call(MethodInfo method, Expression arg0, Expression arg1, Expression arg2, Expression arg3) { 613///<param name="arg0">The <see cref="Expression" /> that represents the first argument.</param> 614///<param name="arg1">The <see cref="Expression" /> that represents the second argument.</param> 615///<param name="arg2">The <see cref="Expression" /> that represents the third argument.</param> 616///<param name="arg3">The <see cref="Expression" /> that represents the fourth argument.</param> 617///<param name="arg4">The <see cref="Expression" /> that represents the fifth argument.</param> 621public static MethodCallExpression Call(MethodInfo method, Expression arg0, Expression arg1, Expression arg2, Expression arg3, Expression arg4) { 646/// <param name="arguments">The array of one or more of <see cref="Expression" /> that represents the call arguments.</param> 648public static MethodCallExpression Call(MethodInfo method, params Expression[] arguments) { 656/// <param name="arguments">A collection of <see cref="Expression" /> that represents the call arguments.</param> 658public static MethodCallExpression Call(MethodInfo method, IEnumerable<Expression> arguments) { 665/// <param name="instance">An <see cref="Expression" /> that specifies the instance for an instance call. (pass null for a static (Shared in Visual Basic) method).</param> 668public static MethodCallExpression Call(Expression instance, MethodInfo method) { 669return Call(instance, method, EmptyReadOnlyCollection<Expression>.Instance); 675/// <param name="instance">An <see cref="Expression" /> that specifies the instance for an instance call. (pass null for a static (Shared in Visual Basic) method).</param> 677/// <param name="arguments">An array of one or more of <see cref="Expression" /> that represents the call arguments.</param> 679public static MethodCallExpression Call(Expression instance, MethodInfo method, params Expression[] arguments) { 680return Call(instance, method, (IEnumerable<Expression>)arguments); 686/// <param name="instance">An <see cref="Expression" /> that specifies the instance for an instance call. (pass null for a static (Shared in Visual Basic) method).</param> 688/// <param name="arg0">The <see cref="Expression" /> that represents the first argument.</param> 689/// <param name="arg1">The <see cref="Expression" /> that represents the second argument.</param> 691public static MethodCallExpression Call(Expression instance, MethodInfo method, Expression arg0, Expression arg1) { 713/// <param name="instance">An <see cref="Expression" /> that specifies the instance for an instance call. (pass null for a static (Shared in Visual Basic) method).</param> 715/// <param name="arg0">The <see cref="Expression" /> that represents the first argument.</param> 716/// <param name="arg1">The <see cref="Expression" /> that represents the second argument.</param> 717/// <param name="arg2">The <see cref="Expression" /> that represents the third argument.</param> 719public static MethodCallExpression Call(Expression instance, MethodInfo method, Expression arg0, Expression arg1, Expression arg2) { 751public static MethodCallExpression Call(Expression instance, string methodName, Type[] typeArguments, params Expression[] arguments) { 755arguments = new Expression[0]; 759return Expression.Call(instance, FindMethod(instance.Type, methodName, typeArguments, arguments, flags), arguments); 774public static MethodCallExpression Call(Type type, string methodName, Type[] typeArguments, params Expression[] arguments) { 778if (arguments == null) arguments = new Expression[] { }; 780return Expression.Call(null, FindMethod(type, methodName, typeArguments, arguments, flags), arguments); 792public static MethodCallExpression Call(Expression instance, MethodInfo method, IEnumerable<Expression> arguments) { 795ReadOnlyCollection<Expression> argList = arguments.ToReadOnly(); 808private static ParameterInfo[] ValidateMethodAndGetParameters(Expression instance, MethodInfo method) { 815private static void ValidateStaticOrInstanceMethod(Expression instance, MethodInfo method) { 834private static void ValidateArgumentTypes(MethodBase method, ExpressionType nodeKind, ref ReadOnlyCollection<Expression> arguments) { 841Expression[] newArgs = null; 843Expression arg = arguments[i]; 848newArgs = new Expression[arguments.Count]; 858arguments = new TrueReadOnlyCollection<Expression>(newArgs); 888private static Expression ValidateOneArgument(MethodBase method, ExpressionType nodeKind, Expression arg, ParameterInfo pi) { 915private static bool TryQuote(Type parameterType, ref Expression argument) { 925argument = Expression.Quote(argument); 931private static MethodInfo FindMethod(Type type, string methodName, Type[] typeArgs, Expression[] args, BindingFlags flags) { 953private static int FindBestMethod(IEnumerable<MethodInfo> methods, Type[] typeArgs, Expression[] args, out MethodInfo method) { 973private static bool IsCompatible(MethodBase m, Expression[] args) { 978Expression arg = args[i]; 1013public static MethodCallExpression ArrayIndex(Expression array, params Expression[] indexes) { 1014return ArrayIndex(array, (IEnumerable<Expression>)indexes); 1025public static MethodCallExpression ArrayIndex(Expression array, IEnumerable<Expression> indexes) { 1034ReadOnlyCollection<Expression> indexList = indexes.ToReadOnly(); 1039foreach (Expression e in indexList) {
Microsoft\Scripting\Ast\NewArrayExpression.cs (30)
37[DebuggerTypeProxy(typeof(Expression.NewArrayExpressionProxy))] 40private readonly ReadOnlyCollection<Expression> _expressions; 43internal NewArrayExpression(Type type, ReadOnlyCollection<Expression> expressions) { 48internal static NewArrayExpression Make(ExpressionType nodeType, Type type, ReadOnlyCollection<Expression> expressions) { 57/// Gets the static type of the expression that this <see cref="Expression" /> represents. (Inherited from <see cref="Expression"/>.) 67public ReadOnlyCollection<Expression> Expressions { 74protected internal override Expression Accept(ExpressionVisitor visitor) { 85public NewArrayExpression Update(IEnumerable<Expression> expressions) { 90return Expression.NewArrayInit(Type.GetElementType(), expressions); 92return Expression.NewArrayBounds(Type.GetElementType(), expressions); 97internal NewArrayInitExpression(Type type, ReadOnlyCollection<Expression> expressions) 103/// Returns the node type of this <see cref="Expression" />. (Inherited from <see cref="Expression" />.) 112internal NewArrayBoundsExpression(Type type, ReadOnlyCollection<Expression> expressions) 117/// Returns the node type of this <see cref="Expression" />. (Inherited from <see cref="Expression" />.) 136public static NewArrayExpression NewArrayInit(Type type, params Expression[] initializers) { 137return NewArrayInit(type, (IEnumerable<Expression>)initializers); 146public static NewArrayExpression NewArrayInit(Type type, IEnumerable<Expression> initializers) { 153ReadOnlyCollection<Expression> initializerList = initializers.ToReadOnly(); 155Expression[] newList = null; 157Expression expr = initializerList[i]; 165newList = new Expression[initializerList.Count]; 176initializerList = new TrueReadOnlyCollection<Expression>(newList); 193public static NewArrayExpression NewArrayBounds(Type type, params Expression[] bounds) { 194return NewArrayBounds(type, (IEnumerable<Expression>)bounds); 204public static NewArrayExpression NewArrayBounds(Type type, IEnumerable<Expression> bounds) { 212ReadOnlyCollection<Expression> boundsList = bounds.ToReadOnly(); 218Expression expr = boundsList[i];
Microsoft\Scripting\Ast\NewExpression.cs (30)
38[DebuggerTypeProxy(typeof(Expression.NewExpressionProxy))] 42private IList<Expression> _arguments; 45internal NewExpression(ConstructorInfo constructor, IList<Expression> arguments, ReadOnlyCollection<MemberInfo> members) { 52/// Gets the static type of the expression that this <see cref="Expression" /> represents. (Inherited from <see cref="Expression"/>.) 60/// Returns the node type of this <see cref="Expression" />. (Inherited from <see cref="Expression" />.) 77public ReadOnlyCollection<Expression> Arguments { 81Expression IArgumentProvider.GetArgument(int index) { 101protected internal override Expression Accept(ExpressionVisitor visitor) { 112public NewExpression Update(IEnumerable<Expression> arguments) { 117return Expression.New(Constructor, arguments, Members); 119return Expression.New(Constructor, arguments); 126internal NewValueTypeExpression(Type type, ReadOnlyCollection<Expression> arguments, ReadOnlyCollection<MemberInfo> members) 144return New(constructor, (IEnumerable<Expression>)null); 152/// <param name="arguments">An array of <see cref="Expression"/> objects to use to populate the Arguments collection.</param> 154public static NewExpression New(ConstructorInfo constructor, params Expression[] arguments) { 155return New(constructor, (IEnumerable<Expression>)arguments); 163/// <param name="arguments">An <see cref="IEnumerable{T}"/> of <see cref="Expression"/> objects to use to populate the Arguments collection.</param> 165public static NewExpression New(ConstructorInfo constructor, IEnumerable<Expression> arguments) { 180/// <param name="arguments">An <see cref="IEnumerable{T}"/> of <see cref="Expression"/> objects to use to populate the Arguments collection.</param> 183public static NewExpression New(ConstructorInfo constructor, IEnumerable<Expression> arguments, IEnumerable<MemberInfo> members) { 196/// <param name="arguments">An <see cref="IEnumerable{T}"/> of <see cref="Expression"/> objects to use to populate the Arguments collection.</param> 199public static NewExpression New(ConstructorInfo constructor, IEnumerable<Expression> arguments, params MemberInfo[] members) { 222return new NewValueTypeExpression(type, EmptyReadOnlyCollection<Expression>.Instance, null); 228private static void ValidateNewArgs(ConstructorInfo constructor, ref ReadOnlyCollection<Expression> arguments, ref ReadOnlyCollection<MemberInfo> members) { 237Expression[] newArguments = null; 240Expression arg = arguments[i]; 265newArguments = new Expression[arguments.Count]; 285arguments = new TrueReadOnlyCollection<Expression>(newArguments);
Microsoft\Scripting\Ast\ParameterExpression.cs (6)
34[DebuggerTypeProxy(typeof(Expression.ParameterExpressionProxy))] 85/// Gets the static type of the expression that this <see cref="Expression" /> represents. (Inherited from <see cref="Expression"/>.) 93/// Returns the node type of this <see cref="Expression" />. (Inherited from <see cref="Expression" />.) 123protected internal override Expression Accept(ExpressionVisitor visitor) {
Microsoft\Scripting\Ast\RuntimeVariablesExpression.cs (5)
34[DebuggerTypeProxy(typeof(Expression.RuntimeVariablesExpressionProxy))] 44/// Gets the static type of the expression that this <see cref="Expression" /> represents. 70protected internal override Expression Accept(ExpressionVisitor visitor) { 85return Expression.RuntimeVariables(variables); 110Expression v = vars[i];
Microsoft\Scripting\Ast\SwitchCase.cs (15)
31[DebuggerTypeProxy(typeof(Expression.SwitchCaseProxy))] 34private readonly ReadOnlyCollection<Expression> _testValues; 35private readonly Expression _body; 37internal SwitchCase(Expression body, ReadOnlyCollection<Expression> testValues) { 45public ReadOnlyCollection<Expression> TestValues { 52public Expression Body { 72public SwitchCase Update(IEnumerable<Expression> testValues, Expression body) { 76return Expression.SwitchCase(body, testValues); 87public static SwitchCase SwitchCase(Expression body, params Expression[] testValues) { 88return SwitchCase(body, (IEnumerable<Expression>)testValues); 97public static SwitchCase SwitchCase(Expression body, IEnumerable<Expression> testValues) {
Microsoft\Scripting\Ast\SwitchExpression.cs (25)
36[DebuggerTypeProxy(typeof(Expression.SwitchExpressionProxy))] 40private readonly Expression _switchValue; 42private readonly Expression _defaultBody; 45internal SwitchExpression(Type type, Expression switchValue, Expression defaultBody, MethodInfo comparison, ReadOnlyCollection<SwitchCase> cases) { 54/// Gets the static type of the expression that this <see cref="Expression" /> represents. 73public Expression SwitchValue { 87public Expression DefaultBody { 101protected internal override Expression Accept(ExpressionVisitor visitor) { 124public SwitchExpression Update(Expression switchValue, IEnumerable<SwitchCase> cases, Expression defaultBody) { 128return Expression.Switch(Type, switchValue, defaultBody, Comparison, cases); 139public static SwitchExpression Switch(Expression switchValue, params SwitchCase[] cases) { 150public static SwitchExpression Switch(Expression switchValue, Expression defaultBody, params SwitchCase[] cases) { 162public static SwitchExpression Switch(Expression switchValue, Expression defaultBody, MethodInfo comparison, params SwitchCase[] cases) { 175public static SwitchExpression Switch(Type type, Expression switchValue, Expression defaultBody, MethodInfo comparison, params SwitchCase[] cases) { 187public static SwitchExpression Switch(Expression switchValue, Expression defaultBody, MethodInfo comparison, IEnumerable<SwitchCase> cases) { 200public static SwitchExpression Switch(Type type, Expression switchValue, Expression defaultBody, MethodInfo comparison, IEnumerable<SwitchCase> cases) { 250var firstTestValue = caseList[0].TestValues[0]; 290private static void ValidateSwitchCaseType(Expression @case, bool customType, Type resultType, string parameterName) {
Microsoft\Scripting\Ast\TryExpression.cs (33)
42[DebuggerTypeProxy(typeof(Expression.TryExpressionProxy))] 46private readonly Expression _body; 48private readonly Expression _finally; 49private readonly Expression _fault; 51internal TryExpression(Type type, Expression body, Expression @finally, Expression fault, ReadOnlyCollection<CatchBlock> handlers) { 60/// Gets the static type of the expression that this <see cref="Expression" /> represents. (Inherited from <see cref="Expression"/>.) 68/// Returns the node type of this <see cref="Expression" />. (Inherited from <see cref="Expression" />.) 76/// Gets the <see cref="Expression"/> representing the body of the try block. 78public Expression Body { 90/// Gets the <see cref="Expression"/> representing the finally block. 92public Expression Finally { 97/// Gets the <see cref="Expression"/> representing the fault block. 99public Expression Fault { 106protected internal override Expression Accept(ExpressionVisitor visitor) { 120public TryExpression Update(Expression body, IEnumerable<CatchBlock> handlers, Expression @finally, Expression fault) { 124return Expression.MakeTry(Type, body, @finally, fault, handlers); 136public static TryExpression TryFault(Expression body, Expression fault) { 146public static TryExpression TryFinally(Expression body, Expression @finally) { 156public static TryExpression TryCatch(Expression body, params CatchBlock[] handlers) { 167public static TryExpression TryCatchFinally(Expression body, Expression @finally, params CatchBlock[] handlers) { 180public static TryExpression MakeTry(Type type, Expression body, Expression @finally, Expression fault, IEnumerable<CatchBlock> handlers) { 202private static void ValidateTryAndCatchHaveSameType(Type type, Expression tryBody, ReadOnlyCollection<CatchBlock> handlers) {
Microsoft\Scripting\Ast\TypeBinaryExpression.cs (42)
33[DebuggerTypeProxy(typeof(Expression.TypeBinaryExpressionProxy))] 36private readonly Expression _expression; 40internal TypeBinaryExpression(Expression expression, Type typeOperand, ExpressionType nodeKind) { 66public Expression Expression { 79internal Expression ReduceTypeEqual() { 85return Expression.Block(Expression, Expression.Constant(cType == _typeOperand.GetNonNullableType())); 97return Expression.NotEqual(Expression, Expression.Constant(null, Expression.Type)); 99return Expression.ReferenceNotEqual(Expression, Expression.Constant(null, Expression.Type)); 110parameter = Expression.Parameter(typeof(object)); 113var expression = Expression; 115expression = Expression.Convert(expression, typeof(object)); 118return Expression.Block( 120Expression.Assign(parameter, expression), 126private Expression ByValParameterTypeEqual(ParameterExpression value) { 127Expression getType = Expression.Call(value, typeof(object).GetMethod("GetType")); 135var temp = Expression.Parameter(typeof(Type)); 136getType = Expression.Block(new[] { temp }, Expression.Assign(temp, getType), temp); 142return Expression.AndAlso( 143Expression.ReferenceNotEqual(value, Expression.Constant(null)), 144Expression.ReferenceEqual( 146Expression.Constant(_typeOperand.GetNonNullableType(), typeof(Type)) 151private Expression ReduceConstantTypeEqual() { 155return Expression.Constant(false); 157return Expression.Constant(_typeOperand.GetNonNullableType() == ce.Value.GetType()); 166protected internal override Expression Accept(ExpressionVisitor visitor) { 177public TypeBinaryExpression Update(Expression expression) { 182return Expression.TypeIs(expression, TypeOperand); 184return Expression.TypeEqual(expression, TypeOperand); 192/// <param name="expression">An <see cref="Expression"/> to set the <see cref="Expression"/> property equal to.</param> 194/// <returns>A <see cref="TypeBinaryExpression"/> for which the <see cref="NodeType"/> property is equal to <see cref="TypeIs"/> and for which the <see cref="Expression"/> and <see cref="TypeBinaryExpression.TypeOperand"/> properties are set to the specified values.</returns> 195public static TypeBinaryExpression TypeIs(Expression expression, Type type) { 206/// <param name="expression">An <see cref="Expression"/> to set the <see cref="Expression"/> property equal to.</param> 208/// <returns>A <see cref="TypeBinaryExpression"/> for which the <see cref="NodeType"/> property is equal to <see cref="TypeEqual"/> and for which the <see cref="Expression"/> and <see cref="TypeBinaryExpression.TypeOperand"/> properties are set to the specified values.</returns> 209public static TypeBinaryExpression TypeEqual(Expression expression, Type type) {
Microsoft\Scripting\Ast\TypeUtils.cs (1)
685private static readonly Assembly _systemCore = typeof(Expression).Assembly;
Microsoft\Scripting\Ast\UnaryExpression.cs (73)
36[DebuggerTypeProxy(typeof(Expression.UnaryExpressionProxy))] 39private readonly Expression _operand; 44internal UnaryExpression(ExpressionType nodeType, Expression expression, Type type, MethodInfo method) { 52/// Gets the static type of the expression that this <see cref="Expression" /> represents. (Inherited from <see cref="Expression"/>.) 60/// Returns the node type of this <see cref="Expression" />. (Inherited from <see cref="Expression" />.) 71public Expression Operand { 115protected internal override Expression Accept(ExpressionVisitor visitor) { 142public override Expression Reduce() { 160private UnaryExpression FunctionalOp(Expression operand) { 170private Expression ReduceVariable() { 191private Expression ReduceMember() { 230private Expression ReduceIndex() { 246var block = new Expression[count + (prefix ? 2 : 4)]; 255var arg = index.Arguments[i - 1]; 260index = MakeIndex(temps[0], index.Indexer, new TrueReadOnlyCollection<Expression>(args)); 273return Block(new TrueReadOnlyCollection<ParameterExpression>(temps), new TrueReadOnlyCollection<Expression>(block)); 283public UnaryExpression Update(Expression operand) { 287return Expression.MakeUnary(NodeType, operand, Type, Method); 297/// <param name="operand">An <see cref="Expression"></see> that represents the operand.</param> 302public static UnaryExpression MakeUnary(ExpressionType unaryType, Expression operand, Type type) { 310/// <param name="operand">An <see cref="Expression"></see> that represents the operand.</param> 317public static UnaryExpression MakeUnary(ExpressionType unaryType, Expression operand, Type type, MethodInfo method) { 364private static UnaryExpression GetUserDefinedUnaryOperatorOrThrow(ExpressionType unaryType, string name, Expression operand) { 373private static UnaryExpression GetUserDefinedUnaryOperator(ExpressionType unaryType, string name, Expression operand) { 393private static UnaryExpression GetMethodBasedUnaryOperator(ExpressionType unaryType, Expression operand, MethodInfo method) { 413private static UnaryExpression GetUserDefinedCoercionOrThrow(ExpressionType coercionType, Expression expression, Type convertToType) { 421private static UnaryExpression GetUserDefinedCoercion(ExpressionType coercionType, Expression expression, Type convertToType) { 430private static UnaryExpression GetMethodBasedCoercionOperator(ExpressionType unaryType, Expression operand, Type convertToType, MethodInfo method) { 452/// <param name="expression">An <see cref="Expression"></see> to set the <see cref="P:UnaryExpression.Operand"></see> property equal to.</param> 456public static UnaryExpression Negate(Expression expression) { 463/// <param name="expression">An <see cref="Expression"></see> to set the <see cref="P:UnaryExpression.Operand"></see> property equal to.</param> 469public static UnaryExpression Negate(Expression expression, MethodInfo method) { 483/// <param name="expression">An <see cref="Expression"></see> to set the <see cref="UnaryExpression.Operand"></see> property equal to.</param> 484/// <returns>A <see cref="UnaryExpression"></see> that has the <see cref="Expression.NodeType"></see> property equal to <see cref="ExpressionType.UnaryPlus"></see> and the <see cref="UnaryExpression.Operand"></see> property set to the specified value.</returns> 487public static UnaryExpression UnaryPlus(Expression expression) { 494/// <param name="expression">An <see cref="Expression"></see> to set the <see cref="UnaryExpression.Operand"></see> property equal to.</param> 496/// <returns>A <see cref="UnaryExpression"></see> that has the <see cref="Expression.NodeType"></see> property equal to <see cref="ExpressionType.UnaryPlus"></see> and the <see cref="UnaryExpression.Operand"></see> and <see cref="UnaryExpression.Method"></see>property set to the specified value.</returns> 500public static UnaryExpression UnaryPlus(Expression expression, MethodInfo method) { 517public static UnaryExpression NegateChecked(Expression expression) { 531public static UnaryExpression NegateChecked(Expression expression, MethodInfo method) { 548public static UnaryExpression Not(Expression expression) { 562public static UnaryExpression Not(Expression expression, MethodInfo method) { 582public static UnaryExpression IsFalse(Expression expression) { 592public static UnaryExpression IsFalse(Expression expression, MethodInfo method) { 608public static UnaryExpression IsTrue(Expression expression) { 618public static UnaryExpression IsTrue(Expression expression, MethodInfo method) { 634public static UnaryExpression OnesComplement(Expression expression) { 644public static UnaryExpression OnesComplement(Expression expression, MethodInfo method) { 661public static UnaryExpression TypeAs(Expression expression, Type type) { 678public static UnaryExpression Unbox(Expression expression, Type type) { 696public static UnaryExpression Convert(Expression expression, Type type) { 711public static UnaryExpression Convert(Expression expression, Type type, MethodInfo method) { 733public static UnaryExpression ConvertChecked(Expression expression, Type type) { 748public static UnaryExpression ConvertChecked(Expression expression, Type type, MethodInfo method) { 772public static UnaryExpression ArrayLength(Expression array) { 788public static UnaryExpression Quote(Expression expression) { 820public static UnaryExpression Throw(Expression value) { 830public static UnaryExpression Throw(Expression value, Type type) { 846public static UnaryExpression Increment(Expression expression) { 856public static UnaryExpression Increment(Expression expression, MethodInfo method) { 872public static UnaryExpression Decrement(Expression expression) { 882public static UnaryExpression Decrement(Expression expression, MethodInfo method) { 899public static UnaryExpression PreIncrementAssign(Expression expression) { 911public static UnaryExpression PreIncrementAssign(Expression expression, MethodInfo method) { 921public static UnaryExpression PreDecrementAssign(Expression expression) { 932public static UnaryExpression PreDecrementAssign(Expression expression, MethodInfo method) { 942public static UnaryExpression PostIncrementAssign(Expression expression) { 953public static UnaryExpression PostIncrementAssign(Expression expression, MethodInfo method) { 963public static UnaryExpression PostDecrementAssign(Expression expression) { 974public static UnaryExpression PostDecrementAssign(Expression expression, MethodInfo method) { 978private static UnaryExpression MakeOpAssignUnary(ExpressionType kind, Expression expression, MethodInfo method) {
Microsoft\Scripting\Compiler\ConstantCheck.cs (2)
35internal static bool IsNull(Expression e) { 63private static AnalyzeTypeIsResult AnalyzeTypeIs(Expression operand, Type testType) {
Microsoft\Scripting\Compiler\DelegateHelpers.Generated.cs (4)
48public Type MakeDelegateType(Type retType, params Expression[] args) { 49return MakeDelegateType(retType, (IList<Expression>)args); 52public Type MakeDelegateType(Type retType, IList<Expression> args) { 97internal static Type MakeCallSiteDelegate(ReadOnlyCollection<Expression> types, Type returnType) {
Microsoft\Scripting\Compiler\ExpressionQuoter.cs (18)
39public static Expression Quote(Expression expression, object hoistedLocals, object[] locals) { 77protected internal override Expression VisitLambda<T>(Expression<T> node) { 79Expression b = Visit(node.Body); 84return Expression.Lambda<T>(b, node.Name, node.TailCall, node.Parameters); 87protected internal override Expression VisitBlock(BlockExpression node) { 98return Expression.Block(node.Variables, b); 105Expression b = Visit(node.Body); 106Expression f = Visit(node.Filter); 113return Expression.MakeCatchBlock(node.Test, node.Variable, b, f); 116protected internal override Expression VisitRuntimeVariables(RuntimeVariablesExpression node) { 137var boxesConst = Expression.Constant(new RuntimeVariables(boxes.ToArray()), typeof(IRuntimeVariables)); 144return Expression.Call( 146Expression.RuntimeVariables(new TrueReadOnlyCollection<ParameterExpression>(vars.ToArray())), 148Expression.Constant(indexes) 152protected internal override Expression VisitParameter(ParameterExpression node) { 157return Expression.Field(Expression.Constant(box), "Value");
Microsoft\Scripting\Compiler\HoistedLocals.cs (5)
67internal readonly ReadOnlyDictionary<Expression, int> Indexes; 82Dictionary<Expression, int> indexes = new Dictionary<Expression, int>(vars.Count); 87SelfVariable = Expression.Variable(typeof(object[]), null); 90Indexes = new ReadOnlyDictionary<Expression, int>(indexes);
Microsoft\Scripting\Compiler\LambdaCompiler.Address.cs (5)
29private void EmitAddress(Expression node, Type type) { 37private void EmitAddress(Expression node, Type type, CompilationFlags flags) { 206private void EmitExpressionAddress(Expression node, Type type) { 220private WriteBack EmitAddressWriteBack(Expression node, Type type) { 299foreach (var arg in node.Arguments) {
Microsoft\Scripting\Compiler\LambdaCompiler.Binary.cs (8)
34private void EmitBinaryExpression(Expression expr) { 38private void EmitBinaryExpression(Expression expr, CompilationFlags flags) { 81private void EmitNullEquality(ExpressionType op, Expression e, bool isLiftedToNull) { 102ParameterExpression p1 = Expression.Variable(TypeUtils.GetNonNullableType(b.Left.Type), null); 103ParameterExpression p2 = Expression.Variable(TypeUtils.GetNonNullableType(b.Right.Type), null); 104MethodCallExpression mc = Expression.Call(null, b.Method, p1, p2); 127var arguments = new Expression[] { b.Left, b.Right }; 131EmitMethodCallExpression(Expression.Call(null, b.Method, b.Left, b.Right), flags);
Microsoft\Scripting\Compiler\LambdaCompiler.ControlFlow.cs (7)
62private void EmitLabelExpression(Expression expr, CompilationFlags flags) { 99private void EmitGotoExpression(Expression expr, CompilationFlags flags) { 131private void EmitUnreachable(Expression node, CompilationFlags flags) { 137private bool TryPushLabelBlock(Expression node) { 209private void DefineBlockLabels(Expression node) { 215Expression e = block.GetExpression(i); 228var expression = lambda.Body;
Microsoft\Scripting\Compiler\LambdaCompiler.cs (3)
317return Expression.Field(Expression.Constant(new StrongBox<T>(default(T))), "Value"); 319return Expression.Field(null, CreateStaticField(name, typeof(T)));
Microsoft\Scripting\Compiler\LambdaCompiler.Expressions.cs (37)
82internal void EmitExpression(Expression node) { 90private void EmitExpressionAsVoid(Expression node) { 94private void EmitExpressionAsVoid(Expression node, CompilationFlags flags) { 129private void EmitExpressionAsType(Expression node, Type type, CompilationFlags flags) { 149private CompilationFlags EmitExpressionStart(Expression node) { 166private void EmitInvocationExpression(Expression expr, CompilationFlags flags) { 182expr = Expression.Call(expr, expr.Type.GetMethod("Compile", new Type[0])); 184expr = Expression.Call(expr, expr.Type.GetMethod("Invoke"), node.Arguments); 218private void EmitIndexExpression(Expression expr) { 229foreach (var arg in node.Arguments) { 249foreach (var arg in index.Arguments) { 304private void EmitMethodCallExpression(Expression expr, CompilationFlags flags) { 310private void EmitMethodCallExpression(Expression expr) { 314private void EmitMethodCall(Expression obj, MethodInfo method, IArgumentProvider methodCallExpr) { 318private void EmitMethodCall(Expression obj, MethodInfo method, IArgumentProvider methodCallExpr, CompilationFlags flags) { 439Expression argument = args.GetArgument(i - skipParameters); 464private void EmitConstantExpression(Expression expr) { 480private void EmitDynamicExpression(Expression expr) { 514private void EmitNewExpression(Expression expr) { 532private void EmitTypeBinaryExpression(Expression expr) { 610private void EmitAssignBinaryExpression(Expression expr) { 630private void EmitParameterExpression(Expression expr) { 638private void EmitLambdaExpression(Expression expr) { 643private void EmitRuntimeVariablesExpression(Expression expr) { 686private void EmitMemberExpression(Expression expr) { 717private void EmitInstance(Expression instance, Type type) { 727private void EmitNewArrayExpression(Expression expr) { 739ReadOnlyCollection<Expression> bounds = node.Expressions; 741Expression x = bounds[i]; 749private void EmitDebugInfoExpression(Expression expr) { 767private static void EmitExtensionExpression(Expression expr) { 773private void EmitListInitExpression(Expression expr) { 777private void EmitMemberInitExpression(Expression expr) { 922internal static void ValidateLift(IList<ParameterExpression> variables, IList<Expression> arguments) { 937private void EmitLift(ExpressionType nodeType, Type resultType, MethodCallExpression mc, ParameterExpression[] paramList, Expression[] argList) { 951Expression arg = argList[i]; 1026Expression arg = argList[i];
Microsoft\Scripting\Compiler\LambdaCompiler.Generated.cs (2)
28private void EmitExpression(Expression node, CompilationFlags flags) { 34_guard.RunOnEmptyStack((LambdaCompiler @this, Expression n, CompilationFlags f) => @this.EmitExpression(n, f), this, node, flags);
Microsoft\Scripting\Compiler\LambdaCompiler.Logical.cs (9)
36private void EmitConditionalExpression(Expression expr, CompilationFlags flags) { 63private static bool NotEmpty(Expression node) { 76private static bool Significant(Expression node) { 94private void EmitCoalesceBinaryExpression(Expression expr) { 320private void EmitAndAlsoBinaryExpression(Expression expr, CompilationFlags flags) { 436private void EmitOrElseBinaryExpression(Expression expr, CompilationFlags flags) { 478private void EmitExpressionAndBranch(bool branchValue, Expression node, Label label) { 570private static Expression GetEqualityOperand(Expression expression) {
Microsoft\Scripting\Compiler\LambdaCompiler.Statements.cs (39)
34private void EmitBlockExpression(Expression expr, CompilationFlags flags) { 47var e = node.GetExpression(index); 48var next = node.GetExpression(index + 1); 131private void EmitDefaultExpression(Expression expr) { 139private void EmitLoopExpression(Expression expr) { 159private void EmitSwitchExpression(Expression expr, CompilationFlags flags) { 177var switchValue = Expression.Parameter(node.SwitchValue.Type, "switchValue"); 178var testValue = Expression.Parameter(GetTestValueType(node), "testValue"); 190foreach (Expression test in node.Cases[i].TestValues) { 196EmitExpressionAndBranch(true, Expression.Equal(switchValue, testValue, false, node.Comparison), labels[i]); 565foreach (Expression t in c.TestValues) { 589initializers.Add(Expression.ElementInit(add, t, Expression.Constant(i))); 594cases.Add(Expression.SwitchCase(node.Cases[i].Body, Expression.Constant(i))); 603Expression dictInit = Expression.Condition( 604Expression.Equal(dictField, Expression.Constant(null, dictField.Type)), 605Expression.Assign( 607Expression.ListInit( 608Expression.New( 610Expression.Constant(initializers.Count) 639var switchValue = Expression.Variable(typeof(string), "switchValue"); 640var switchIndex = Expression.Variable(typeof(int), "switchIndex"); 641var reduced = Expression.Block( 643Expression.Assign(switchValue, node.SwitchValue), 644Expression.IfThenElse( 645Expression.Equal(switchValue, Expression.Constant(null, typeof(string))), 646Expression.Assign(switchIndex, Expression.Constant(nullCase)), 647Expression.IfThenElse( 648Expression.Call(dictInit, "TryGetValue", null, switchValue, switchIndex), 649Expression.Empty(), 650Expression.Assign(switchIndex, Expression.Constant(-1)) 653Expression.Switch(node.Type, switchIndex, node.DefaultBody, null, cases) 697private void EmitTryExpression(Expression expr) {
Microsoft\Scripting\Compiler\LambdaCompiler.Unary.cs (13)
34private void EmitQuoteUnaryExpression(Expression expr) { 51if (quote.Type != typeof(Expression)) { 57private void EmitThrowUnaryExpression(Expression expr) { 74private void EmitUnaryExpression(Expression expr, CompilationFlags flags) { 270private void EmitUnboxUnaryExpression(Expression expr) { 279private void EmitConvertUnaryExpression(Expression expr, CompilationFlags flags) { 309UnaryExpression e = Expression.Convert( 310Expression.Call( 312Expression.Convert(node.Operand, pis[0].ParameterType) 337ParameterExpression v = Expression.Variable(TypeUtils.GetNonNullableType(node.Operand.Type), null); 338MethodCallExpression mc = Expression.Call(node.Method, v); 341EmitLift(node.NodeType, resultType, mc, new ParameterExpression[] { v }, new Expression[] { node.Operand }); 344EmitMethodCallExpression(Expression.Call(node.Method, node.Operand), flags);
Microsoft\Scripting\Compiler\StackSpiller.Bindings.cs (34)
47internal abstract Expression AsExpression(Expression target); 90return Expression.MemberBind(_binding.Member, new TrueReadOnlyCollection<MemberBinding>(newBindings)); 95internal override Expression AsExpression(Expression target) { 101MemberExpression member = Expression.MakeMemberAccess(target, _binding.Member); 104Expression[] block = new Expression[_bindings.Count + 2]; 105block[0] = Expression.Assign(memberTemp, member); 114block[_bindings.Count + 1] = Expression.Block( 116Expression.Assign(Expression.MakeMemberAccess(target, _binding.Member), memberTemp) 119block[_bindings.Count + 1] = Expression.Empty(); 157newInits[i] = Expression.ElementInit(_inits[i].AddMethod, cr[0, -1]); 160return Expression.ListBind(_binding.Member, new TrueReadOnlyCollection<ElementInit>(newInits)); 165internal override Expression AsExpression(Expression target) { 171MemberExpression member = Expression.MakeMemberAccess(target, _binding.Member); 174Expression[] block = new Expression[_inits.Count + 2]; 175block[0] = Expression.Assign(memberTemp, member); 179Result add = cr.Finish(Expression.Call(memberTemp, _inits[i].AddMethod, cr[0, -1])); 185block[_inits.Count + 1] = Expression.Block( 187Expression.Assign(Expression.MakeMemberAccess(target, _binding.Member), memberTemp) 190block[_inits.Count + 1] = Expression.Empty(); 197Expression _rhs; 212return Expression.Bind(_binding.Member, _rhs); 217internal override Expression AsExpression(Expression target) { 220MemberExpression member = Expression.MakeMemberAccess(target, _binding.Member); 224Expression.Assign(memberTemp, _rhs), 225Expression.Assign(member, memberTemp), 226Expression.Empty()
Microsoft\Scripting\Compiler\StackSpiller.cs (64)
66internal readonly Expression Node; 68internal Result(RewriteAction action, Expression node) { 118Expression newBody = body.Node; 120newBody = Expression.Block(_tm.Temps, newBody); 133private static void VerifyRewrite(Result result, Expression node) { 157private Result RewriteExpressionFreeTemps(Expression expression, Stack stack) { 166private Result RewriteDynamicExpression(Expression expr, Stack stack) { 207private Result RewriteLogicalBinaryExpression(Expression expr, Stack stack) { 236private Result RewriteReducibleExpression(Expression expr, Stack stack) { 243private Result RewriteBinaryExpression(Expression expr, Stack stack) { 274node = Expression.Assign(node.Left, right.Node); 279private Result RewriteAssignBinaryExpression(Expression expr, Stack stack) { 297node = Expression.Assign(node.Left.ReduceExtensions(), node.Right); 305private static Result RewriteLambdaExpression(Expression expr, Stack stack) { 319private Result RewriteConditionalExpression(Expression expr, Stack stack) { 330expr = Expression.Condition(test.Node, ifTrue.Node, ifFalse.Node, node.Type); 365private Result RewriteMemberExpression(Expression expr, Stack stack) { 383private Result RewriteIndexExpression(Expression expr, Stack stack) { 409private Result RewriteMethodCallExpression(Expression expr, Stack stack) { 429private Result RewriteNewArrayExpression(Expression expr, Stack stack) { 448expr = Expression.NewArrayInit(element, cr[0, -1]); 450expr = Expression.NewArrayBounds(element, cr[0, -1]); 458private Result RewriteInvocationExpression(Expression expr, Stack stack) { 471RequireNoRefArgs(Expression.GetInvokeMethod(node.Expression)); 495RequireNoRefArgs(Expression.GetInvokeMethod(node.Expression)); 502private Result RewriteNewExpression(Expression expr, Stack stack) { 518private Result RewriteTypeBinaryExpression(Expression expr, Stack stack) { 524expr = Expression.TypeIs(expression.Node, node.TypeOperand); 526expr = Expression.TypeEqual(expression.Node, node.TypeOperand); 533private Result RewriteThrowUnaryExpression(Expression expr, Stack stack) { 549expr = Expression.Throw(value.Node, node.Type); 556private Result RewriteUnaryExpression(Expression expr, Stack stack) { 576private Result RewriteListInitExpression(Expression expr, Stack stack) { 581Expression rewrittenNew = newResult.Node; 609newInits[i] = Expression.ElementInit(inits[i].AddMethod, cr[0, -1]); 612expr = Expression.ListInit((NewExpression)rewrittenNew, new TrueReadOnlyCollection<ElementInit>(newInits)); 618Expression[] comma = new Expression[inits.Count + 2]; 619comma[0] = Expression.Assign(tempNew, rewrittenNew); 623Result add = cr.Finish(Expression.Call(tempNew, inits[i].AddMethod, cr[0, -1])); 637private Result RewriteMemberInitExpression(Expression expr, Stack stack) { 642Expression rewrittenNew = result.Node; 663expr = Expression.MemberInit((NewExpression)rewrittenNew, new TrueReadOnlyCollection<MemberBinding>(newBindings)); 669Expression[] comma = new Expression[bindings.Count + 2]; 670comma[0] = Expression.Assign(tempNew, rewrittenNew); 673Expression initExpr = cr.AsExpression(tempNew); 690private Result RewriteBlockExpression(Expression expr, Stack stack) { 695Expression[] clone = null; 697Expression expression = node.GetExpression(i); 720private Result RewriteLabelExpression(Expression expr, Stack stack) { 725expr = Expression.Label(node.Target, expression.Node); 731private Result RewriteLoopExpression(Expression expr, Stack stack) { 757private Result RewriteGotoExpression(Expression expr, Stack stack) { 772expr = Expression.MakeGoto(node.Kind, node.Target, value.Node, node.Type); 778private Result RewriteSwitchExpression(Expression expr, Stack stack) { 790Expression[] cloneTests = null; 791ReadOnlyCollection<Expression> testValues = @case.TestValues; 813testValues = new ReadOnlyCollection<Expression>(cloneTests); 844private Result RewriteTryExpression(Expression expr, Stack stack) { 860Expression filter = handler.Filter; 875handler = Expression.MakeCatchBlock(handler.Test, handler.Variable, rbody.Node, filter); 910private Result RewriteExtensionExpression(Expression expr, Stack stack) { 977private static void RequireNotRefInstance(Expression instance) {
Microsoft\Scripting\Compiler\StackSpiller.Generated.cs (2)
36private Result RewriteExpression(Expression node, Stack stack) { 46return _guard.RunOnEmptyStack((StackSpiller @this, Expression n, Stack s) => @this.RewriteExpression(n, s), this, node, stack);
Microsoft\Scripting\Compiler\StackSpiller.Temps.cs (25)
68temp = Expression.Variable(type, "$temp$" + _temp++); 132private readonly Expression[] _expressions; 134private List<Expression> _comma; 142_expressions = new Expression[count]; 145internal void Add(Expression node) { 161internal void Add(IList<Expression> expressions) { 179Expression[] clone = _expressions; 181List<Expression> comma = new List<Expression>(count + 1); 184Expression temp; 203internal Result Finish(Expression expr) { 215internal Expression this[int index] { 225internal Expression[] this[int first, int last] { 240Expression[] clone = new Expression[count]; 271private ParameterExpression ToTemp(Expression expression, out Expression save) { 273save = Expression.Assign(temp, expression); 282private static Expression MakeBlock(params Expression[] expressions) { 283return MakeBlock((IList<Expression>)expressions); 291private static Expression MakeBlock(IList<Expression> expressions) { 301internal SpilledExpressionBlock(IList<Expression> expressions) 304internal override BlockExpression Rewrite(ReadOnlyCollection<ParameterExpression> variables, Expression[] args) {
Microsoft\Scripting\Compiler\VariableBinder.cs (14)
50public override Expression Visit(Expression node) 57return _guard.RunOnEmptyStack((VariableBinder @this, Expression e) => @this.Visit(e), this, node); 63protected internal override Expression VisitConstant(ConstantExpression node) { 79protected internal override Expression VisitUnary(UnaryExpression node) { 91protected internal override Expression VisitLambda<T>(Expression<T> node) { 100protected internal override Expression VisitInvocation(InvocationExpression node) { 117protected internal override Expression VisitBlock(BlockExpression node) { 142private ReadOnlyCollection<Expression> MergeScopes(Expression node) { 143ReadOnlyCollection<Expression> body; 146body = new ReadOnlyCollection<Expression>(new[] { lambda.Body }); 183protected internal override Expression VisitParameter(ParameterExpression node) { 215protected internal override Expression VisitRuntimeVariables(RuntimeVariablesExpression node) {
System\Linq\Expressions\ExpressionVisitor.cs (57)
18internal virtual Expression Visit(Expression exp) { 101ReadOnlyCollection<Expression> arguments = this.VisitExpressionList(initializer.Arguments); 103return Expression.ElementInit(initializer.AddMethod, arguments); 108internal virtual Expression VisitUnary(UnaryExpression u) { 109Expression operand = this.Visit(u.Operand); 111return Expression.MakeUnary(u.NodeType, operand, u.Type, u.Method); 116internal virtual Expression VisitBinary(BinaryExpression b) { 117Expression left = this.Visit(b.Left); 118Expression right = this.Visit(b.Right); 119Expression conversion = this.Visit(b.Conversion); 122return Expression.Coalesce(left, right, conversion as LambdaExpression); 124return Expression.MakeBinary(b.NodeType, left, right, b.IsLiftedToNull, b.Method); 129internal virtual Expression VisitTypeIs(TypeBinaryExpression b) { 130Expression expr = this.Visit(b.Expression); 132return Expression.TypeIs(expr, b.TypeOperand); 137internal virtual Expression VisitConstant(ConstantExpression c) { 141internal virtual Expression VisitConditional(ConditionalExpression c) { 142Expression test = this.Visit(c.Test); 143Expression ifTrue = this.Visit(c.IfTrue); 144Expression ifFalse = this.Visit(c.IfFalse); 146return Expression.Condition(test, ifTrue, ifFalse); 151internal virtual Expression VisitParameter(ParameterExpression p) { 155internal virtual Expression VisitMemberAccess(MemberExpression m) { 156Expression exp = this.Visit(m.Expression); 158return Expression.MakeMemberAccess(exp, m.Member); 163internal virtual Expression VisitMethodCall(MethodCallExpression m) { 164Expression obj = this.Visit(m.Object); 165IEnumerable<Expression> args = this.VisitExpressionList(m.Arguments); 167return Expression.Call(obj, m.Method, args); 172internal virtual ReadOnlyCollection<Expression> VisitExpressionList(ReadOnlyCollection<Expression> original) { 173List<Expression> list = null; 175Expression p = this.Visit(original[i]); 180list = new List<Expression>(n); 193Expression e = this.Visit(assignment.Expression); 195return Expression.Bind(assignment.Member, e); 203return Expression.MemberBind(binding.Member, bindings); 211return Expression.ListBind(binding.Member, initializers); 261internal virtual Expression VisitLambda(LambdaExpression lambda) 263Expression body = this.Visit(lambda.Body); 265return Expression.Lambda(lambda.Type, body, lambda.Parameters); 271IEnumerable<Expression> args = this.VisitExpressionList(nex.Arguments); 274return Expression.New(nex.Constructor, args, nex.Members); 276return Expression.New(nex.Constructor, args); 281internal virtual Expression VisitMemberInit(MemberInitExpression init) { 285return Expression.MemberInit(n, bindings); 290internal virtual Expression VisitListInit(ListInitExpression init) { 294return Expression.ListInit(n, initializers); 299internal virtual Expression VisitNewArray(NewArrayExpression na) { 300IEnumerable<Expression> exprs = this.VisitExpressionList(na.Expressions); 303return Expression.NewArrayInit(na.Type.GetElementType(), exprs); 306return Expression.NewArrayBounds(na.Type.GetElementType(), exprs); 312internal virtual Expression VisitInvocation(InvocationExpression iv) { 313IEnumerable<Expression> args = this.VisitExpressionList(iv.Arguments); 314Expression expr = this.Visit(iv.Expression); 316return Expression.Invoke(expr, args);
System\Linq\IQueryable.cs (361)
16Expression Expression { get; } 27IQueryable CreateQuery(Expression expression); 28IQueryable<TElement> CreateQuery<TElement>(Expression expression); 30object Execute(Expression expression); 32TResult Execute<TResult>(Expression expression); 96Expression.Call( 99new Expression[] { source.Expression, Expression.Quote(predicate) } 109Expression.Call( 112new Expression[] { source.Expression, Expression.Quote(predicate) } 120Expression.Call( 123new Expression[] { source.Expression } 131Expression.Call( 134new Expression[] { source.Expression } 144Expression.Call( 147new Expression[] { source.Expression, Expression.Quote(selector) } 157Expression.Call( 160new Expression[] { source.Expression, Expression.Quote(selector) } 170Expression.Call( 173new Expression[] { source.Expression, Expression.Quote(selector) } 183Expression.Call( 186new Expression[] { source.Expression, Expression.Quote(selector) } 198Expression.Call( 201new Expression[] { source.Expression, Expression.Quote(collectionSelector), Expression.Quote(resultSelector) } 213Expression.Call( 216new Expression[] { source.Expression, Expression.Quote(collectionSelector), Expression.Quote(resultSelector) } 220private static Expression GetSourceExpression<TSource>(IEnumerable<TSource> source) { 223return Expression.Constant(source, typeof(IEnumerable<TSource>)); 238Expression.Call( 241new Expression[] { 244Expression.Quote(outerKeySelector), 245Expression.Quote(innerKeySelector), 246Expression.Quote(resultSelector) 263Expression.Call( 266new Expression[] { 269Expression.Quote(outerKeySelector), 270Expression.Quote(innerKeySelector), 271Expression.Quote(resultSelector), 272Expression.Constant(comparer, typeof(IEqualityComparer<TKey>)) 289Expression.Call( 292new Expression[] { 295Expression.Quote(outerKeySelector), 296Expression.Quote(innerKeySelector), 297Expression.Quote(resultSelector) } 313Expression.Call( 316new Expression[] { 319Expression.Quote(outerKeySelector), 320Expression.Quote(innerKeySelector), 321Expression.Quote(resultSelector), 322Expression.Constant(comparer, typeof(IEqualityComparer<TKey>)) } 333Expression.Call( 336new Expression[] { source.Expression, Expression.Quote(keySelector) } 346Expression.Call( 349new Expression[] { source.Expression, Expression.Quote(keySelector), Expression.Constant(comparer, typeof(IComparer<TKey>)) } 359Expression.Call( 362new Expression[] { source.Expression, Expression.Quote(keySelector) } 372Expression.Call( 375new Expression[] { source.Expression, Expression.Quote(keySelector), Expression.Constant(comparer, typeof(IComparer<TKey>)) } 385Expression.Call( 388new Expression[] { source.Expression, Expression.Quote(keySelector) } 398Expression.Call( 401new Expression[] { source.Expression, Expression.Quote(keySelector), Expression.Constant(comparer, typeof(IComparer<TKey>)) } 411Expression.Call( 414new Expression[] { source.Expression, Expression.Quote(keySelector) } 424Expression.Call( 427new Expression[] { source.Expression, Expression.Quote(keySelector), Expression.Constant(comparer, typeof(IComparer<TKey>)) } 435Expression.Call( 438new Expression[] { source.Expression, Expression.Constant(count) } 448Expression.Call( 451new Expression[] { source.Expression, Expression.Quote(predicate) } 461Expression.Call( 464new Expression[] { source.Expression, Expression.Quote(predicate) } 472Expression.Call( 475new Expression[] { source.Expression, Expression.Constant(count) } 485Expression.Call( 488new Expression[] { source.Expression, Expression.Quote(predicate) } 498Expression.Call( 501new Expression[] { source.Expression, Expression.Quote(predicate) } 511Expression.Call( 514new Expression[] { source.Expression, Expression.Quote(keySelector) } 526Expression.Call( 529new Expression[] { source.Expression, Expression.Quote(keySelector), Expression.Quote(elementSelector) } 539Expression.Call( 542new Expression[] { source.Expression, Expression.Quote(keySelector), Expression.Constant(comparer, typeof(IEqualityComparer<TKey>)) } 554Expression.Call( 557new Expression[] { source.Expression, Expression.Quote(keySelector), Expression.Quote(elementSelector), Expression.Constant(comparer, typeof(IEqualityComparer<TKey>)) } 572Expression.Call( 575new Expression[] { source.Expression, Expression.Quote(keySelector), Expression.Quote(elementSelector), Expression.Quote(resultSelector) } 588Expression.Call( 591new Expression[] { source.Expression, Expression.Quote(keySelector), Expression.Quote(resultSelector) } 604Expression.Call( 607new Expression[] { source.Expression, Expression.Quote(keySelector), Expression.Quote(resultSelector), Expression.Constant(comparer, typeof(IEqualityComparer<TKey>)) } 622Expression.Call( 625new Expression[] { source.Expression, Expression.Quote(keySelector), Expression.Quote(elementSelector), Expression.Quote(resultSelector), Expression.Constant(comparer, typeof(IEqualityComparer<TKey>)) } 633Expression.Call( 636new Expression[] { source.Expression } 644Expression.Call( 647new Expression[] { source.Expression, Expression.Constant(comparer, typeof(IEqualityComparer<TSource>)) } 657Expression.Call( 660new Expression[] { source1.Expression, GetSourceExpression(source2) } 672Expression.Call( 675new Expression[] { source1.Expression, GetSourceExpression(source2), Expression.Quote(resultSelector) } 685Expression.Call( 688new Expression[] { source1.Expression, GetSourceExpression(source2) } 698Expression.Call( 701new Expression[] { 704Expression.Constant(comparer, typeof(IEqualityComparer<TSource>)) 715Expression.Call( 718new Expression[] { source1.Expression, GetSourceExpression(source2) } 728Expression.Call( 731new Expression[] { 734Expression.Constant(comparer, typeof(IEqualityComparer<TSource>)) 745Expression.Call( 748new Expression[] { source1.Expression, GetSourceExpression(source2) } 758Expression.Call( 761new Expression[] { 764Expression.Constant(comparer, typeof(IEqualityComparer<TSource>)) 773Expression.Call( 776new Expression[] { source.Expression } 786Expression.Call( 789new Expression[] { source.Expression, Expression.Quote(predicate) } 797Expression.Call( 800new Expression[] { source.Expression } 810Expression.Call( 813new Expression[] { source.Expression, Expression.Quote(predicate) } 821Expression.Call( 824new Expression[] { source.Expression } 834Expression.Call( 837new Expression[] { source.Expression, Expression.Quote(predicate) } 845Expression.Call( 848new Expression[] { source.Expression } 858Expression.Call( 861new Expression[] { source.Expression, Expression.Quote(predicate) } 869Expression.Call( 872new Expression[] { source.Expression } 882Expression.Call( 885new Expression[] { source.Expression, Expression.Quote(predicate) } 893Expression.Call( 896new Expression[] { source.Expression } 906Expression.Call( 909new Expression[] { source.Expression, Expression.Quote(predicate) } 919Expression.Call( 922new Expression[] { source.Expression, Expression.Constant(index) } 930Expression.Call( 933new Expression[] { source.Expression, Expression.Constant(index) } 941Expression.Call( 944new Expression[] { source.Expression } 952Expression.Call( 955new Expression[] { source.Expression, Expression.Constant(defaultValue, typeof(TSource)) } 963Expression.Call( 966new Expression[] { source.Expression, Expression.Constant(item, typeof(TSource)) } 974Expression.Call( 977new Expression[] { source.Expression, Expression.Constant(item, typeof(TSource)), Expression.Constant(comparer, typeof(IEqualityComparer<TSource>)) } 985Expression.Call( 988new Expression[] { source.Expression } 998Expression.Call( 1001new Expression[] { source1.Expression, GetSourceExpression(source2) } 1011Expression.Call( 1014new Expression[] { 1017Expression.Constant(comparer, typeof(IEqualityComparer<TSource>)) 1026Expression.Call( 1029new Expression[] { source.Expression } 1039Expression.Call( 1042new Expression[] { source.Expression, Expression.Quote(predicate) } 1052Expression.Call( 1055new Expression[] { source.Expression, Expression.Quote(predicate) } 1063Expression.Call( 1066new Expression[] { source.Expression } 1076Expression.Call( 1079new Expression[] { source.Expression, Expression.Quote(predicate) } 1087Expression.Call( 1090new Expression[] { source.Expression } 1100Expression.Call( 1103new Expression[] { source.Expression, Expression.Quote(predicate) } 1111Expression.Call( 1114new Expression[] { source.Expression } 1124Expression.Call( 1127new Expression[] { source.Expression, Expression.Quote(selector) } 1135Expression.Call( 1138new Expression[] { source.Expression } 1148Expression.Call( 1151new Expression[] { source.Expression, Expression.Quote(selector) } 1159Expression.Call( 1162new Expression[] { source.Expression } 1170Expression.Call( 1173new Expression[] { source.Expression } 1181Expression.Call( 1184new Expression[] { source.Expression } 1192Expression.Call( 1195new Expression[] { source.Expression } 1203Expression.Call( 1206new Expression[] { source.Expression } 1214Expression.Call( 1217new Expression[] { source.Expression } 1225Expression.Call( 1228new Expression[] { source.Expression } 1236Expression.Call( 1239new Expression[] { source.Expression } 1247Expression.Call( 1250new Expression[] { source.Expression } 1258Expression.Call( 1261new Expression[] { source.Expression } 1271Expression.Call( 1274new Expression[] { source.Expression, Expression.Quote(selector) } 1284Expression.Call( 1287new Expression[] { source.Expression, Expression.Quote(selector) } 1297Expression.Call( 1300new Expression[] { source.Expression, Expression.Quote(selector) } 1310Expression.Call( 1313new Expression[] { source.Expression, Expression.Quote(selector) } 1323Expression.Call( 1326new Expression[] { source.Expression, Expression.Quote(selector) } 1336Expression.Call( 1339new Expression[] { source.Expression, Expression.Quote(selector) } 1349Expression.Call( 1352new Expression[] { source.Expression, Expression.Quote(selector) } 1362Expression.Call( 1365new Expression[] { source.Expression, Expression.Quote(selector) } 1375Expression.Call( 1378new Expression[] { source.Expression, Expression.Quote(selector) } 1388Expression.Call( 1391new Expression[] { source.Expression, Expression.Quote(selector) } 1399Expression.Call( 1402new Expression[] { source.Expression } 1410Expression.Call( 1413new Expression[] { source.Expression } 1421Expression.Call( 1424new Expression[] { source.Expression } 1432Expression.Call( 1435new Expression[] { source.Expression } 1444Expression.Call( 1447new Expression[] { source.Expression } 1456Expression.Call( 1459new Expression[] { source.Expression } 1467Expression.Call( 1470new Expression[] { source.Expression } 1478Expression.Call( 1481new Expression[] { source.Expression } 1489Expression.Call( 1492new Expression[] { source.Expression } 1500Expression.Call( 1503new Expression[] { source.Expression } 1513Expression.Call( 1516new Expression[] { source.Expression, Expression.Quote(selector) } 1526Expression.Call( 1529new Expression[] { source.Expression, Expression.Quote(selector) } 1540Expression.Call( 1543new Expression[] { source.Expression, Expression.Quote(selector) } 1554Expression.Call( 1557new Expression[] { source.Expression, Expression.Quote(selector) } 1567Expression.Call( 1570new Expression[] { source.Expression, Expression.Quote(selector) } 1580Expression.Call( 1583new Expression[] { source.Expression, Expression.Quote(selector) } 1593Expression.Call( 1596new Expression[] { source.Expression, Expression.Quote(selector) } 1606Expression.Call( 1609new Expression[] { source.Expression, Expression.Quote(selector) } 1619Expression.Call( 1622new Expression[] { source.Expression, Expression.Quote(selector) } 1632Expression.Call( 1635new Expression[] { source.Expression, Expression.Quote(selector) } 1645Expression.Call( 1648new Expression[] { source.Expression, Expression.Quote(func) } 1658Expression.Call( 1661new Expression[] { source.Expression, Expression.Constant(seed), Expression.Quote(func) } 1673Expression.Call( 1676new Expression[] { source.Expression, Expression.Constant(seed), Expression.Quote(func), Expression.Quote(selector) }
System\Linq\SequenceQuery.cs (44)
18internal abstract Expression Expression { get; } 29internal static IQueryable Create(Type elementType, Expression expression) { 41Expression expression; 53this.expression = Expression.Constant(this); 57public EnumerableQuery(Expression expression) { 61internal override Expression Expression { 69Expression IQueryable.Expression { 77IQueryable IQueryProvider.CreateQuery(Expression expression){ 86IQueryable<S> IQueryProvider.CreateQuery<S>(Expression expression){ 101object IQueryProvider.Execute(Expression expression){ 109S IQueryProvider.Execute<S>(Expression expression){ 128Expression body = rewriter.Visit(this.expression); 129Expression<Func<IEnumerable<T>>> f = Expression.Lambda<Func<IEnumerable<T>>>(body, (IEnumerable<ParameterExpression>)null); 150internal static EnumerableExecutor Create(Expression expression) { 162Expression expression; 166public EnumerableExecutor(Expression expression){ 177Expression body = rewriter.Visit(this.expression); 178Expression<Func<T>> f = Expression.Lambda<Func<T>>(body, (IEnumerable<ParameterExpression>)null); 191internal override Expression VisitMethodCall(MethodCallExpression m) { 192Expression obj = this.Visit(m.Object); 193ReadOnlyCollection<Expression> args = this.VisitExpressionList(m.Arguments); 197Expression[] argArray = args.ToArray(); 203return Expression.Call(obj, m.Method, args); 209return Expression.Call(obj, seqMethod, args); 216return Expression.Call(obj, method, args); 222private ReadOnlyCollection<Expression> FixupQuotedArgs(MethodInfo mi, ReadOnlyCollection<Expression> argList) { 225List<Expression> newArgs = null; 227Expression arg = argList[i]; 231newArgs = new List<Expression>(argList.Count); 246private Expression FixupQuotedExpression(Type type, Expression expression) { 247Expression expr = expression; 260List<Expression> exprs = new List<Expression>(na.Expressions.Count); 264expression = Expression.NewArrayInit(elementType, exprs); 270internal override Expression VisitLambda(LambdaExpression lambda) { 295internal override Expression VisitConstant(ConstantExpression c) { 301return Expression.Constant(sq.Enumerable, t); 308internal override Expression VisitParameter(ParameterExpression p) { 313static MethodInfo FindEnumerableMethod(string name, ReadOnlyCollection<Expression> args, params Type[] typeArgs) { 325internal static MethodInfo FindMethod(Type type, string name, ReadOnlyCollection<Expression> args, Type[] typeArgs, BindingFlags flags) { 337private static bool ArgsMatch(MethodInfo m, ReadOnlyCollection<Expression> args, Type[] typeArgs) { 361Expression arg = args[i];
System\Runtime\CompilerServices\ExecutionScope.cs (2)
31public Expression IsolateExpression(Expression expression, object[] locals)
System.Data (14)
cdf\src\NetFx40\Tools\System.Activities.Presentation\System\Activities\Presentation\Model\ModelItemImpl.cs (14)
465DynamicMetaObject IDynamicMetaObjectProvider.GetMetaObject(System.Linq.Expressions.Expression parameter) 529public ModelItemMetaObject(System.Linq.Expressions.Expression parameter, ModelItemImpl target) 536System.Linq.Expressions.Expression s = System.Linq.Expressions.Expression.Convert(this.Expression, typeof(ModelItemImpl)); 537System.Linq.Expressions.Expression value = System.Linq.Expressions.Expression.Call(s, getPropertyValueMethodInfo, System.Linq.Expressions.Expression.Constant(binder.Name)); 543System.Linq.Expressions.Expression s = System.Linq.Expressions.Expression.Convert(this.Expression, typeof(ModelItemImpl)); 544System.Linq.Expressions.Expression objectValue = System.Linq.Expressions.Expression.Convert(value.Expression, typeof(object)); 545System.Linq.Expressions.Expression valueExp = System.Linq.Expressions.Expression.Call(s, setPropertyValueMethodInfo, System.Linq.Expressions.Expression.Constant(binder.Name), objectValue);
System.Data.Entity (852)
System\Data\Common\Internal\Materialization\CompensatingCollection.cs (3)
33private readonly Expression _expression; 42_expression = Expression.Constant(source); 81Expression IQueryable.Expression
System\Data\Common\Internal\Materialization\CoordinatorFactory.cs (8)
203public CoordinatorFactory(int depth, int stateSlot, Expression hasData, Expression setKeys, Expression checkKeys, CoordinatorFactory[] nestedCoordinators, Expression element, Expression elementWithErrorHandling, Expression initializeCollection, RecordStateFactory[] recordStateFactories) 246private static Func<Shaper, bool> CompilePredicate(Expression predicate) 263private static string DescribeExpression(Expression expression)
System\Data\Common\Internal\Materialization\CoordinatorScratchpad.cs (57)
38private readonly Dictionary<Expression, Expression> _expressionWithErrorHandlingMap; 53_expressionWithErrorHandlingMap = new Dictionary<Expression, Expression>(); 74internal Expression SetKeys { get; set; } 81internal Expression CheckKeys { get; set; } 87internal Expression HasData { get; set; } 93internal Expression Element { get; set; } 98internal Expression InitializeCollection { get; set; } 125internal void AddExpressionWithErrorHandling(Expression expression, Expression expressionWithErrorHandling) 180Expression element = new SecurityBoundaryExpressionVisitor().Visit(replacementVisitor.Visit(this.Element)); 185Expression elementWithErrorHandling = new SecurityBoundaryExpressionVisitor().Visit(replacementVisitor.Visit(this.Element)); 228private readonly Dictionary<Expression, Expression> _replacementDictionary; 231internal ReplacementExpressionVisitor(Dictionary<Expression, Expression> replacementDictionary, 238internal override Expression Visit(Expression expression) 245Expression result; 248Expression replacement; 271Expression body = Visit(lambda.Body); 274result = Expression.Constant(Translator.Compile(body.Type, body)); 311private ParameterExpression _values = Expression.Parameter(typeof(object[]), "values"); 312private ParameterExpression _reader = Expression.Parameter(typeof(DbDataReader), "reader"); 313private List<Expression> _initializationArguments = new List<Expression>(); 323internal override Expression Visit(Expression exp) 343var newArguments = new List<Expression>(); 346var argument = arguments[i]; 351var visitedArgument = this.Visit(argument); 357var convert = this.CreateInitializationArgumentReplacement(argument); 368nex = Expression.New(nex.Constructor, newArguments); 372var userMaterializationFunc = Expression.Lambda<Func<DbDataReader, object[], object>>(nex, _reader, _values).Compile(); 375return Expression.Convert( 376Expression.Call( 377Expression.Constant(userMaterializationFunc), 380Expression.NewArrayInit(typeof(object), _initializationArguments)), 390internal override Expression VisitConditional(ConditionalExpression c) 418internal override Expression VisitMemberAccess(MemberExpression m) 439internal override Expression VisitMemberInit(MemberInitExpression init) 443var newMemberInit = base.VisitMemberInit(init); 448var userMaterializationFunc = Expression.Lambda<Func<DbDataReader, object[], object>>(newMemberInit, _reader, _values).Compile(); 451return Expression.Convert( 452Expression.Call( 453Expression.Constant(userMaterializationFunc), 456Expression.NewArrayInit(typeof(object), _initializationArguments)), 487internal override Expression VisitMethodCall(MethodCallExpression m) 525private Expression CreateInitializationArgumentReplacement(Expression original) 530private Expression CreateInitializationArgumentReplacement(Expression original, Type expressionType) 532_initializationArguments.Add(Expression.Convert(original, typeof(object))); 534return Expression.Convert( 535Expression.MakeBinary(ExpressionType.ArrayIndex, _values, Expression.Constant(_initializationArguments.Count - 1)),
System\Data\Common\Internal\Materialization\RecordStateFactory.cs (1)
97public RecordStateFactory(int stateSlotNumber, int columnCount, RecordStateFactory[] nestedRecordStateFactories, DataRecordInfo dataRecordInfo, Expression gatherData, string[] propertyNames, TypeUsage[] typeUsages)
System\Data\Common\Internal\Materialization\RecordStateScratchpad.cs (2)
45private Expression _gatherData; 46internal Expression GatherData
System\Data\Common\Internal\Materialization\Translator.cs (308)
51private readonly Expression ReturnedExpression; 54internal TranslatorResult(Expression returnedExpression, Type requestedType) 64internal Expression Expression 68Expression result = Translator.Emit_EnsureType(ReturnedExpression, RequestedType); 76internal Expression UnconvertedExpression 88internal Expression UnwrappedExpression 108internal readonly Expression ExpressionToGetCoordinator; 110internal CollectionTranslatorResult(Expression returnedExpression, ColumnMap columnMap, Type requestedType, Expression expressionToGetCoordinator) 254internal static Func<Shaper, TResult> Compile<TResult>(Expression body) 256var lambda = Expression.Lambda<Func<Shaper, TResult>>(body, Shaper_Parameter); 265internal static object Compile(Type resultType, Expression body) 514private LambdaExpression CreateInlineDelegate(Expression body) 524private Expression<Func<Shaper, T>> TypedCreateInlineDelegate<T>(Expression body) 526Expression<Func<Shaper, T>> result = Expression.Lambda<Func<Shaper, T>>(body, Shaper_Parameter); 587private static readonly MethodInfo Translator_Compile = typeof(Translator).GetMethod("Compile", BindingFlags.NonPublic | BindingFlags.Static, null, new Type[] { typeof(Expression) }, null); 612private static readonly Expression DBNull_Value = Expression.Constant(DBNull.Value, typeof(object)); 614internal static readonly ParameterExpression Shaper_Parameter = Expression.Parameter(typeof(Shaper), "shaper"); 615private static readonly ParameterExpression EntityParameter = Expression.Parameter(typeof(object), "entity"); 617internal static readonly Expression Shaper_Reader = Expression.Field(Shaper_Parameter, typeof(Shaper).GetField("Reader")); 618private static readonly Expression Shaper_Workspace = Expression.Field(Shaper_Parameter, typeof(Shaper).GetField("Workspace")); 619private static readonly Expression Shaper_State = Expression.Field(Shaper_Parameter, typeof(Shaper).GetField("State")); 620private static readonly Expression Shaper_Context = Expression.Field(Shaper_Parameter, typeof(Shaper).GetField("Context")); 621private static readonly Expression Shaper_Context_Options = Expression.Property(Shaper_Context, typeof(ObjectContext).GetProperty("ContextOptions")); 622private static readonly Expression Shaper_ProxyCreationEnabled = Expression.Property(Shaper_Context_Options, typeof(ObjectContextOptions).GetProperty("ProxyCreationEnabled")); 629private static Expression Emit_AndAlso(IEnumerable<Expression> operands) 631Expression result = null; 632foreach (Expression operand in operands) 640result = Expression.AndAlso(result, operand); 649private static Expression Emit_BitwiseOr(IEnumerable<Expression> operands) 651Expression result = null; 652foreach (Expression operand in operands) 660result = Expression.Or(result, operand); 675internal static Expression Emit_NullConstant(Type type) 677Expression nullConstant; 684nullConstant = Expression.Constant(null, type); 689nullConstant = Emit_EnsureType(Expression.Constant(null, typeof(object)), type); 699internal static Expression Emit_WrappedNullConstant(Type type) 701return Expression.Property(null, EntityWrapperFactory_NullWrapper); 710internal static Expression Emit_EnsureType(Expression input, Type type) 712Expression result = input; 718result = Expression.Convert(input, type); 725result = Expression.Call(checkedConvertMethod, input); 743internal static Expression Emit_EnsureTypeAndWrap(Expression input, Expression keyReader, Expression entitySetReader, Type requestedType, Type identityType, Type actualType, MergeOption mergeOption, bool isProxy) 745Expression result = Emit_EnsureType(input, requestedType); // Needed to ensure appropriate exception is thrown 757private static Expression CreateEntityWrapper(Expression input, Expression keyReader, Expression entitySetReader, Type actualType, Type identityType, MergeOption mergeOption, bool isProxy) 759Expression result; 770result = Expression.New(ci, input, keyReader, entitySetReader, Shaper_Context, Expression.Constant(mergeOption, typeof(MergeOption)), Expression.Constant(identityType, typeof(Type))); 778Expression propertyAccessorStrategy = !isIEntityWithRelationships || isProxy ? 779Expression.Call(EntityWrapperFactory_GetPocoPropertyAccessorStrategyFunc) : 780Expression.Call(EntityWrapperFactory_GetNullPropertyAccessorStrategyFunc); 782Expression keyStrategy = isIEntityWithKey ? 783Expression.Call(EntityWrapperFactory_GetEntityWithKeyStrategyStrategyFunc) : 784Expression.Call(EntityWrapperFactory_GetPocoEntityKeyStrategyFunc); 786Expression changeTrackingStrategy = isIEntityWithChangeTracker ? 787Expression.Call(EntityWrapperFactory_GetEntityWithChangeTrackerStrategyFunc) : 788Expression.Call(EntityWrapperFactory_GetSnapshotChangeTrackingStrategyFunc); 797result = Expression.New(ci, input, keyReader, entitySetReader, Shaper_Context, Expression.Constant(mergeOption, typeof(MergeOption)), Expression.Constant(identityType, typeof(Type)), 800result = Expression.Convert(result, typeof(IEntityWrapper)); 808internal static Expression Emit_UnwrapAndEnsureType(Expression input, Type type) 810return Translator.Emit_EnsureType(Expression.Property(input, IEntityWrapper_Entity), type); 848private static Expression Emit_Equal(Expression left, Expression right) 850Expression result; 854result = Expression.Call(Translator_BinaryEquals, left, right); 858result = Expression.Equal(left, right); 897private static Expression Emit_EntityKey_ctor(Translator translator, EntityIdentity entityIdentity, bool isForColumnValue, out Expression entitySetReader) 899Expression result; 900Expression setEntitySetStateSlotValue = null; 903List<Expression> keyReaders = new List<Expression>(entityIdentity.Keys.Length); 906Expression keyReader = entityIdentity.Keys[i].Accept(translator, new TranslatorArg(typeof(object))).Expression; 919entitySetReader = Expression.Constant(null, typeof(EntitySet)); 920return Expression.Constant(null, typeof(EntityKey)); 923entitySetReader = Expression.Constant(simpleEntityIdentity.EntitySet, typeof(EntitySet)); 932Expression discriminator = discriminatedEntityIdentity.EntitySetColumnMap.Accept(translator, new TranslatorArg(typeof(int?))).Expression; 939entitySetReader = Expression.Constant(null, typeof(EntitySet)); 942entitySetReader = Expression.Condition( 943Expression.Equal(discriminator, Expression.Constant(i, typeof(int?))), 944Expression.Constant(entitySets[i], typeof(EntitySet)), 961result = Expression.New(EntityKey_ctor_SingleKey, 968result = Expression.New(EntityKey_ctor_CompositeKey, 970Expression.NewArrayInit(typeof(object), keyReaders)); 980Expression noEntityKeyExpression; 983noEntityKeyExpression = Expression.Constant(EntityKey.NoEntitySetKey, typeof(EntityKey)); 987noEntityKeyExpression = Expression.Constant(null, typeof(EntityKey)); 989result = Expression.Condition( 990Expression.Equal(setEntitySetStateSlotValue, Expression.Constant(null, typeof(EntitySet))), 1002private static Expression Emit_EntityKey_HasValue(SimpleColumnMap[] keyColumns) 1007Expression result = Emit_Reader_IsDBNull(keyColumns[0]); 1008result = Expression.Not(result); 1015private static Expression Emit_Reader_GetValue(int ordinal, Type type) 1018Expression result = Emit_EnsureType(Expression.Call(Shaper_Reader, DbDataReader_GetValue, Expression.Constant(ordinal)), type); 1025private static Expression Emit_Reader_IsDBNull(int ordinal) 1028Expression result = Expression.Call(Shaper_Reader, DbDataReader_IsDBNull, Expression.Constant(ordinal)); 1036private static Expression Emit_Reader_IsDBNull(ColumnMap columnMap) 1039Expression result = Emit_Reader_IsDBNull(((ScalarColumnMap)columnMap).ColumnPos); 1046private static Expression Emit_Shaper_GetPropertyValueWithErrorHandling(Type propertyType, int ordinal, string propertyName, string typeName, TypeUsage columnType) 1049Expression result; 1053result = Expression.Call(Shaper_Parameter, Shaper_GetSpatialPropertyValueWithErrorHandling.MakeGenericMethod(propertyType), 1054Expression.Constant(ordinal), Expression.Constant(propertyName), Expression.Constant(typeName), Expression.Constant(primitiveColumnType, typeof(PrimitiveTypeKind))); 1058result = Expression.Call(Shaper_Parameter, Shaper_GetPropertyValueWithErrorHandling.MakeGenericMethod(propertyType), Expression.Constant(ordinal), Expression.Constant(propertyName), Expression.Constant(typeName)); 1066private static Expression Emit_Shaper_GetColumnValueWithErrorHandling(Type resultType, int ordinal, TypeUsage columnType) 1069Expression result; 1074result = Expression.Call(Shaper_Parameter, Shaper_GetSpatialColumnValueWithErrorHandling.MakeGenericMethod(resultType), Expression.Constant(ordinal), Expression.Constant(primitiveColumnType, typeof(PrimitiveTypeKind))); 1078result = Expression.Call(Shaper_Parameter, Shaper_GetColumnValueWithErrorHandling.MakeGenericMethod(resultType), Expression.Constant(ordinal)); 1086private static Expression Emit_Shaper_GetGeographyColumnValue(int ordinal) 1089Expression result = Expression.Call(Shaper_Parameter, Shaper_GetGeographyColumnValue, Expression.Constant(ordinal)); 1096private static Expression Emit_Shaper_GetGeometryColumnValue(int ordinal) 1099Expression result = Expression.Call(Shaper_Parameter, Shaper_GetGeometryColumnValue, Expression.Constant(ordinal)); 1106private static Expression Emit_Shaper_GetState(int stateSlotNumber, Type type) 1109Expression result = Emit_EnsureType(Expression.ArrayIndex(Shaper_State, Expression.Constant(stateSlotNumber)), type); 1116private static Expression Emit_Shaper_SetState(int stateSlotNumber, Expression value) 1119Expression result = Expression.Call(Shaper_Parameter, Shaper_SetState.MakeGenericMethod(value.Type), Expression.Constant(stateSlotNumber), value); 1126private static Expression Emit_Shaper_SetStatePassthrough(int stateSlotNumber, Expression value) 1129Expression result = Expression.Call(Shaper_Parameter, Shaper_SetStatePassthrough.MakeGenericMethod(value.Type), Expression.Constant(stateSlotNumber), value); 1151Expression result = null; 1152Expression nullSentinelCheck = null; 1175result = Expression.MemberInit(Expression.New(constructor), propertyBindings); 1182result = Expression.Condition(nullSentinelCheck, Emit_NullConstant(result.Type), result); 1193Expression result; 1205Expression entitySetReader = null; 1206Expression entityKeyReader = Emit_EntityKey_ctor(this, entityIdentity, false, out entitySetReader); 1210Expression nullCheckExpression = Expression.Not(Emit_EntityKey_HasValue(entityIdentity.Keys)); 1216Expression constructEntity = null; 1236Expression constructNonProxyEntity = Emit_ConstructEntity(oSpaceType, propertyBindings, entityKeyReader, entitySetReader, arg, null); 1243Expression constructProxyEntity = Emit_ConstructEntity(oSpaceType, propertyBindings, entityKeyReader, entitySetReader, arg, proxyTypeInfo); 1245constructEntity = Expression.Condition(Shaper_ProxyCreationEnabled, 1257constructEntity = Expression.Call(Shaper_Parameter, Shaper_HandleIEntityWithKey.MakeGenericMethod(clrType), 1271constructEntity = Expression.Call(Shaper_Parameter, Shaper_HandleEntityAppendOnly.MakeGenericMethod(clrType), 1279constructEntity = Expression.Call(Shaper_Parameter, Shaper_HandleEntity.MakeGenericMethod(clrType), 1289constructEntity = Expression.Call(Shaper_Parameter, Shaper_HandleEntityNoTracking.MakeGenericMethod(clrType), 1297result = Expression.Condition( 1307private Expression Emit_ConstructEntity(EntityType oSpaceType, IEnumerable<MemberBinding> propertyBindings, Expression entityKeyReader, Expression entitySetReader, TranslatorArg arg, EntityProxyTypeInfo proxyTypeInfo) 1313Expression constructEntity; 1317constructEntity = Expression.MemberInit(Expression.New(proxyTypeInfo.ProxyType), propertyBindings); 1323constructEntity = Expression.MemberInit(Expression.New(constructor), propertyBindings); 1334constructEntity = Expression.Call(Expression.Constant(proxyTypeInfo), EntityProxyTypeInfo_SetEntityWrapper, constructEntity); 1338constructEntity = Expression.Call(proxyTypeInfo.InitializeEntityCollections, constructEntity); 1375Expression valueReader = columnMap.Properties[i].Accept(this, new TranslatorArg(propertyType)).Expression; 1383Expression valueReaderWithErrorHandling = Emit_Shaper_GetPropertyValueWithErrorHandling(propertyType, scalarColumnMap.ColumnPos, propertyName, propertyAccessor.DeclaringType.Name, scalarColumnMap.Type); 1388MemberBinding binding = Expression.Bind(GetProperty(propertyAccessor, entityDeclaringType), valueReader); 1424Expression result; 1429Expression discriminatorReader = AcceptWithMappedType(this, columnMap.TypeDiscriminator, columnMap).Expression; 1434BuildExpressionToGetRecordState(columnMap, null, null, Expression.Constant(true)), 1453Expression discriminatorConstant = Expression.Constant(typeChoice.Key, discriminatorReader.Type); 1454Expression discriminatorMatches; 1461discriminatorMatches = Expression.Call(Expression.Constant(TrailingSpaceStringComparer.Instance), IEqualityComparerOfString_Equals, discriminatorConstant, discriminatorReader); 1468result = Expression.Condition(discriminatorMatches, 1483Expression result = (Expression)multipleDiscriminatorPolymorphicColumnMapHelper.Invoke(this, new object[] { columnMap, arg }); 1491private Expression MultipleDiscriminatorPolymorphicColumnMapHelper<TElement>(MultipleDiscriminatorPolymorphicColumnMap columnMap, TranslatorArg arg) 1494Expression[] discriminatorReaders = new Expression[columnMap.TypeDiscriminators.Length]; 1499Expression discriminatorValues = Expression.NewArrayInit(typeof(object), discriminatorReaders); 1502List<Expression> elementDelegates = new List<Expression>(); 1507Expression typeReader = Emit_EnsureType(AcceptWithMappedType(this, typeChoice.Value, columnMap).UnwrappedExpression, typeof(TElement)); 1509Expression typeDelegatePair = Expression.New( 1511Expression.Constant(typeChoice.Key), 1519Expression result = Expression.Call(Shaper_Parameter, shaperDiscriminateOfT, 1521Expression.Constant(columnMap.Discriminate), 1522Expression.NewArrayInit(typeDelegatePairType, elementDelegates) 1532Expression result = null; 1533Expression nullSentinelCheck = null; 1547Expression nullConstant; 1577result = Expression.Condition(nullSentinelCheck, nullConstant, result); 1583private Expression BuildExpressionToGetRecordState(StructuredColumnMap columnMap, Expression entityKeyReader, Expression entitySetReader, Expression nullCheckExpression) 1609Expression[] propertyReaders = new Expression[readerCount]; 1615Expression propertyReader = columnMap.Properties[ordinal].Accept(this, new TranslatorArg(typeof(Object))).Expression; 1618propertyReaders[ordinal] = Expression.Call(Shaper_Parameter, Shaper_SetColumnValue, 1619Expression.Constant(stateSlotNumber), 1620Expression.Constant(ordinal), 1621Expression.Coalesce(propertyReader, DBNull_Value) 1630propertyReaders[readerCount - 1] = Expression.Call(Shaper_Parameter, Shaper_SetEntityRecordInfo, 1631Expression.Constant(stateSlotNumber), 1643Expression result = Expression.Call(Emit_Shaper_GetState(stateSlotNumber, typeof(RecordState)), RecordState_GatherData, Shaper_Parameter); 1649Expression nullResult = Expression.Call(Emit_Shaper_GetState(stateSlotNumber, typeof(RecordState)), RecordState_SetNullRecord, Shaper_Parameter); 1651result = Expression.Condition(nullCheckExpression, nullResult, result); 1660private Expression HandleLinqRecord(RecordColumnMap columnMap, InitializerMetadata initializerMetadata) 1681Expression result = initializerMetadata.Emit(this, propertyReaders); 1688private Expression HandleRegularRecord(RecordColumnMap columnMap, TranslatorArg arg, RowType spanRowType) 1694Expression[] columnReaders = new Expression[columnMap.Properties.Length]; 1697Expression columnReader = AcceptWithMappedType(this, columnMap.Properties[i], columnMap).UnwrappedExpression; 1700columnReaders[i] = Expression.Coalesce(Emit_EnsureType(columnReader, typeof(object)), DBNull_Value); 1703Expression columnReaderArray = Expression.NewArrayInit(typeof(object), columnReaders); 1714Expression typeUsage = Expression.Constant(type, typeof(TypeUsage)); 1717Expression result = Emit_EnsureType(Expression.New(MaterializedDataRecord_ctor, Shaper_Workspace, typeUsage, columnReaderArray), arg.RequestedType); 1724private Expression HandleSpandexRecord(RecordColumnMap columnMap, TranslatorArg arg, RowType spanRowType) 1729Expression result = columnMap.Properties[0].Accept(this, arg).Expression; 1737Expression spannedResultReader = propertyTranslatorResult.Expression; 1743Expression expressionToGetCoordinator = collectionTranslatorResult.ExpressionToGetCoordinator; 1749result = Expression.Call(Shaper_Parameter, handleFullSpanCollectionMethod, result, expressionToGetCoordinator, Expression.Constant(targetMember)); 1757result = Expression.Call(Shaper_Parameter, handleRelationshipSpanMethod, result, spannedResultReader, Expression.Constant(targetMember)); 1763result = Expression.Call(Shaper_Parameter, handleFullSpanElementMethod, result, spannedResultReader, Expression.Constant(targetMember)); 1834Expression elementReader = elementColumnMap.Accept(this, new TranslatorArg(elementType)).UnconvertedExpression; 1839Expression[] keyReaders; 1843keyReaders = new Expression[columnMap.Keys.Length]; 1846Expression keyReader = AcceptWithMappedType(this, columnMap.Keys[i], columnMap).Expression; 1852keyReaders = new Expression[] { }; 1857Expression discriminatorReader = null; 1864Expression expressionToGetCoordinator = BuildExpressionToGetCoordinator(elementType, elementReader, keyReaders, discriminatorReader, discriminatorValue, coordinatorScratchpad); 1867Expression result; 1875result = Expression.Call(expressionToGetCoordinator, getElementsExpression); 1898Expression.New(GetConstructor(typeToInstantiate)), 1913result = Emit_EnsureType(Expression.New(constructorInfo, result), compensatingCollectionType); 1977private Expression BuildExpressionToGetCoordinator(Type elementType, Expression element, Expression[] keyReaders, Expression discriminator, object discriminatorValue, CoordinatorScratchpad coordinatorScratchpad) 1988List<Expression> setKeyTerms = new List<Expression>(keyReaders.Length); 1989List<Expression> checkKeyTerms = new List<Expression>(keyReaders.Length); 1991foreach (Expression keyReader in keyReaders) 2019Expression.Constant(discriminatorValue, discriminator.Type), 2026Expression result = Emit_Shaper_GetState(stateSlotNumber, typeof(Coordinator<>).MakeGenericType(elementType)); 2043Expression entitySetReader; // Ignored here; used when constructing Entities 2046Expression result = Expression.Condition( 2049Expression.Constant(null, typeof(EntityKey)) 2066Expression result; 2087result = Expression.Call(Shaper_Reader, readerMethod, Expression.Constant(ordinal)); 2097result = Expression.Convert(result, nonNullableType); 2108result = Expression.Condition( 2111Expression.Convert(Expression.Convert(result, TypeSystem.GetNonNullableType(DetermineClrType(columnType.EdmType))), typeof(object))); 2124Expression resultWithErrorHandling = Emit_Shaper_GetColumnValueWithErrorHandling(arg.RequestedType, ordinal, columnType); 2129private static Expression Emit_Conditional_NotDBNull(Expression result, int ordinal, Type columnType) 2131result = Expression.Condition(Emit_Reader_IsDBNull(ordinal), 2132Expression.Constant(TypeSystem.GetDefaultValue(columnType), columnType),
System\Data\Objects\ELinq\BindingContext.cs (4)
10using LinqExpression = System.Linq.Expressions.Expression; 78internal bool TryGetBoundExpression(Expression linqExpression, out CqtExpression cqtExpression) 97internal Binding(Expression linqExpression, CqtExpression cqtExpression) 105internal readonly Expression LinqExpression;
System\Data\Objects\ELinq\CompiledELinqQueryState.cs (5)
202internal override Expression Expression 236internal static Expression Replace(LambdaExpression query, ObjectContext objectContext, object[] parameterValues) 248internal override Expression VisitParameter(ParameterExpression p) 251Expression result; 254result = Expression.Constant(value, p.Type);
System\Data\Objects\ELinq\ELinqQueryState.cs (10)
34private readonly Expression _expression; 50internal ELinqQueryState(Type elementType, ObjectContext context, Expression expression) 72internal ELinqQueryState(Type elementType, ObjectQuery query, Expression expression) 245Expression includeCall = Expression.Call(Expression.Constant(sourceQuery), includeMethod, new Expression[] { Expression.Constant(includePath, typeof(string)) }); 269internal override bool TryGetExpression(out System.Linq.Expressions.Expression expression) 277internal virtual Expression Expression { get { return _expression; } }
System\Data\Objects\ELinq\EntityExpressionVisitor.cs (75)
25internal virtual Expression Visit(Expression exp) 115ReadOnlyCollection<Expression> arguments = this.VisitExpressionList(initializer.Arguments); 118return Expression.ElementInit(initializer.AddMethod, arguments); 123internal virtual Expression VisitUnary(UnaryExpression u) 125Expression operand = this.Visit(u.Operand); 128return Expression.MakeUnary(u.NodeType, operand, u.Type, u.Method); 133internal virtual Expression VisitBinary(BinaryExpression b) 135Expression left = this.Visit(b.Left); 136Expression right = this.Visit(b.Right); 137Expression conversion = this.Visit(b.Conversion); 141return Expression.Coalesce(left, right, conversion as LambdaExpression); 143return Expression.MakeBinary(b.NodeType, left, right, b.IsLiftedToNull, b.Method); 148internal virtual Expression VisitTypeIs(TypeBinaryExpression b) 150Expression expr = this.Visit(b.Expression); 153return Expression.TypeIs(expr, b.TypeOperand); 158internal virtual Expression VisitConstant(ConstantExpression c) 163internal virtual Expression VisitConditional(ConditionalExpression c) 165Expression test = this.Visit(c.Test); 166Expression ifTrue = this.Visit(c.IfTrue); 167Expression ifFalse = this.Visit(c.IfFalse); 170return Expression.Condition(test, ifTrue, ifFalse); 175internal virtual Expression VisitParameter(ParameterExpression p) 180internal virtual Expression VisitMemberAccess(MemberExpression m) 182Expression exp = this.Visit(m.Expression); 185return Expression.MakeMemberAccess(exp, m.Member); 190internal virtual Expression VisitMethodCall(MethodCallExpression m) 192Expression obj = this.Visit(m.Object); 193IEnumerable<Expression> args = this.VisitExpressionList(m.Arguments); 196return Expression.Call(obj, m.Method, args); 201internal virtual ReadOnlyCollection<Expression> VisitExpressionList(ReadOnlyCollection<Expression> original) 203List<Expression> list = null; 206Expression p = this.Visit(original[i]); 213list = new List<Expression>(n); 228Expression e = this.Visit(assignment.Expression); 231return Expression.Bind(assignment.Member, e); 241return Expression.MemberBind(binding.Member, bindings); 251return Expression.ListBind(binding.Member, initializers); 306internal virtual Expression VisitLambda(LambdaExpression lambda) 308Expression body = this.Visit(lambda.Body); 311return Expression.Lambda(lambda.Type, body, lambda.Parameters); 318IEnumerable<Expression> args = this.VisitExpressionList(nex.Arguments); 322return Expression.New(nex.Constructor, args, nex.Members); 324return Expression.New(nex.Constructor, args); 329internal virtual Expression VisitMemberInit(MemberInitExpression init) 335return Expression.MemberInit(n, bindings); 340internal virtual Expression VisitListInit(ListInitExpression init) 346return Expression.ListInit(n, initializers); 351internal virtual Expression VisitNewArray(NewArrayExpression na) 353IEnumerable<Expression> exprs = this.VisitExpressionList(na.Expressions); 358return Expression.NewArrayInit(na.Type.GetElementType(), exprs); 362return Expression.NewArrayBounds(na.Type.GetElementType(), exprs); 368internal virtual Expression VisitInvocation(InvocationExpression iv) 370IEnumerable<Expression> args = this.VisitExpressionList(iv.Arguments); 371Expression expr = this.Visit(iv.Expression); 374return Expression.Invoke(expr, args); 379internal virtual Expression VisitExtension(Expression ext) 384internal static Expression Visit(Expression exp, Func<Expression, Func<Expression, Expression>, Expression> visit) 392private readonly Func<Expression, Func<Expression, Expression>, Expression> _visit; 393internal BasicExpressionVisitor(Func<Expression, Func<Expression, Expression>, Expression> visit) 397internal override Expression Visit(Expression exp)
System\Data\Objects\ELinq\ExpressionConverter.cs (17)
35private readonly Expression _expression; 118internal ExpressionConverter(Funcletizer funcletizer, Expression expression) 324private bool IsQueryRoot(Expression Expression) 880Expression argument = callExpression.Arguments[argumentOrdinal]; 884private Expression GetLambdaExpression(Expression argument) 899private DbExpression TranslateSet(Expression linq) 905private DbExpression TranslateExpression(Expression linq) 1360Expression patternExpression = call.Arguments[0]; 1361Expression inputExpression = call.Object; 1453private DbFunctionExpression TranslateIntoCanonicalFunction(string functionName, Expression Expression, params Expression[] linqArguments) 1470private DbFunctionExpression CreateCanonicalFunction(string functionName, Expression Expression, params DbExpression[] translatedArguments) 1489private EdmFunction FindCanonicalFunction(string functionName, IList<TypeUsage> argumentTypes, bool isGroupAggregateFunction, Expression Expression) 1503private EdmFunction FindFunction(string namespaceName, string functionName, IList<TypeUsage> argumentTypes, bool isGroupAggregateFunction, Expression Expression) 1527private static void ThrowUnresolvableFunction(Expression Expression) 1548private static void ThrowUnresolvableFunctionOverload(Expression Expression, bool isAmbiguous)
System\Data\Objects\ELinq\Funcletizer.cs (49)
41private readonly HashSet<Expression> _linqExpressionStack = new HashSet<Expression>(); 59_rootContextExpression = Expression.Constant(_rootContext); 111internal Expression Funcletize(Expression expression, out Func<bool> recompileRequired) 117Func<Expression, bool> isClientConstant; 118Func<Expression, bool> isClientVariable; 148Expression result = visitor.Visit(expression); 158private Expression ReplaceRootContextParameter(Expression expression) 176private static Func<Expression, bool> Nominate(Expression expression, Func<Expression, bool> localCriterion) 179HashSet<Expression> candidates = new HashSet<Expression>(); 181Func<Expression, Func<Expression, Expression>, Expression> visit = (exp, baseVisit) => 220private bool IsImmutable(Expression expression) 252private bool IsClosureExpression(Expression expression) 272private bool IsCompiledQueryParameterVariable(Expression expression) 324private readonly Func<Expression, bool> _isClientConstant; 325private readonly Func<Expression, bool> _isClientVariable; 330Func<Expression, bool> isClientConstant, 331Func<Expression, bool> isClientVariable) 354internal override Expression Visit(Expression exp) 397private static NotSupportedException InvalidCompiledQueryParameterException(Expression expression) 441private Func<object> CompileExpression(Expression expression) 443Func<object> func = Expression 453private Expression InlineValue(Expression expression, bool recompileOnChange) 487Expression result = null; 498result = InlineExpression(Expression.Quote(lambda)); 505: Expression.Constant(value, expression.Type); 550private Expression InlineObjectQuery(ObjectQuery inlineQuery, Type expressionType) 554Expression queryExpression; 559queryExpression = Expression.Constant(inlineQuery, expressionType); 582private Expression InlineExpression(Expression exp) 602private readonly Expression _funcletizedExpression; 608Expression funcletizedExpression, 646_cachedDelegate = Expression.Lambda(delegateType, _funcletizedExpression, _compiledQueryParameters).Compile(); 664Expression wrappedExpression = Expression.Invoke(Expression.Constant(method), this._funcletizedExpression); 686private bool TryEvaluatePath(Expression expression, out ConstantExpression constantExpression) 717constantExpression = Expression.Constant(memberVal, expression.Type);
System\Data\Objects\ELinq\InitializerFacet.cs (30)
138internal abstract Expression Emit(Translator translator, List<TranslatorResult> propertyTranslatorResults); 151protected static List<Expression> GetPropertyReaders(List<TranslatorResult> propertyTranslatorResults) 153List<Expression> propertyReaders = propertyTranslatorResults.Select(s => s.UnwrappedExpression).ToList(); 214internal override Expression Emit(Translator translator, List<TranslatorResult> propertyTranslatorResults) 229Expression newGrouping = Expression.Convert(Expression.New(constructor, GetPropertyReaders(propertyTranslatorResults)), this.ClrType); 297internal override Expression Emit(Translator translator, List<TranslatorResult> propertyTranslatorResults) 303Expression nullProjection = Expression.Constant(null, this.ClrType); 306Expression newProjection = Expression.New(_newExpression.Constructor, GetPropertyReaders(propertyTranslatorResults)); 309return Expression.Call(UserExpressionMarker.MakeGenericMethod(newProjection.Type), newProjection); 336internal override Expression Emit(Translator translator, List<TranslatorResult> propertyReaders) 389internal override Expression Emit(Translator translator, List<TranslatorResult> propertyReaders) 400Expression value = propertyReaders[i].UnwrappedExpression; 401MemberBinding newBinding = Expression.Bind(originalBinding.Member, value); 402MemberBinding constantBinding = Expression.Bind(originalBinding.Member, Expression.Constant( 408Expression newProjection = Expression.MemberInit(_initExpression.NewExpression, memberBindings); 411return Expression.Call(UserExpressionMarker.MakeGenericMethod(newProjection.Type), newProjection); 469internal override Expression Emit(Translator translator, List<TranslatorResult> propertyTranslatorResults) 477Expression shaper = Translator.Shaper_Parameter; 478Expression owner = propertyTranslatorResults[0].Expression; 482Expression coordinator = collectionResult.ExpressionToGetCoordinator; 485Expression result = Expression.Call(createEntityCollectionMethod, 486shaper, owner, coordinator, Expression.Constant(_navigationProperty.RelationshipType.FullName), Expression.Constant(_navigationProperty.ToEndMember.Name));
System\Data\Objects\ELinq\LinqExpressionNormalizer.cs (62)
48private readonly Dictionary<Expression, Pattern> _patterns = new Dictionary<Expression, Pattern>(); 56internal override Expression VisitBinary(BinaryExpression b) 65Expression normalizedLeft = UnwrapObjectConvert(b.Left); 66Expression normalizedRight = UnwrapObjectConvert(b.Right); 97private static Expression UnwrapObjectConvert(Expression input) 109return Expression.Constant(constant.Value, constant.Value.GetType()); 124private bool IsConstantZero(Expression expression) 136internal override Expression VisitMethodCall(MethodCallExpression m) 154return Expression.Equal(m.Arguments[0], m.Arguments[1], LiftToNull, m.Method); 157return Expression.NotEqual(m.Arguments[0], m.Arguments[1], LiftToNull, m.Method); 160return Expression.GreaterThan(m.Arguments[0], m.Arguments[1], LiftToNull, m.Method); 163return Expression.GreaterThanOrEqual(m.Arguments[0], m.Arguments[1], LiftToNull, m.Method); 166return Expression.LessThan(m.Arguments[0], m.Arguments[1], LiftToNull, m.Method); 169return Expression.LessThanOrEqual(m.Arguments[0], m.Arguments[1], LiftToNull, m.Method); 172return Expression.Multiply(m.Arguments[0], m.Arguments[1], m.Method); 175return Expression.Subtract(m.Arguments[0], m.Arguments[1], m.Method); 178return Expression.Add(m.Arguments[0], m.Arguments[1], m.Method); 181return Expression.Divide(m.Arguments[0], m.Arguments[1], m.Method); 184return Expression.Modulo(m.Arguments[0], m.Arguments[1], m.Method); 187return Expression.And(m.Arguments[0], m.Arguments[1], m.Method); 190return Expression.Or(m.Arguments[0], m.Arguments[1], m.Method); 193return Expression.ExclusiveOr(m.Arguments[0], m.Arguments[1], m.Method); 209return Expression.Negate(m.Arguments[0], m.Method); 212return Expression.UnaryPlus(m.Arguments[0], m.Method); 216return Expression.Convert(m.Arguments[0], m.Type, m.Method); 220return Expression.Not(m.Arguments[0], m.Method); 234return Expression.Equal(m.Arguments[0], m.Arguments[1], false, m.Method); 293return Expression.Call(enumerableContainsMethod, m.Object, m.Arguments[0]); 315Expression normalizedArgument; 319List<Expression> normalizedArguments = new List<Expression>(callExpression.Arguments); 324result = Expression.Call(callExpression.Object, callExpression.Method, normalizedArguments); 386private static bool TryMatchCoalescePattern(Expression expression, out Expression normalized) 398normalized = Expression.Quote(normalized); 414normalized = Expression.Lambda(lambda.Type, Expression.Convert(coalesce.Left, typeof(bool)), lambda.Parameters); 437private static BinaryExpression CreateRelationalOperator(ExpressionType op, Expression left, Expression right) 451private static bool TryCreateRelationalOperator(ExpressionType op, Expression left, Expression right, out BinaryExpression result) 458result = Expression.Equal(left, right, LiftToNull, relationalOperatorPlaceholderMethod); 462result = Expression.NotEqual(left, right, LiftToNull, relationalOperatorPlaceholderMethod); 466result = Expression.LessThan(left, right, LiftToNull, relationalOperatorPlaceholderMethod); 470result = Expression.LessThanOrEqual(left, right, LiftToNull, relationalOperatorPlaceholderMethod); 474result = Expression.GreaterThan(left, right, LiftToNull, relationalOperatorPlaceholderMethod); 478result = Expression.GreaterThanOrEqual(left, right, LiftToNull, relationalOperatorPlaceholderMethod); 497private Expression CreateCompareExpression(Expression left, Expression right) 499Expression result = Expression.Condition( 501Expression.Constant(0), 502Expression.Condition( 504Expression.Constant(1), 505Expression.Constant(-1))); 537internal ComparePattern(Expression left, Expression right) 546internal readonly Expression Left; 551internal readonly Expression Right;
System\Data\Objects\ELinq\MethodCallTranslator.cs (19)
23using LinqExpression = System.Linq.Expressions.Expression; 342internal static LinqExpression RemoveConvertToObjectQuery(LinqExpression queryExpression) 487LinqExpression inputQuery = RemoveConvertToObjectQuery(call.Object); 509LinqExpression inputQuery = RemoveConvertToObjectQuery(call.Object); 700private Expression UnwrapNoOpConverts(Expression expression) 708Expression operand = UnwrapNoOpConverts(convertExpression.Operand); 859LinqExpression[] linqArguments; 864List<LinqExpression> arguments = new List<LinqExpression>(call.Arguments.Count + 1); 1335internal static bool IsEmptyArray(LinqExpression expression) 1543LinqExpression linqCount = call.Arguments[1]; 1659protected CqtExpression TranslateLeft(ExpressionConverter parent, LinqExpression expr) 1663protected virtual CqtExpression TranslateRight(ExpressionConverter parent, LinqExpression expr) 1719protected override CqtExpression TranslateRight(ExpressionConverter parent, LinqExpression expr) 2217parent.TranslateExpression(Expression.Constant(defaultValue, elementType)); 2241internal static DbExpression TranslateContains(ExpressionConverter parent, Expression sourceExpression, Expression valueExpression)
System\Data\Objects\ELinq\ObjectQueryProvider.cs (8)
63IQueryable<S> IQueryProvider.CreateQuery<S>(Expression expression) 85S IQueryProvider.Execute<S>(Expression expression) 100IQueryable IQueryProvider.CreateQuery(Expression expression) 124object IQueryProvider.Execute(Expression expression) 139private ObjectQuery<S> CreateQuery<S>(Expression expression) 161private ObjectQuery CreateQuery(Expression expression, Type ofType) 189internal static TResult ExecuteSingle<TResult>(IEnumerable<TResult> query, Expression queryRoot) 194private static Func<IEnumerable<TResult>, TResult> GetElementFunction<TResult>(Expression queryRoot)
System\Data\Objects\ELinq\ReflectionUtil.cs (1)
388internal static bool TryIdentifySequenceMethod(Expression expression, bool unwrapLambda, out SequenceMethod sequenceMethod)
System\Data\Objects\ELinq\SpatialMethodCallTranslator.cs (1)
236Expression[] arguments;
System\Data\Objects\ELinq\Translator.cs (20)
37internal abstract DbExpression Translate(ExpressionConverter parent, Expression linq); 47where T_Linq : Expression 51internal override DbExpression Translate(ExpressionConverter parent, Expression linq) 85var expressions = new List<Expression>(); 88expressions.Add(Expression.Constant(o, elementType)); 95return parent.TranslateExpression(Expression.NewArrayInit(elementType, expressions)); 381private static DbExpression TranslateCount(ExpressionConverter parent, Type sequenceElementType, Expression sequence) 389Expression countCall = Expression.Call(countMethod, sequence); 887internal override DbExpression Translate(ExpressionConverter parent, Expression linq) 898internal override DbExpression Translate(ExpressionConverter parent, Expression linq) 1007Expression linqLeft = linq.Left; 1008Expression linqRight = linq.Right; 1030private static DbExpression CreateIsNullExpression(ExpressionConverter parent, Expression input) 1040private static bool ExpressionIsNullConstant(Expression expression) 1050private static Expression UnwrapConvert(Expression input) 1067Expression notLinq = Expression.Not( 1068Expression.Equal(linq.Left, linq.Right));
System\Data\Objects\ELinq\TypeSystem.cs (3)
89internal static Expression EnsureType(Expression expression, Type requiredType) 95expression = Expression.Convert(expression, requiredType);
System\Data\Objects\EntityFunctions.cs (64)
40return ((IQueryable)objectQuerySource).Provider.Execute<System.Double?>(Expression.Call((MethodInfo)MethodInfo.GetCurrentMethod(),Expression.Constant(collection))); 54return ((IQueryable)objectQuerySource).Provider.Execute<System.Double?>(Expression.Call((MethodInfo)MethodInfo.GetCurrentMethod(),Expression.Constant(collection))); 68return ((IQueryable)objectQuerySource).Provider.Execute<System.Double?>(Expression.Call((MethodInfo)MethodInfo.GetCurrentMethod(),Expression.Constant(collection))); 82return ((IQueryable)objectQuerySource).Provider.Execute<System.Double?>(Expression.Call((MethodInfo)MethodInfo.GetCurrentMethod(),Expression.Constant(collection))); 96return ((IQueryable)objectQuerySource).Provider.Execute<System.Double?>(Expression.Call((MethodInfo)MethodInfo.GetCurrentMethod(),Expression.Constant(collection))); 110return ((IQueryable)objectQuerySource).Provider.Execute<System.Double?>(Expression.Call((MethodInfo)MethodInfo.GetCurrentMethod(),Expression.Constant(collection))); 124return ((IQueryable)objectQuerySource).Provider.Execute<System.Double?>(Expression.Call((MethodInfo)MethodInfo.GetCurrentMethod(),Expression.Constant(collection))); 138return ((IQueryable)objectQuerySource).Provider.Execute<System.Double?>(Expression.Call((MethodInfo)MethodInfo.GetCurrentMethod(),Expression.Constant(collection))); 152return ((IQueryable)objectQuerySource).Provider.Execute<System.Double?>(Expression.Call((MethodInfo)MethodInfo.GetCurrentMethod(),Expression.Constant(collection))); 166return ((IQueryable)objectQuerySource).Provider.Execute<System.Double?>(Expression.Call((MethodInfo)MethodInfo.GetCurrentMethod(),Expression.Constant(collection))); 180return ((IQueryable)objectQuerySource).Provider.Execute<System.Double?>(Expression.Call((MethodInfo)MethodInfo.GetCurrentMethod(),Expression.Constant(collection))); 194return ((IQueryable)objectQuerySource).Provider.Execute<System.Double?>(Expression.Call((MethodInfo)MethodInfo.GetCurrentMethod(),Expression.Constant(collection))); 208return ((IQueryable)objectQuerySource).Provider.Execute<System.Double?>(Expression.Call((MethodInfo)MethodInfo.GetCurrentMethod(),Expression.Constant(collection))); 222return ((IQueryable)objectQuerySource).Provider.Execute<System.Double?>(Expression.Call((MethodInfo)MethodInfo.GetCurrentMethod(),Expression.Constant(collection))); 236return ((IQueryable)objectQuerySource).Provider.Execute<System.Double?>(Expression.Call((MethodInfo)MethodInfo.GetCurrentMethod(),Expression.Constant(collection))); 250return ((IQueryable)objectQuerySource).Provider.Execute<System.Double?>(Expression.Call((MethodInfo)MethodInfo.GetCurrentMethod(),Expression.Constant(collection))); 264return ((IQueryable)objectQuerySource).Provider.Execute<System.Double?>(Expression.Call((MethodInfo)MethodInfo.GetCurrentMethod(),Expression.Constant(collection))); 278return ((IQueryable)objectQuerySource).Provider.Execute<System.Double?>(Expression.Call((MethodInfo)MethodInfo.GetCurrentMethod(),Expression.Constant(collection))); 292return ((IQueryable)objectQuerySource).Provider.Execute<System.Double?>(Expression.Call((MethodInfo)MethodInfo.GetCurrentMethod(),Expression.Constant(collection))); 306return ((IQueryable)objectQuerySource).Provider.Execute<System.Double?>(Expression.Call((MethodInfo)MethodInfo.GetCurrentMethod(),Expression.Constant(collection))); 320return ((IQueryable)objectQuerySource).Provider.Execute<System.Double?>(Expression.Call((MethodInfo)MethodInfo.GetCurrentMethod(),Expression.Constant(collection))); 334return ((IQueryable)objectQuerySource).Provider.Execute<System.Double?>(Expression.Call((MethodInfo)MethodInfo.GetCurrentMethod(),Expression.Constant(collection))); 348return ((IQueryable)objectQuerySource).Provider.Execute<System.Double?>(Expression.Call((MethodInfo)MethodInfo.GetCurrentMethod(),Expression.Constant(collection))); 362return ((IQueryable)objectQuerySource).Provider.Execute<System.Double?>(Expression.Call((MethodInfo)MethodInfo.GetCurrentMethod(),Expression.Constant(collection))); 376return ((IQueryable)objectQuerySource).Provider.Execute<System.Double?>(Expression.Call((MethodInfo)MethodInfo.GetCurrentMethod(),Expression.Constant(collection))); 390return ((IQueryable)objectQuerySource).Provider.Execute<System.Double?>(Expression.Call((MethodInfo)MethodInfo.GetCurrentMethod(),Expression.Constant(collection))); 404return ((IQueryable)objectQuerySource).Provider.Execute<System.Double?>(Expression.Call((MethodInfo)MethodInfo.GetCurrentMethod(),Expression.Constant(collection))); 418return ((IQueryable)objectQuerySource).Provider.Execute<System.Double?>(Expression.Call((MethodInfo)MethodInfo.GetCurrentMethod(),Expression.Constant(collection))); 432return ((IQueryable)objectQuerySource).Provider.Execute<System.Double?>(Expression.Call((MethodInfo)MethodInfo.GetCurrentMethod(),Expression.Constant(collection))); 446return ((IQueryable)objectQuerySource).Provider.Execute<System.Double?>(Expression.Call((MethodInfo)MethodInfo.GetCurrentMethod(),Expression.Constant(collection))); 460return ((IQueryable)objectQuerySource).Provider.Execute<System.Double?>(Expression.Call((MethodInfo)MethodInfo.GetCurrentMethod(),Expression.Constant(collection))); 474return ((IQueryable)objectQuerySource).Provider.Execute<System.Double?>(Expression.Call((MethodInfo)MethodInfo.GetCurrentMethod(),Expression.Constant(collection)));
System\Data\Objects\Internal\EntityProxyFactory.cs (4)
311ParameterExpression Object_Parameter = Expression.Parameter(typeof(object), "instance"); 312Func<object, object> nonProxyGetter = Expression.Lambda<Func<object, object>>( 313Expression.PropertyOrField( 314Expression.Convert(Object_Parameter, declaringType),
System\Data\Objects\Internal\EntityProxyTypeInfo.cs (17)
78ParameterExpression Object_Parameter = Expression.Parameter(typeof(object), "proxy"); 79ParameterExpression Value_Parameter = Expression.Parameter(typeof(object), "value"); 84Expression<Func<object, object>> lambda = Expression.Lambda<Func<object, object>>( 85Expression.Field( 86Expression.Convert(Object_Parameter, entityWrapperField.DeclaringType), entityWrapperField), 103Proxy_SetEntityWrapper = Expression.Lambda<Func<object, object, object>>( 104Expression.Assign( 105Expression.Field( 106Expression.Convert(Object_Parameter, entityWrapperField.DeclaringType), 112ParameterExpression PropertyName_Parameter = Expression.Parameter(typeof(string), "propertyName"); 116_baseGetter = Expression.Lambda<Func<object, string, object>>( 117Expression.Call(Expression.Convert(Object_Parameter, proxyType), baseGetterMethod, PropertyName_Parameter), 121ParameterExpression PropertyValue_Parameter = Expression.Parameter(typeof(object), "propertyName"); 125_baseSetter = Expression.Lambda<Action<object, string, object>>( 126Expression.Call(Expression.Convert(Object_Parameter, proxyType), baseSetterMethod, PropertyName_Parameter, PropertyValue_Parameter),
System\Data\Objects\Internal\EntitySqlQueryState.cs (1)
119internal override bool TryGetExpression(out System.Linq.Expressions.Expression expression)
System\Data\Objects\Internal\ObjectQueryState.cs (1)
242internal abstract bool TryGetExpression(out System.Linq.Expressions.Expression expression);
System\Data\Objects\Internal\PocoPropertyAccessorStrategy.cs (2)
303return Expression.Lambda<Func<object>>(Expression.New(typeToInstantiate)).Compile();
System\Data\Objects\ObjectContext.cs (1)
845var body = selector.Body;
System\Data\Objects\ObjectQuery.cs (2)
105System.Linq.Expressions.Expression IQueryable.Expression 113internal abstract System.Linq.Expressions.Expression GetExpression();
System\Data\Objects\ObjectQuery_TResultType.cs (7)
120internal override Expression GetExpression() 124Expression retExpr; 127retExpr = Expression.Constant(this); 136retExpr = Expression.Call(retExpr, mergeAsMethod, Expression.Constant(this.QueryState.UserSpecifiedMergeOption.Value)); 144retExpr = Expression.Call(retExpr, includeSpanMethod, Expression.Constant(this.QueryState.Span));
System\Data\Objects\SqlClient\SqlFunctions.cs (4)
40return ((IQueryable)objectQuerySource).Provider.Execute<System.Int32?>(Expression.Call((MethodInfo)MethodInfo.GetCurrentMethod(),Expression.Constant(arg))); 54return ((IQueryable)objectQuerySource).Provider.Execute<System.Int32?>(Expression.Call((MethodInfo)MethodInfo.GetCurrentMethod(),Expression.Constant(arg)));
System\Data\Query\InternalTrees\ColumnMapFactory.cs (5)
159Expression.Bind(prop, Expression.Parameter(prop.PropertyType, "placeholder")), 191NewExpression newExpr = null == constructor ? Expression.New(type) : Expression.New(constructor); 192MemberInitExpression init = Expression.MemberInit(newExpr, memberBindings);
System\Data\SqlClient\SqlSpatialDataReader.cs (7)
89var readerParam = Expression.Parameter(typeof(BinaryReader)); 90var binarySerializable = Expression.Variable(spatialType); 93var ex = Expression.Lambda<Func<BinaryReader, object>>( 94Expression.Block( 96Expression.Assign(binarySerializable, Expression.New(spatialType)), 97Expression.Call(binarySerializable, readMethod, readerParam),
System\Data\SqlClient\SqlTypesAssembly.cs (54)
23internal static Expression Null<TNullType>() 25return Expression.Constant(null, typeof(TNullType)); 28internal static Expression Null(Type nullType) 30return Expression.Constant(null, nullType); 33internal static Expression<Func<TArg, TResult>> Lambda<TArg, TResult>(string argumentName, Func<ParameterExpression, Expression> createLambdaBodyGivenParameter) 35ParameterExpression argParam = Expression.Parameter(typeof(TArg), argumentName); 36Expression lambdaBody = createLambdaBodyGivenParameter(argParam); 37return Expression.Lambda<Func<TArg, TResult>>(lambdaBody, argParam); 40internal static Expression Call(this Expression exp, string methodName) 42return Expression.Call(exp, methodName, Type.EmptyTypes); 45internal static Expression ConvertTo(this Expression exp, Type convertToType) 47return Expression.Convert(exp, convertToType); 50internal static Expression ConvertTo<TConvertToType>(this Expression exp) 52return Expression.Convert(exp, typeof(TConvertToType)); 57private readonly Expression condition; 58private readonly Expression ifTrueThen; 60internal ConditionalExpressionBuilder(Expression conditionExpression, Expression ifTrueExpression) 66internal Expression Else(Expression resultIfFalse) 68return Expression.Condition(this.condition, ifTrueThen, resultIfFalse); 72internal static ConditionalExpressionBuilder IfTrueThen(this Expression conditionExp, Expression resultIfTrue) 77internal static Expression Property<TPropertyType>(this Expression exp, string propertyName) 82return Expression.Property(exp, prop); 520var dataParam = Expression.Parameter(typeof(TArg)); 521var sridParam = Expression.Parameter(typeof(int)); 526Expression sqlData = BuildConvertToSqlType(dataParam, staticCtorMethod.GetParameters()[0].ParameterType); 528var ex = Expression.Lambda<Func<TArg, int, object>>(Expression.Call(null, staticCtorMethod, sqlData, sridParam), dataParam, sridParam); 533private static Expression BuildConvertToSqlType(Expression toConvert, Type convertTo) 562private static Expression BuildConvertToSqlBytes(Expression toConvert, Type sqlBytesType) 568Expression result = Expression.New(byteArrayCtor, toConvert); 572private static Expression BuildConvertToSqlChars(Expression toConvert, Type sqlCharsType) 580Expression result = Expression.New(sqlCharsFromSqlStringCtor, Expression.New(sqlStringFromStringCtor, toConvert)); 584private static Expression BuildConvertToSqlString(Expression toConvert, Type sqlStringType) 590Expression result = Expression.Convert(Expression.New(sqlStringFromStringCtor, toConvert), typeof(object)); 594private static Expression BuildConvertToSqlXml(Expression toConvert, Type sqlXmlType) 600Expression result = Expression.New(readerCtor, toConvert);
System.Data.Linq (550)
ChangeDirector.cs (74)
84Expression cmd = this.GetInsertCommand(item); 107Expression cmd = this.GetInsertCommand(item); 137Expression cmd = this.GetUpdateCommand(item); 160Expression cmd = this.GetUpdateCommand(item); 185Expression cmd = this.GetDeleteCommand(item); 201Expression cmd = this.GetDeleteCommand(item); 230private Expression GetInsertCommand(TrackedObject item) { 235ParameterExpression p = Expression.Parameter(item.Type.Table.RowType.Type, "p"); 237Expression autoSync = this.CreateAutoSync(membersToSync, p); 238LambdaExpression resultSelector = Expression.Lambda(autoSync, p); 239return Expression.Call(typeof(DataManipulation), "Insert", new Type[] { item.Type.InheritanceRoot.Type, resultSelector.Body.Type }, Expression.Constant(item.Current), resultSelector); 242return Expression.Call(typeof(DataManipulation), "Insert", new Type[] { item.Type.InheritanceRoot.Type }, Expression.Constant(item.Current)); 250private Expression CreateAutoSync(List<MetaDataMember> membersToSync, Expression source) { 253Expression[] initializers = new Expression[membersToSync.Count]; 255initializers[i++] = Expression.Convert(this.GetMemberExpression(source, mm.Member), typeof(object)); 257return Expression.NewArrayInit(typeof(object), initializers); 314private Expression GetUpdateCommand(TrackedObject tracked) { 319ParameterExpression p = Expression.Parameter(rowTypeRoot.Type, "p"); 320Expression pv = p; 322pv = Expression.Convert(p, rowType.Type); 325Expression check = this.GetUpdateCheck(pv, tracked); 327check = Expression.Lambda(check, p); 333Expression autoSync = this.CreateAutoSync(membersToSync, pv); 334LambdaExpression resultSelector = Expression.Lambda(autoSync, p); 336return Expression.Call(typeof(DataManipulation), "Update", new Type[] { rowTypeRoot.Type, resultSelector.Body.Type }, Expression.Constant(tracked.Current), check, resultSelector); 339return Expression.Call(typeof(DataManipulation), "Update", new Type[] { rowTypeRoot.Type, resultSelector.Body.Type }, Expression.Constant(tracked.Current), resultSelector); 343return Expression.Call(typeof(DataManipulation), "Update", new Type[] { rowTypeRoot.Type }, Expression.Constant(tracked.Current), check); 346return Expression.Call(typeof(DataManipulation), "Update", new Type[] { rowTypeRoot.Type }, Expression.Constant(tracked.Current)); 350private Expression GetUpdateCheck(Expression serverItem, TrackedObject tracked) { 353return Expression.Equal( 355this.GetMemberExpression(Expression.Constant(tracked.Current), mt.VersionMember.Member) 359Expression expr = null; 366Expression eq = 367Expression.Equal( 369Expression.Constant(memberValue, mm.Type) 371expr = (expr != null) ? Expression.And(expr, eq) : eq; 379private Expression GetDeleteCommand(TrackedObject tracked) { 382ParameterExpression p = Expression.Parameter(rowTypeRoot.Type, "p"); 383Expression pv = p; 385pv = Expression.Convert(p, rowType.Type); 388Expression check = this.GetUpdateCheck(pv, tracked); 390check = Expression.Lambda(check, p); 391return Expression.Call(typeof(DataManipulation), "Delete", new Type[] { rowTypeRoot.Type }, Expression.Constant(original), check); 394return Expression.Call(typeof(DataManipulation), "Delete", new Type[] { rowTypeRoot.Type }, Expression.Constant(original)); 398private Expression GetDeleteVerificationCommand(TrackedObject tracked) { 401ParameterExpression p = Expression.Parameter(table.ElementType, "p"); 402Expression pred = Expression.Lambda(Expression.Equal(p, Expression.Constant(tracked.Current)), p); 403Expression where = Expression.Call(typeof(Queryable), "Where", new Type[] { table.ElementType }, table.Expression, pred); 404Expression selector = Expression.Lambda(Expression.Constant(0, typeof(int?)), p); 405Expression select = Expression.Call(typeof(Queryable), "Select", new Type[] { table.ElementType, typeof(int?) }, where, selector); 406Expression singleOrDefault = Expression.Call(typeof(Queryable), "SingleOrDefault", new Type[] { typeof(int?) }, select); 411private Expression GetMemberExpression(Expression exp, MemberInfo mi) { 414return Expression.Field(exp, fi); 416return Expression.Property(exp, pi);
DataContext.cs (15)
807private Expression GetMethodCall(object instance, MethodInfo methodInfo, params object[] parameters) { 811List<Expression> args = new List<Expression>(parameters.Length); 817args.Add(Expression.Constant(parameters[i], pType)); 819return Expression.Call(Expression.Constant(instance), methodInfo, args); 821return Expression.Call(Expression.Constant(instance), methodInfo); 1131Expression IQueryable.Expression { 1132get { return Expression.Constant(this); } 1146IQueryable IQueryProvider.CreateQuery(Expression expression) { 1160IQueryable<TResult> IQueryProvider.CreateQuery<TResult>(Expression expression) { 1170object IQueryProvider.Execute(Expression expression) { 1175TResult IQueryProvider.Execute<TResult>(Expression expression) { 1188return ((IEnumerable<TEntity>)this.context.Provider.Execute(Expression.Constant(this)).ReturnValue).GetEnumerator();
DataQuery.cs (7)
17Expression queryExpression; 20public DataQuery(DataContext context, Expression expression) { 25Expression IQueryable.Expression { 34IQueryable IQueryProvider.CreateQuery(Expression expression) { 45IQueryable<S> IQueryProvider.CreateQuery<S>(Expression expression) { 53object IQueryProvider.Execute(Expression expression) { 57S IQueryProvider.Execute<S>(Expression expression) {
DataServices.cs (51)
202internal Expression GetObjectQuery(MetaType type, object[] keyValues) { 212internal Expression GetObjectQuery(MetaType type, Expression[] keyValues) { 214ParameterExpression serverItem = Expression.Parameter(table.ElementType, "p"); 217Expression whereExpression = null; 220Expression memberExpression = (metaMember.Member is FieldInfo) 221? Expression.Field(serverItem, (FieldInfo)metaMember.Member) 222: Expression.Property(serverItem, (PropertyInfo)metaMember.Member); 223Expression memberEqualityExpression = Expression.Equal(memberExpression, keyValues[i]); 225? Expression.And(whereExpression, memberEqualityExpression) 228return Expression.Call(typeof(Queryable), "Where", new Type[] { table.ElementType }, table.Expression, Expression.Lambda(whereExpression, serverItem)); 231internal Expression GetDataMemberQuery(MetaDataMember member, Expression[] keyValues) { 239Expression thisSource = Expression.Constant(context.GetTable(rootType)); 241thisSource = Expression.Call(typeof(Enumerable), "Cast", new Type[] { association.ThisMember.DeclaringType.Type }, thisSource); 243Expression thisInstance = Expression.Call(typeof(Enumerable), "FirstOrDefault", new Type[] { association.ThisMember.DeclaringType.Type }, 246Expression otherSource = Expression.Constant(context.GetTable(association.OtherType.InheritanceRoot.Type)); 248otherSource = Expression.Call(typeof(Enumerable), "Cast", new Type[] { association.OtherType.Type }, otherSource); 250Expression expr = System.Data.Linq.SqlClient.Translator.TranslateAssociation( 256Expression query = this.GetObjectQuery(member.DeclaringType, keyValues); 258ParameterExpression p = Expression.Parameter(elementType, "p"); 259Expression e = p; 261e = Expression.Convert(e, member.DeclaringType.Type); 262Expression mem = (member.Member is PropertyInfo) 263? Expression.Property(e, (PropertyInfo)member.Member) 264: Expression.Field(e, (FieldInfo)member.Member); 265LambdaExpression selector = Expression.Lambda(mem, p); 266return Expression.Call(typeof(Queryable), "Select", new Type[] { elementType, selector.Body.Type }, query, selector); 270private static Expression[] BuildKeyExpressions(object[] keyValues, ReadOnlyCollection<MetaDataMember> keyMembers) { 271Expression[] keyValueExpressions = new Expression[keyValues.Length]; 274Expression keyValueExpression = Expression.Constant(keyValues[i], metaMember.Type); 414ParameterExpression p = Expression.Parameter(typeof(object[]), "keys"); 415Expression[] keyExprs = new Expression[keyValues.Length]; 419keyExprs[i] = Expression.Convert( 421Expression.ArrayIndex(p, Expression.Constant(i)), 426Expression q = this.services.GetDataMemberQuery(this.member, keyExprs); 427LambdaExpression lambda = Expression.Lambda(q, p); 469public object GetCachedObject(Expression query) { 533private bool GetKeysFromPredicate(MetaType type, Dictionary<MetaDataMember, object> keys, Expression expr) { 538bex = Expression.Equal(mex.Arguments[0], mex.Arguments[1]); 556private static bool GetKeyFromPredicate(MetaType type, Dictionary<MetaDataMember, object> keys, Expression mex, Expression vex) {
DataShape.cs (7)
65Expression op = expression.Body; 69LambdaExpression lambda = Expression.Lambda(op, expression.Parameters.ToArray()); 166Expression body = lambda.Body; 191internal override Expression VisitMemberAccess(MemberExpression m) { 196internal override Expression VisitMethodCall(MethodCallExpression m) { 198foreach (Expression arg in m.Arguments) { 270internal override Expression VisitMethodCall(MethodCallExpression m) {
Provider\IDataServices.cs (1)
15object GetCachedObject(Expression query);
Provider\IProvider.cs (4)
77IExecuteResult Execute(Expression query); 84ICompiledQuery Compile(Expression query); 109string GetQueryText(Expression query); 116DbCommand GetCommand(Expression query);
SqlClient\Common\SqlFactory.cs (29)
203internal SqlExpression DATEADD(string partName, SqlExpression value, SqlExpression expr, Expression sourceExpression, bool asNullable) { 221internal SqlExpression DATETIMEOFFSETADD(string partName, SqlExpression value, SqlExpression expr, Expression sourceExpression, bool asNullable) { 288internal SqlExpression Value(Type clrType, ProviderType sqlType, object value, bool isClientSpecified, Expression sourceExpression) { 299internal SqlExpression StaticType(MetaType typeOf, Expression sourceExpression) { 316internal SqlTable Table(MetaTable table, MetaType rowType, Expression sourceExpression) { 324internal SqlRowNumber RowNumber(List<SqlOrderExpression> orderBy, Expression sourceExpression) { 328internal SqlUnary Unary(SqlNodeType nodeType, SqlExpression expression, Expression sourceExpression) { 332internal SqlUnary Unary(SqlNodeType nodeType, SqlExpression expression, MethodInfo method, Expression sourceExpression) { 363internal SqlUnary UnaryConvert(Type targetClrType, ProviderType targetSqlType, SqlExpression expression, Expression sourceExpression) { 369internal SqlUnary UnaryValueOf(SqlExpression expression, Expression sourceExpression) { 418internal SqlBetween Between(SqlExpression expr, SqlExpression start, SqlExpression end, Expression source) { 422internal SqlIn In(SqlExpression expr, IEnumerable<SqlExpression> values, Expression source) { 426internal SqlLike Like(SqlExpression expr, SqlExpression pattern, SqlExpression escape, Expression source) { 432internal SqlSearchedCase SearchedCase(SqlWhen[] whens, SqlExpression @else, Expression sourceExpression) { 441internal SqlExpression Case(Type clrType, SqlExpression discriminator, List<SqlExpression> matches, List<SqlExpression> values, Expression sourceExpression) { 465internal SqlExpression Parameter(object value, Expression source) { 471internal SqlExpression ValueFromObject(object value, Expression sourceExpression) { 475internal SqlExpression ValueFromObject(object value, bool isClientSpecified, Expression sourceExpression) { 485internal SqlExpression ValueFromObject(object value, Type clrType, bool isClientSpecified, Expression sourceExpression) { 493public SqlExpression TypedLiteralNull(Type type, Expression sourceExpression) { 512internal SqlExpression TypeCase(Type clrType, MetaType rowType, SqlExpression discriminator, IEnumerable<SqlTypeCaseWhen> whens, Expression sourceExpression) { 516internal SqlNew New(MetaType type, ConstructorInfo cons, IEnumerable<SqlExpression> args, IEnumerable<MemberInfo> argMembers, IEnumerable<SqlMemberAssign> bindings, Expression sourceExpression) { 521internal SqlMethodCall MethodCall(MethodInfo method, SqlExpression obj, SqlExpression[] args, Expression sourceExpression) { 525internal SqlMethodCall MethodCall(Type returnType, MethodInfo method, SqlExpression obj, SqlExpression[] args, Expression sourceExpression) { 530internal SqlExprSet ExprSet(SqlExpression[] exprs, Expression sourceExpression) { 564internal SqlFunctionCall FunctionCall(Type clrType, string name, IEnumerable<SqlExpression> args, Expression source) { 569internal SqlFunctionCall FunctionCall(Type clrType, ProviderType sqlType, string name, IEnumerable<SqlExpression> args, Expression source) { 573internal SqlTableValuedFunctionCall TableValuedFunctionCall(MetaType rowType, Type clrType, string name, IEnumerable<SqlExpression> args, Expression source) { 593internal SqlJoin MakeJoin(SqlJoinType joinType, SqlSource location, SqlAlias alias, SqlExpression condition, Expression source) {
SqlClient\Common\SqlNode.cs (51)
115private Expression sourceExpression; 117internal SqlNode(SqlNodeType nodeType, Expression sourceExpression) { 122internal Expression SourceExpression { 153internal SqlExpression(SqlNodeType nodeType, Type clrType, Expression sourceExpression) 201internal SqlSimpleTypeExpression(SqlNodeType nodeType, Type clrType, ProviderType sqlType, Expression sourceExpression) 217internal SqlDiscriminatorOf(SqlExpression obj, Type clrType, ProviderType sqlType, Expression sourceExpression) 235internal SqlDiscriminatedType(ProviderType sqlType, SqlExpression discriminator, MetaType targetType, Expression sourceExpression) 259internal SqlStatement(SqlNodeType nodeType, Expression sourceExpression) 265internal SqlSource(SqlNodeType nt, Expression sourceExpression) 284internal SqlSelect(SqlExpression selection, SqlSource from, Expression sourceExpression) 384internal SqlTable(MetaTable table, MetaType rowType, ProviderType sqlRowType, Expression sourceExpression) 428internal SqlUserQuery(SqlNodeType nt, SqlExpression projection, IEnumerable<SqlExpression> args, Expression source) 435internal SqlUserQuery(string queryText, SqlExpression projection, IEnumerable<SqlExpression> args, Expression source) 476internal SqlStoredProcedureCall(MetaFunction function, SqlExpression projection, IEnumerable<SqlExpression> args, Expression source) 492internal SqlUserRow(MetaType rowType, ProviderType sqlType, SqlUserQuery query, Expression source) 519internal SqlUserColumn(Type clrType, ProviderType sqlType, SqlUserQuery query, string name, bool isRequired, Expression source) 635internal SqlJoin(SqlJoinType type, SqlSource left, SqlSource right, SqlExpression cond, Expression sourceExpression) 743internal SqlNop(Type clrType, ProviderType sqlType, Expression sourceExpression) 751internal SqlLift(Type type, SqlExpression liftedExpression, Expression sourceExpression) 875internal SqlRowNumber(Type clrType, ProviderType sqlType, List<SqlOrderExpression> orderByList, Expression sourceExpression) 890internal SqlUnary(SqlNodeType nt, Type clrType, ProviderType sqlType, SqlExpression expr, Expression sourceExpression) 894internal SqlUnary(SqlNodeType nt, Type clrType, ProviderType sqlType, SqlExpression expr, MethodInfo method, Expression sourceExpression) 1007internal SqlBetween(Type clrType, ProviderType sqlType, SqlExpression expr, SqlExpression start, SqlExpression end, Expression source) 1034internal SqlIn(Type clrType, ProviderType sqlType, SqlExpression expression, IEnumerable<SqlExpression> values, Expression sourceExpression) 1059internal SqlLike(Type clrType, ProviderType sqlType, SqlExpression expr, SqlExpression pattern, SqlExpression escape, Expression source) 1152internal SqlSearchedCase(Type clrType, IEnumerable<SqlWhen> whens, SqlExpression @else, Expression sourceExpression) 1196internal SqlSimpleCase(Type clrType, SqlExpression expr, IEnumerable<SqlWhen> whens, Expression sourceExpression) 1240internal SqlClientCase(Type clrType, SqlExpression expr, IEnumerable<SqlClientWhen> whens, Expression sourceExpression) 1320internal SqlTypeCase(Type clrType, ProviderType sqlType, MetaType rowType, SqlExpression discriminator, IEnumerable<SqlTypeCaseWhen> whens, Expression sourceExpression) 1387internal SqlValue(Type clrType, ProviderType sqlType, object value, bool isClientSpecified, Expression sourceExpression) 1406internal SqlParameter(Type clrType, ProviderType sqlType, string name, Expression sourceExpression) 1429internal SqlVariable(Type clrType, ProviderType sqlType, string name, Expression sourceExpression) 1478internal SqlColumn(Type clrType, ProviderType sqlType, string name, MetaDataMember member, SqlExpression expr, Expression sourceExpression) 1580internal SqlRow(Expression sourceExpression) 1628internal SqlGrouping(Type clrType, ProviderType sqlType, SqlExpression key, SqlExpression group, Expression sourceExpression) 1667internal SqlNew(MetaType metaType, ProviderType sqlType, ConstructorInfo cons, IEnumerable<SqlExpression> args, IEnumerable<MemberInfo> argMembers, IEnumerable<SqlMemberAssign> members, Expression sourceExpression) 1732internal SqlMethodCall(Type clrType, ProviderType sqlType, MethodInfo method, SqlExpression obj, IEnumerable<SqlExpression> args, Expression sourceExpression) 1765internal SqlIncludeScope(SqlNode child, Expression sourceExpression) 1778internal SqlClientArray(Type clrType, ProviderType sqlType, SqlExpression[ ] exprs, Expression sourceExpression) 1798internal SqlLink(object id, MetaType rowType, Type clrType, ProviderType sqlType, SqlExpression expression, MetaDataMember member, IEnumerable<SqlExpression> keyExpressions, SqlExpression expansion, Expression sourceExpression) 1841internal SqlExprSet(Type clrType, IEnumerable <SqlExpression> exprs, Expression sourceExpression) 1934internal SqlJoinedCollection(Type clrType, ProviderType sqlType, SqlExpression expression, SqlExpression count, Expression sourceExpression) 1965internal SqlUpdate(SqlSelect select, IEnumerable<SqlAssign> assignments, Expression sourceExpression) 1992internal SqlInsert(SqlTable table, SqlExpression expr, Expression sourceExpression) 2038internal SqlDelete(SqlSelect select, Expression sourceExpression) 2056internal SqlBlock(Expression sourceExpression) 2070internal SqlAssign(SqlExpression lValue, SqlExpression rValue, Expression sourceExpression) 2153internal SqlFunctionCall(Type clrType, ProviderType sqlType, string name, IEnumerable <SqlExpression > args , Expression source) 2157internal SqlFunctionCall(SqlNodeType nodeType, Type clrType, ProviderType sqlType, string name , IEnumerable <SqlExpression> args , Expression source) 2180internal SqlTableValuedFunctionCall(MetaType rowType, Type clrType, ProviderType sqlType, string name, IEnumerable <SqlExpression > args , Expression source) 2273internal SqlClientParameter(Type clrType, ProviderType sqlType, LambdaExpression accessor, Expression sourceExpression):
SqlClient\Query\Funcletizer.cs (84)
13internal static Expression Funcletize(Expression expression) { 18Dictionary<Expression, bool> locals; 20internal Localizer(Dictionary<Expression, bool> locals) { 24internal Expression Localize(Expression expression) { 28internal override Expression Visit(Expression exp) { 41private static Expression MakeLocal(Expression e) { 48Expression local = MakeLocal(ue.Operand); 49return (e.NodeType == ExpressionType.Convert) ? Expression.Convert(local, e.Type) : Expression.ConvertChecked(local, e.Type); 55return Expression.Constant(null, ue.Type); 59return Expression.Invoke(Expression.Constant(Expression.Lambda(e).Compile())); 70static public bool IsIndependent(Expression expression) { 75internal override Expression VisitLambda(LambdaExpression lambda) { 81internal override Expression VisitParameter(ParameterExpression p) { 89Dictionary<Expression, bool> locals; 91internal Dictionary<Expression, bool> MapLocals(Expression expression) { 92this.locals = new Dictionary<Expression, bool>(); 98internal override Expression Visit(Expression expression) { 126internal override Expression VisitMemberAccess(MemberExpression m) { 131internal override Expression VisitMethodCall(MethodCallExpression m) { 146internal virtual Expression Visit(Expression exp) { 232ReadOnlyCollection<Expression> arguments = this.VisitExpressionList(initializer.Arguments); 234return Expression.ElementInit(initializer.AddMethod, arguments); 239internal virtual Expression VisitUnary(UnaryExpression u) { 240Expression operand = this.Visit(u.Operand); 242return Expression.MakeUnary(u.NodeType, operand, u.Type, u.Method); 247internal virtual Expression VisitBinary(BinaryExpression b) { 248Expression left = this.Visit(b.Left); 249Expression right = this.Visit(b.Right); 251return Expression.MakeBinary(b.NodeType, left, right, b.IsLiftedToNull, b.Method); 256internal virtual Expression VisitTypeIs(TypeBinaryExpression b) { 257Expression expr = this.Visit(b.Expression); 259return Expression.TypeIs(expr, b.TypeOperand); 264internal virtual Expression VisitConstant(ConstantExpression c) { 268internal virtual Expression VisitConditional(ConditionalExpression c) { 269Expression test = this.Visit(c.Test); 270Expression ifTrue = this.Visit(c.IfTrue); 271Expression ifFalse = this.Visit(c.IfFalse); 273return Expression.Condition(test, ifTrue, ifFalse); 278internal virtual Expression VisitParameter(ParameterExpression p) { 282internal virtual Expression VisitMemberAccess(MemberExpression m) { 283Expression exp = this.Visit(m.Expression); 285return Expression.MakeMemberAccess(exp, m.Member); 290internal virtual Expression VisitMethodCall(MethodCallExpression m) { 291Expression obj = this.Visit(m.Object); 292IEnumerable<Expression> args = this.VisitExpressionList(m.Arguments); 294return Expression.Call(obj, m.Method, args); 299internal virtual ReadOnlyCollection<Expression> VisitExpressionList(ReadOnlyCollection<Expression> original) { 300List<Expression> list = null; 302Expression p = this.Visit(original[i]); 307list = new List<Expression>(n); 315return new ReadOnlyCollection<Expression>(list); 320Expression e = this.Visit(assignment.Expression); 322return Expression.Bind(assignment.Member, e); 330return Expression.MemberBind(binding.Member, bindings); 338return Expression.ListBind(binding.Member, initializers); 384internal virtual Expression VisitLambda(LambdaExpression lambda) { 385Expression body = this.Visit(lambda.Body); 387return Expression.Lambda(lambda.Type, body, lambda.Parameters); 393IEnumerable<Expression> args = this.VisitExpressionList(nex.Arguments); 396return Expression.New(nex.Constructor, args, nex.Members); 399return Expression.New(nex.Constructor, args); 405internal virtual Expression VisitMemberInit(MemberInitExpression init) { 409return Expression.MemberInit(n, bindings); 414internal virtual Expression VisitListInit(ListInitExpression init) { 418return Expression.ListInit(n, initializers); 423internal virtual Expression VisitNewArray(NewArrayExpression na) { 424IEnumerable<Expression> exprs = this.VisitExpressionList(na.Expressions); 427return Expression.NewArrayInit(na.Type.GetElementType(), exprs); 430return Expression.NewArrayBounds(na.Type.GetElementType(), exprs); 436internal virtual Expression VisitInvocation(InvocationExpression iv) { 437IEnumerable<Expression> args = this.VisitExpressionList(iv.Arguments); 438Expression expr = this.Visit(iv.Expression); 440return Expression.Invoke(expr, args);
SqlClient\Query\MethodCallConverter.cs (1)
190private SqlExpression CreateComparison(SqlExpression a, SqlExpression b, Expression source) {
SqlClient\Query\QueryConverter.cs (116)
46Dictionary<ParameterExpression, Expression> exprMap; 49Expression dominatingExpression; 85this.exprMap = new Dictionary<ParameterExpression, Expression>(); 96internal SqlNode ConvertOuter(Expression node) { 123internal SqlNode Visit(Expression node) { 137internal SqlNode ConvertInner(Expression node, Expression dominantExpression) { 148private SqlNode VisitInner(Expression node) { 150Expression save = this.dominatingExpression; 240private static Expression ChooseBestDominatingExpression(Expression last, Expression next) { 274private SqlSelect VisitSequence(Expression exp) { 291Expression fex = Funcletizer.Funcletize(query.Expression); 343return this.VisitInvocation(Expression.Invoke(cq.Expression, invoke.Arguments)); 376ParameterExpression pa = Expression.Parameter(typeof(object[]), "args"); 378Expression.Lambda( 380Expression.Convert( 382Expression.ArrayIndex(pa, Expression.Constant(i)), 399private SqlExpression VisitExpression(Expression exp) { 412private SqlSelect VisitSelect(Expression sequence, LambdaExpression selector) { 459private SqlSelect VisitSelectMany(Expression sequence, LambdaExpression colSelector, LambdaExpression resultSelector) { 482private SqlSelect VisitJoin(Expression outerSequence, Expression innerSequence, LambdaExpression outerKeySelector, LambdaExpression innerKeySelector, LambdaExpression resultSelector) { 514private SqlSelect VisitGroupJoin(Expression outerSequence, Expression innerSequence, LambdaExpression outerKeySelector, LambdaExpression innerKeySelector, LambdaExpression resultSelector) { 543private SqlSelect VisitDefaultIfEmpty(Expression sequence) { 574private SqlSelect VisitOfType(Expression sequence, Type ofType) { 594private SqlNode VisitSequenceCast(Expression sequence, Type type) { 596ParameterExpression p = Expression.Parameter(sourceType, "pc"); 597return this.Visit(Expression.Call( 604Expression.Lambda( 605Expression.Convert(p, type), 627private SqlSelect VisitWhere(Expression sequence, LambdaExpression predicate) { 671Expression.Lambda( 673Expression.ArrayIndex(cpArray.Accessor.Body, Expression.Constant(vIndex.Value, vIndex.ClrType)), 693private SqlNode VisitChangeType(Expression expression, Type type) { 714Expression.Lambda(Expression.Convert(cp.Accessor.Body, type), cp.Accessor.Parameters.ToArray()), 824return this.VisitCast(Expression.Convert(qn.Arguments[0], qn.Type)) as SqlExpression; 827return this.VisitCast(Expression.Convert(qn.Arguments[0], typeof(decimal))) as SqlExpression; 859return this.VisitCast(Expression.Convert(qn.Arguments[0], typeof(decimal))) as SqlExpression; 921private SqlSelect VisitDistinct(Expression sequence) { 928private SqlSelect VisitTake(Expression sequence, Expression count) { 1041private SqlSelect VisitSkip(Expression sequence, Expression skipCount) { 1146Expression expr; 1240private SqlUserQuery VisitUserQuery(string query, Expression[] arguments, Type resultType) { 1403private SqlNode VisitConcat(Expression source1, Expression source2) { 1414private SqlNode VisitUnion(Expression source1, Expression source2) { 1425private SqlNode VisitIntersect(Expression source1, Expression source2) { 1449private SqlNode VisitExcept(Expression source1, Expression source2) { 1484private SqlSelect VisitOrderBy(Expression sequence, LambdaExpression expression, SqlOrderType orderType) { 1507private SqlSelect VisitThenBy(Expression sequence, LambdaExpression expression, SqlOrderType orderType) { 1525private SqlNode VisitGroupBy(Expression sequence, LambdaExpression keyLambda, LambdaExpression elemLambda, LambdaExpression resultSelector) { 1626private SqlNode VisitAggregate(Expression sequence, LambdaExpression lambda, SqlNodeType aggType, Type returnType) { 1649lambda = Expression.Lambda(selectionLambda.Type, selectionLambda.Body, selectionLambda.Parameters); 1776private SqlNode VisitContains(Expression sequence, Expression value) { 1793ParameterExpression p = Expression.Parameter(value.Type, "p"); 1794LambdaExpression lambda = Expression.Lambda(Expression.Equal(p, value), p); 1814private SqlNode VisitQuantifier(Expression sequence, LambdaExpression lambda, bool isAny) { 1865return this.Visit(Expression.Constant(table)); 1911return this.Visit(Expression.Constant(table)); 1947private object GetValue(Expression expression, string operation) { 1955private static Expression[] GetArray(Expression array) { 1965return obs.Select(o => Expression.Constant(o, elemType)).ToArray(); 1968return new Expression[] { }; 1972private Expression RemoveQuotes(Expression expression) { 1979private bool IsLambda(Expression expression) { 1983private LambdaExpression GetLambda(Expression expression) { 2371private SqlNode VisitFirst(Expression sequence, LambdaExpression lambda, bool isFirst) { 2389private SqlStatement VisitInsert(Expression item, LambdaExpression resultSelector) { 2396Expression source = this.services.Context.GetTable(metaTable.RowType.Type).Expression; 2477ParameterExpression p = Expression.Parameter(id.Type, "p"); 2478Expression[] init = new Expression[1] { Expression.Convert(p, typeof(object)) }; 2479NewArrayExpression arrExp = Expression.NewArrayInit(typeof(object), init); 2480LambdaExpression rs = Expression.Lambda(arrExp, p); 2502private bool IsDbGeneratedKeyProjectionOnly(Expression projection, MetaDataMember keyMember) { 2505Expression exp = array.Expressions[0]; 2556private SqlStatement VisitUpdate(Expression item, LambdaExpression check, LambdaExpression resultSelector) { 2561Expression source = this.services.Context.GetTable(metaTable.RowType.Type).Expression; 2568Expression seq = source; 2570ParameterExpression p = Expression.Parameter(rowType, "p"); 2571LambdaExpression idPredicate = Expression.Lambda(Expression.Equal(p, item), p); 2576findPredicate = Expression.Lambda(Expression.And(Expression.Invoke(findPredicate, p), Expression.Invoke(check, p)), p); 2578seq = Expression.Call(typeof(Enumerable), "Where", new Type[] { rowType }, seq, findPredicate); 2616seq = Expression.Call(typeof(Enumerable), "Where", new Type[] { rowType }, seq, idPredicate); 2617seq = Expression.Call(typeof(Enumerable), "Select", new Type[] { rowType, resultSelector.Body.Type }, seq, resultSelector); 2635private SqlStatement VisitDelete(Expression item, LambdaExpression check) { 2645Expression source = this.services.Context.GetTable(metaTable.RowType.Type).Expression; 2649ParameterExpression p = Expression.Parameter(rowType, "p"); 2650LambdaExpression idPredicate = Expression.Lambda(Expression.Equal(p, item), p); 2655findPredicate = Expression.Lambda(Expression.And(Expression.Invoke(findPredicate, p), Expression.Invoke(check, p)), p); 2657Expression seq = Expression.Call(typeof(Enumerable), "Where", new Type[] { rowType }, source, findPredicate);
SqlClient\Query\SqlBinder.cs (2)
938Expression.Lambda( 940Expression.MakeMemberAccess(cp.Accessor.Body, m.Member),
SqlClient\Query\SqlExpander.cs (1)
30Expression sourceExpression;
SqlClient\Query\SqlMethodCallConverter.cs (40)
728Expression source = sox.SourceExpression; 782Expression source = sox.SourceExpression; 900Expression source = mc.SourceExpression; 1011Expression source = mc.SourceExpression; 1041private SqlExpression CreateComparison(SqlExpression a, SqlExpression b, Expression source) { 1055Expression source = mc.SourceExpression; 1117Expression source = mc.SourceExpression; 1176Expression source = mc.SourceExpression; 1392Expression source = mc.SourceExpression; 1446Expression source = mc.SourceExpression; 1491private SqlExpression CreateFunctionCallStatic1(Type type, string functionName, List<SqlExpression> arguments, Expression source) { 1495private SqlExpression CreateFunctionCallStatic2(Type type, string functionName, List<SqlExpression> arguments, Expression source) { 1500Expression source = mc.SourceExpression; 1519Expression.Lambda( 1520Expression.Invoke(Expression.Constant(getStringContainsPatternForced), cp.Accessor.Body, Expression.Constant('~')), 1553Expression.Lambda( 1554Expression.Invoke(Expression.Constant(getStringStartsWithPatternForced), cp.Accessor.Body, Expression.Constant('~')), 1587Expression.Lambda( 1588Expression.Invoke(Expression.Constant(getStringEndsWithPatternForced), cp.Accessor.Body, Expression.Constant('~')), 1975Expression source = mc.SourceExpression; 2166Expression source = m.SourceExpression; 2340private SqlExpression CreateDateTimeFromDateAndTicks(SqlExpression sqlDate, SqlExpression sqlTicks, Expression source) { 2344private SqlExpression CreateDateTimeFromDateAndTicks(SqlExpression sqlDate, SqlExpression sqlTicks, Expression source, bool asNullable) { 2350private SqlExpression CreateDateTimeFromDateAndMs(SqlExpression sqlDate, SqlExpression ms, Expression source) { 2354private SqlExpression CreateDateTimeFromDateAndMs(SqlExpression sqlDate, SqlExpression ms, Expression source, bool asNullable) { 2361private SqlExpression CreateDateTimeOffsetFromDateAndTicks(SqlExpression sqlDate, SqlExpression sqlTicks, Expression source) { 2365private SqlExpression CreateDateTimeOffsetFromDateAndTicks(SqlExpression sqlDate, SqlExpression sqlTicks, Expression source, bool asNullable) { 2371private SqlExpression CreateDateTimeOffsetFromDateAndMs(SqlExpression sqlDate, SqlExpression ms, Expression source) { 2375private SqlExpression CreateDateTimeOffsetFromDateAndMs(SqlExpression sqlDate, SqlExpression ms, Expression source, bool asNullable) { 2382Expression source = mc.SourceExpression; 2474Expression source = mc.SourceExpression; 2486Expression.Lambda( 2487Expression.Call(typeof(SqlHelpers), "TranslateVBLikePattern", Type.EmptyTypes, cp.Accessor.Body, Expression.Constant('~')),
SqlClient\Query\SqlReorderer.cs (1)
100Expression sourceExpression;
SqlClient\Query\Translator.cs (51)
27internal SqlSelect BuildDefaultQuery(MetaType rowType, bool allowDeferred, SqlLink link, Expression source) { 41internal SqlExpression BuildProjection(SqlExpression item, MetaType rowType, bool allowDeferred, SqlLink link, Expression source) { 88private SqlNew BuildProjectionInternal(SqlExpression item, MetaType rowType, IEnumerable<MetaDataMember> members, bool allowDeferred, SqlLink link, Expression source) { 118private SqlLink BuildLink(SqlExpression item, MetaDataMember member, Expression source) { 148internal static Expression TranslateAssociation(DataContext context, MetaAssociation association, Expression otherSource, Expression[] keyValues, Expression thisInstance) { 164internal static Expression WhereClauseFromSourceAndKeys(Expression source, MetaDataMember[] keyMembers, Expression [] keyValues) { 166ParameterExpression p = Expression.Parameter(elementType, "p"); 167Expression whereExpression=null; 170Expression parameterAsDeclaring = elementType == metaMember.Member.DeclaringType ? 171(Expression)p : (Expression)Expression.Convert(p, metaMember.Member.DeclaringType); 172Expression memberExpression = (metaMember.Member is FieldInfo) 173? Expression.Field(parameterAsDeclaring, (FieldInfo)metaMember.Member) 174: Expression.Property(parameterAsDeclaring, (PropertyInfo)metaMember.Member); 175Expression keyValue = keyValues[i]; 177keyValue = Expression.Convert(keyValue, memberExpression.Type); 178Expression memberEqualityExpression = Expression.Equal(memberExpression, keyValue); 180? Expression.And(whereExpression, memberEqualityExpression) 183Expression sequenceExpression = Expression.Call(typeof(Enumerable), "Where", new Type[] {p.Type}, source, Expression.Lambda(whereExpression, p)); 193Expression otherSouce; 194Expression parameterReplacement; 195internal RelationComposer(ParameterExpression parameter, MetaAssociation association, Expression otherSouce, Expression parameterReplacement) { 209internal override Expression VisitParameter(ParameterExpression p) { 216private static Expression[] GetKeyValues(Expression expr, ReadOnlyCollection<MetaDataMember> keys) { 217List<Expression> values = new List<Expression>(); 219values.Add(Expression.PropertyOrField(expr, key.Name)); 224internal override Expression VisitMemberAccess(MemberExpression m) { 226Expression[] keyValues = GetKeyValues(this.Visit(m.Expression), this.association.ThisKey); 229Expression exp = this.Visit(m.Expression); 232return Expression.Call(typeof(Enumerable), "Count", new Type[] {TypeSystem.GetElementType(exp.Type)}, exp); 234return Expression.MakeMemberAccess(exp, m.Member); 249Expression source = new LinkedTableExpression(link, table, typeof(IQueryable<>).MakeGenericType(otherType.Type)); 251Expression[] keyExprs = new Expression[keyExpressions.Count]; 257Expression lex = link.Expression != null 258? (Expression)InternalExpression.Known(link.Expression) 259: (Expression)Expression.Constant(null, link.Member.Member.DeclaringType); 260Expression expr = TranslateAssociation(this.services.Context, mm.Association, source, keyExprs, lex);
SqlClient\SqlProvider.cs (15)
802ICompiledQuery IProvider.Compile(Expression query) { 849IExecuteResult IProvider.Execute(Expression query) { 991private IExecuteResult ExecuteAll(Expression query, QueryInfo[] queryInfos, IObjectReaderFactory factory, object[] userArguments, ICompiledSubQuery[] subQueries) { 1009private IExecuteResult GetCachedResult(Expression query) { 1029private IExecuteResult Execute(Expression query, QueryInfo queryInfo, IObjectReaderFactory factory, object[] parentArgs, object[] userArgs, ICompiledSubQuery[] subQueries, object lastResult) { 1140private MetaFunction GetFunction(Expression query) { 1242string IProvider.GetQueryText(Expression query) { 1271DbCommand IProvider.GetCommand(Expression query) { 1327private ResultShape GetResultShape(Expression query) { 1393private Type GetResultType(Expression query) { 1401internal QueryInfo[] BuildQuery(Expression query, SqlNodeAnnotations annotations) { 1666Expression tmp = Expression.Constant(null); 1687Expression query; 1692internal CompiledQuery(SqlProvider provider, Expression query, QueryInfo[] queryInfos, IObjectReaderFactory factory, ICompiledSubQuery[] subQueries) {
System.Data.Services (709)
parent\Client\System\Data\Services\Client\ALinq\ALinqExpressionVisitor.cs (58)
99internal virtual Expression Visit(Expression exp) 202ReadOnlyCollection<Expression> arguments = this.VisitExpressionList(initializer.Arguments); 205return Expression.ElementInit(initializer.AddMethod, arguments); 216internal virtual Expression VisitUnary(UnaryExpression u) 218Expression operand = this.Visit(u.Operand); 221return Expression.MakeUnary(u.NodeType, operand, u.Type, u.Method); 232internal virtual Expression VisitBinary(BinaryExpression b) 234Expression left = this.Visit(b.Left); 235Expression right = this.Visit(b.Right); 236Expression conversion = this.Visit(b.Conversion); 241return Expression.Coalesce(left, right, conversion as LambdaExpression); 245return Expression.MakeBinary(b.NodeType, left, right, b.IsLiftedToNull, b.Method); 257internal virtual Expression VisitTypeIs(TypeBinaryExpression b) 259Expression expr = this.Visit(b.Expression); 262return Expression.TypeIs(expr, b.TypeOperand); 273internal virtual Expression VisitConstant(ConstantExpression c) 283internal virtual Expression VisitConditional(ConditionalExpression c) 285Expression test = this.Visit(c.Test); 286Expression iftrue = this.Visit(c.IfTrue); 287Expression iffalse = this.Visit(c.IfFalse); 290return Expression.Condition(test, iftrue, iffalse); 301internal virtual Expression VisitParameter(ParameterExpression p) 311internal virtual Expression VisitMemberAccess(MemberExpression m) 313Expression exp = this.Visit(m.Expression); 316return Expression.MakeMemberAccess(exp, m.Member); 327internal virtual Expression VisitMethodCall(MethodCallExpression m) 329Expression obj = this.Visit(m.Object); 330IEnumerable<Expression> args = this.VisitExpressionList(m.Arguments); 333return Expression.Call(obj, m.Method, args); 344internal virtual ReadOnlyCollection<Expression> VisitExpressionList(ReadOnlyCollection<Expression> original) 346List<Expression> list = null; 349Expression p = this.Visit(original[i]); 356list = new List<Expression>(n); 368return new ReadOnlyCollection<Expression>(list); 381Expression e = this.Visit(assignment.Expression); 384return Expression.Bind(assignment.Member, e); 400return Expression.MemberBind(binding.Member, bindings); 416return Expression.ListBind(binding.Member, initializers); 497internal virtual Expression VisitLambda(LambdaExpression lambda) 499Expression body = this.Visit(lambda.Body); 503return Expression.Lambda(lambda.Type, body, lambda.Parameters); 521IEnumerable<Expression> args = this.VisitExpressionList(nex.Arguments); 526return Expression.New(nex.Constructor, args, nex.Members); 530return Expression.New(nex.Constructor, args); 542internal virtual Expression VisitMemberInit(MemberInitExpression init) 548return Expression.MemberInit(n, bindings); 559internal virtual Expression VisitListInit(ListInitExpression init) 565return Expression.ListInit(n, initializers); 576internal virtual Expression VisitNewArray(NewArrayExpression na) 578IEnumerable<Expression> exprs = this.VisitExpressionList(na.Expressions); 583return Expression.NewArrayInit(na.Type.GetElementType(), exprs); 587return Expression.NewArrayBounds(na.Type.GetElementType(), exprs); 599internal virtual Expression VisitInvocation(InvocationExpression iv) 601IEnumerable<Expression> args = this.VisitExpressionList(iv.Arguments); 602Expression expr = this.Visit(iv.Expression); 605return Expression.Invoke(expr, args);
parent\Client\System\Data\Services\Client\ALinq\ParameterReplacerVisitor.cs (6)
20private Expression newExpression; 28private ParameterReplacerVisitor(ParameterExpression oldParameter, Expression newExpression) 42internal static Expression Replace(Expression expression, ParameterExpression oldParameter, Expression newExpression) 53internal override Expression VisitParameter(ParameterExpression p)
System\Data\Services\DataServiceConfiguration.cs (8)
473internal static Expression ComposeQueryInterceptors(IDataService service, ResourceSetWrapper container) 486Expression predicate = null; 489predicate = (Expression)methods[i].Invoke(service.Instance, WebUtil.EmptyObjectArray); 510Expression adjustedPredicate = ParameterReplacerVisitor.Replace( 514filter = Expression.Lambda(Expression.And(filter.Body, adjustedPredicate), parameter); 541Expression predicate = null; 544predicate = (Expression)methods[i].Invoke(service.Instance, WebUtil.EmptyObjectArray);
System\Data\Services\ExpandSegment.cs (5)
47private readonly Expression filter; 70public ExpandSegment(string name, Expression filter) 87Expression filter, 108public Expression Filter 189private static void CheckFilterType(Expression filter)
System\Data\Services\Internal\NeedSkipTokenVisitor.cs (4)
130internal override Expression Visit(Expression exp) 153internal override Expression VisitMemberAccess(MemberExpression m) 180internal override Expression VisitParameter(ParameterExpression p)
System\Data\Services\Internal\ProjectedWrapper.cs (22)
155internal static MemberBinding[] Bind(Expression[] bindingExpressions, Type projectedWrapperType) 274Expression[] bindingExpressions) 280bindings[0] = Expression.Bind(projectedWrapperType.GetProperty("ResourceTypeName"), bindingExpressions[0]); 281bindings[1] = Expression.Bind(projectedWrapperType.GetProperty("PropertyNameList"), bindingExpressions[1]); 289private static MemberAssignment BindToProjectedProperty(Type projectedWrapperType, int propertyIndex, Expression expression) 298return Expression.Bind( 309Expression[] bindingExpressions, 339nextBindings[0] = Expression.Bind( 341Expression.Constant(string.Empty, typeof(string))); 342nextBindings[1] = Expression.Bind( 344Expression.Constant(string.Empty, typeof(string))); 350Expression restProjectedWrapper = Expression.MemberInit( 351Expression.New(typeof(ProjectedWrapperMany)), 353bindings[bindingStartIndex + precreatedProjectedWrapperTypes.Length - 1] = Expression.Bind( 369Expression.Constant(string.Empty, typeof(string))); 378bindings[bindingStartIndex + precreatedProjectedWrapperTypes.Length - 1] = Expression.Bind( 380Expression.MemberInit( 381Expression.New(typeof(ProjectedWrapperManyEnd)), 382Expression.Bind( 384Expression.Constant(string.Empty, typeof(string))))); 413public Expression Expression
System\Data\Services\Internal\PropertyAccessVisitor.cs (10)
34internal override Expression VisitMethodCall(MethodCallExpression m) 65Expression operand = m.Arguments[0]; 66Expression result = m; 74return Expression.Call(m.Object, m.Method, operand, m.Arguments[1]); 91internal override Expression VisitMemberAccess(MemberExpression m) 95Expression operand = m.Expression; 96Expression result = m; 101return Expression.MakeMemberAccess(operand, m.Member); 137ref Expression operandExpression, 138ref Expression accessExpression);
System\Data\Services\OpenTypes\OpenTypeMethods.cs (61)
534internal static Expression AddExpression(Expression left, Expression right) 536return Expression.Add( 545internal static Expression AndAlsoExpression(Expression left, Expression right) 547return Expression.Call( 556internal static Expression DivideExpression(Expression left, Expression right) 558return Expression.Divide( 567internal static Expression EqualExpression(Expression left, Expression right) 569return Expression.Equal( 579internal static Expression GreaterThanExpression(Expression left, Expression right) 581return Expression.GreaterThan( 591internal static Expression GreaterThanOrEqualExpression(Expression left, Expression right) 593return Expression.GreaterThanOrEqual( 603internal static Expression LessThanExpression(Expression left, Expression right) 605return Expression.LessThan( 615internal static Expression LessThanOrEqualExpression(Expression left, Expression right) 617return Expression.LessThanOrEqual( 627internal static Expression ModuloExpression(Expression left, Expression right) 629return Expression.Modulo( 638internal static Expression MultiplyExpression(Expression left, Expression right) 640return Expression.Multiply( 649internal static Expression OrElseExpression(Expression left, Expression right) 651return Expression.Call( 660internal static Expression NotEqualExpression(Expression left, Expression right) 662return Expression.NotEqual( 672internal static Expression SubtractExpression(Expression left, Expression right) 674return Expression.Subtract( 683internal static Expression NegateExpression(Expression expression) 685return Expression.Negate( 693internal static Expression NotExpression(Expression expression) 695return Expression.Not( 713private static Expression ExpressionAsObject(Expression expression) 716return expression.Type.IsValueType ? Expression.Convert(expression, typeof(object)) : expression;
System\Data\Services\Parsing\FunctionDescription.cs (76)
44private Func<Expression, Expression[], Expression> conversionFunction; 58public FunctionDescription(string name, Type[] parameterTypes, Func<Expression, Expression[], Expression> conversionFunction) 71Func<Expression, Expression[], Expression> conversionFunction, 82public Func<Expression, Expression[], Expression> ConversionFunction 122public Expression InstanceMethodConversionFunction(Expression target, Expression[] arguments) 124Expression instanceArgument = arguments[0]; 125Expression[] methodArguments = new Expression[arguments.Length - 1]; 127return Expression.Call(instanceArgument, (MethodInfo)this.member, methodArguments); 134public Expression StaticMethodConversionFunction(Expression target, Expression[] arguments) 136return Expression.Call((MethodInfo)this.member, arguments); 143public Expression InstancePropertyConversionFunction(Expression target, Expression[] arguments) 145return Expression.Property(arguments[0], (PropertyInfo)this.member); 153public Expression InvokeOpenTypeMethod(Expression[] arguments) 172return Expression.Call(null, methodInfo, arguments); 308internal static Expression SubstringOf(Expression target, Expression[] arguments) 317return Expression.Call(arguments[1], method, arguments[0]); 324internal static Expression UnaryIsOf(Expression target, Expression[] arguments) 327return Expression.TypeIs(target, (Type)ce.Value); 334internal static Expression BinaryIsOf(Expression target, Expression[] arguments) 337return Expression.TypeIs(arguments[0], (Type)ce.Value); 344internal static Expression UnaryIsOfResourceType(Expression target, Expression[] arguments) 350return Expression.Call(null, DataServiceProviderMethods.TypeIsMethodInfo, target, arguments[0]); 357internal static Expression BinaryIsOfResourceType(Expression target, Expression[] arguments) 367return Expression.Call(null, callOpenTypeMethod ? OpenTypeMethods.TypeIsMethodInfo : DataServiceProviderMethods.TypeIsMethodInfo, arguments[0], arguments[1]); 374internal static Expression UnaryCast(Expression target, Expression[] arguments) 378return Expression.Convert(target, (Type)ce.Value); 385internal static Expression BinaryCast(Expression target, Expression[] arguments) 400return Expression.Constant(null, targetType); 403return Expression.Convert(arguments[0], targetType); 410internal static Expression UnaryCastResourceType(Expression target, Expression[] arguments) 416return Expression.Call(null, DataServiceProviderMethods.ConvertMethodInfo, target, arguments[0]); 423internal static Expression BinaryCastResourceType(Expression target, Expression[] arguments) 433return Expression.Call(null, callOpenTypeMethod ? OpenTypeMethods.ConvertMethodInfo : DataServiceProviderMethods.ConvertMethodInfo, arguments[0], arguments[1]); 486result.ConversionFunction = new Func<Expression, Expression[], Expression>(result.InstanceMethodConversionFunction); 490result.ConversionFunction = new Func<Expression, Expression[], Expression>(result.StaticMethodConversionFunction); 496result.ConversionFunction = new Func<Expression, Expression[], Expression>(result.InstancePropertyConversionFunction);
System\Data\Services\Parsing\RequestQueryParser.cs (246)
45Expression queryExpr = source.Expression; 54queryExpr = Expression.Call( 59Expression.Quote(selectorLambda)); 85Expression.Call(typeof(Queryable), "Where", new Type[] { source.ElementType }, source.Expression, Expression.Quote(lambda))); 108ParameterExpression parameterForIt = Expression.Parameter(queryElementType, "it"); 110return Expression.Lambda(parser.ParseWhere(), parameterForIt); 137private static readonly Expression[] emptyExpressions = new Expression[0]; 140private static readonly ConstantExpression trueLiteral = Expression.Constant(true); 143private static readonly ConstantExpression falseLiteral = Expression.Constant(false); 194private Dictionary<Expression, string> literals; 236this.literals = new Dictionary<Expression, string>(ReferenceEqualityComparer<Expression>.Instance); 254internal Expression ParseWhere() 257Expression expr = this.ParseExpression(); 275ParameterExpression element = Expression.Parameter(this.typeForIt.InstanceType, "element"); 276Expression lastCondition = Expression.Constant(true, typeof(bool)); 277Expression lastMatch = Expression.Constant(false, typeof(bool)); 283Expression fixedLambda = System.Data.Services.Client.ParameterReplacerVisitor.Replace( 288Expression comparison = GenerateLogicalAnd( 303return Expression.Lambda(lastMatch, element); 313Expression expr = this.ParseExpression(); 344Expression e = this.ParsePrimaryStart(l); 356private static Expression PrepareExpressionForWhere(Expression expr) 360expr = OpenTypeMethods.EqualExpression(expr, Expression.Constant(true, typeof(object))); 361expr = Expression.Convert(expr, typeof(bool)); 369Expression test = Expression.Equal(expr, Expression.Constant(null, typeof(bool?))); 370expr = Expression.Condition(test, falseLiteral, Expression.Property(expr, "Value")); 525private static MethodData[] FindBestApplicableMethods(MethodData[] applicable, Expression[] args) 763private static bool IsBetterThan(Expression[] args, IEnumerable<Type> firstCandidate, IEnumerable<Type> secondCandidate) 799private static bool IsBetterThan(Expression[] args, MethodData m1, MethodData m2) 886private static Expression GenerateEqual(Expression left, Expression right) 895return Expression.Equal(left, right, false, ExpressionParser.ByteArrayEqualMethod); 898return Expression.Equal(left, right); 905private static Expression GenerateNotEqual(Expression left, Expression right) 914return Expression.NotEqual(left, right, false, ExpressionParser.ByteArrayNotEqualMethod); 917return Expression.NotEqual(left, right); 925private static Expression GenerateGreaterThan(Expression left, Expression right, MethodInfo comparisonMethodInfo) 934left = Expression.Call(null, comparisonMethodInfo, left, right); 935right = Expression.Constant(0, typeof(int)); 938return Expression.GreaterThan(left, right); 946private static Expression GenerateGreaterThanEqual(Expression left, Expression right, MethodInfo comparisonMethodInfo) 955left = Expression.Call(null, comparisonMethodInfo, left, right); 956right = Expression.Constant(0, typeof(int)); 959return Expression.GreaterThanOrEqual(left, right); 967private static Expression GenerateLessThan(Expression left, Expression right, MethodInfo comparisonMethodInfo) 976left = Expression.Call(null, comparisonMethodInfo, left, right); 977right = Expression.Constant(0, typeof(int)); 980return Expression.LessThan(left, right); 988private static Expression GenerateLessThanEqual(Expression left, Expression right, MethodInfo comparisonMethodInfo) 997left = Expression.Call(null, comparisonMethodInfo, left, right); 998right = Expression.Constant(0, typeof(int)); 1001return Expression.LessThanOrEqual(left, right); 1087private static Expression GenerateAdd(Expression left, Expression right) 1094return Expression.Add(left, right); 1101private static Expression GenerateSubtract(Expression left, Expression right) 1108return Expression.Subtract(left, right); 1115private static Expression GenerateMultiply(Expression left, Expression right) 1122return Expression.Multiply(left, right); 1128private static Expression GenerateNegate(Expression expr) 1135return Expression.Negate(expr); 1141private static Expression GenerateNot(Expression expr) 1151return Expression.Not(expr); 1163private static Expression GenerateDivide(Expression left, Expression right) 1170return Expression.Divide(left, right); 1177private static Expression GenerateModulo(Expression left, Expression right) 1184return Expression.Modulo(left, right); 1191private static Expression GenerateLogicalAnd(Expression left, Expression right) 1198return Expression.AndAlso(left, right); 1205private static Expression GenerateLogicalOr(Expression left, Expression right) 1212return Expression.OrElse(left, right); 1218/// <param name="expression">Non-null <see cref="Expression"/> to check.</param> 1220private static bool IsOpenPropertyExpression(Expression expression) 1229private static bool IsOpenExpression(Expression input) 1279private static Expression StripObjectConvert(Expression input) 1296private static MethodInfo GetStaticMethod(string methodName, Expression left, Expression right) 1306private static Expression GenerateStaticMethodCall(string methodName, Expression left, Expression right) 1308return Expression.Call(null, GetStaticMethod(methodName, left, right), new Expression[] { left, right }); 1334private static Exception IncompatibleOperandsError(string operationName, Expression left, Expression right, int pos) 1349private static Expression ParseNullLiteral(ExpressionLexer l) 1358private Expression ParseExpression() 1361Expression expr = this.ParseLogicalOr(); 1368private Expression ParseLogicalOr() 1371Expression left = this.ParseLogicalAnd(); 1376Expression right = this.ParseLogicalAnd(); 1387private Expression ParseLogicalAnd() 1390Expression left = this.ParseComparison(); 1395Expression right = this.ParseComparison(); 1406private Expression ParseComparison() 1409Expression left = this.ParseAdditive(); 1414Expression right = this.ParseAdditive(); 1429private Expression GenerateComparison(Expression left, String rightLiteral, Token op) 1445private Expression GenerateNullAwareComparison(Expression left, String rightLiteral, Token op) 1452Expression right = this.ParsePrimaryStart(l); 1458right = Expression.Convert(right, typeof(Nullable<>).MakeGenericType(right.Type)); 1463left = Expression.Convert(left, typeof(Nullable<>).MakeGenericType(left.Type)); 1479return Expression.Constant(false, typeof(bool)); 1483return GenerateNotEqual(left, Expression.Constant(null, left.Type)); 1488GenerateNotEqual(left, Expression.Constant(null, left.Type)), 1490GenerateEqual(right, Expression.Constant(null, right.Type)), 1498return Expression.Constant(false, typeof(bool)); 1502return GenerateNotEqual(right, Expression.Constant(null, right.Type)); 1507GenerateNotEqual(right, Expression.Constant(null, left.Type)), 1509GenerateEqual(left, Expression.Constant(null, right.Type)), 1528private Expression GenerateComparisonExpression(Expression left, Expression right, Token op) 1537left = Expression.Constant(null, right.Type); 1541right = Expression.Constant(null, left.Type); 1545right = Expression.Convert(right, left.Type); 1549left = Expression.Convert(left, right.Type); 1569left = Expression.Convert(left, typeof(Nullable<>).MakeGenericType(left.Type)); 1573right = Expression.Convert(right, typeof(Nullable<>).MakeGenericType(right.Type)); 1642private Expression ParseAdditive() 1645Expression left = this.ParseMultiplicative(); 1651Expression right = this.ParseMultiplicative(); 1671private Expression ParseMultiplicative() 1674Expression left = this.ParseUnary(); 1681Expression right = this.ParseUnary(); 1704private Expression ParseUnary() 1721Expression expr = this.ParseUnary(); 1743private Expression ParsePrimary() 1746Expression expr = this.ParsePrimaryStart(this.lexer); 1767private Expression ParsePrimaryStart(ExpressionLexer l) 1806private Expression ParseParenExpression() 1814Expression e = this.ParseExpression(); 1826private Expression ParseIdentifier() 1845private Expression ParseIdentifierAsFunction() 1860Expression[] originalArguments = this.ParseArgumentList(); 1861Expression[] arguments = this.nullPropagationRequired ? originalArguments : (Expression[])originalArguments.Clone(); 1862Expression candidateTypeArgument = arguments.Length > 1 ? arguments[1] : 1871foreach (Expression argument in arguments) 1881Expression result = null; 1894Expression[] openArguments = new Expression[arguments.Length]; 1903openArguments[i] = Expression.Convert(arguments[i], typeof(object)); 1933Expression typeExpression = arguments[arguments.Length - 1]; 1940arguments[arguments.Length - 1] = Expression.Constant(typeof(Nullable<>).MakeGenericType(castTargetType)); 1945Expression[] finalArguments; 1949finalArguments = new Expression[arguments.Length + 1]; 1955finalArguments[arguments.Length] = Expression.Constant(IsOpenPropertyExpression(arguments[0]), typeof(bool)); 1994private Expression ParseBooleanLiteral() 2015private Expression ParseTypedLiteral(Type targetType, string targetTypeName, ExpressionLexer l) 2024Expression result = this.CreateLiteral(targetValue, l.CurrentToken.Text); 2032private Expression ParseMemberAccess(Expression instance) 2065Expression propertyAccess; 2068propertyAccess = Expression.Property(instance, this.currentSegmentInfo.ResourceType.GetPropertyInfo(property)); 2073propertyAccess = Expression.Call( 2077Expression.Constant(property)); 2078propertyAccess = Expression.Convert(propertyAccess, property.Type); 2081Expression result = this.ConsiderNullPropagation(instance, propertyAccess); 2086Expression filter = DataServiceConfiguration.ComposeQueryInterceptors(this.service, container); 2112Expression call = 2113Expression.Call(null /* instance */, OpenTypeMethods.GetValueOpenPropertyMethodInfo, instance, Expression.Constant(id)); 2125private Expression[] ParseArgumentList() 2133Expression[] args = this.CurrentToken.Id != TokenId.CloseParen ? this.ParseArguments() : emptyExpressions; 2145private Expression[] ParseArguments() 2147List<Expression> argList = new List<Expression>(); 2168private Expression CreateLiteral(object value, string text) 2173ConstantExpression expr = Expression.Constant(value); 2182private FunctionDescription FindBestFunction(FunctionDescription[] functions, ref Expression[] arguments) 2186List<Expression[]> applicablePromotedArguments = new List<Expression[]>(functions.Length); 2196Expression[] promotedArguments = new Expression[arguments.Length]; 2270private Expression ConsiderNullPropagation(Expression element, Expression notNullExpression) 2286Expression test = Expression.Equal(element, Expression.Constant(null, element.Type)); 2287Expression falseIf = notNullExpression; 2290falseIf = Expression.Convert(falseIf, typeof(Nullable<>).MakeGenericType(falseIf.Type)); 2293Expression trueIf = Expression.Constant(null, falseIf.Type); 2294return Expression.Condition(test, trueIf, falseIf); 2302private void CheckAndPromoteOperand(Type signatures, string operationName, ref Expression expr, int errorPos) 2306Expression[] args = new Expression[] { expr }; 2322private void CheckAndPromoteOperands(Type signatures, string operationName, ref Expression left, ref Expression right, int errorPos) 2324Expression[] args = new Expression[] { left, right }; 2341private int FindMethod(Type type, string methodName, Expression[] args, out MethodBase method) 2362private MethodData[] FindApplicableMethods(IEnumerable<MethodBase> methods, Expression[] args) 2382private int FindBestMethod(IEnumerable<MethodBase> methods, Expression[] args, out MethodBase method) 2436private bool IsApplicable(MethodData method, Expression[] args) 2443Expression[] promotedArgs = new Expression[args.Length]; 2448Expression promoted = this.PromoteExpression(args[i], pi.ParameterType, false); 2466private Expression PromoteExpression(Expression expr, Type type, bool exact) 2482return Expression.Constant(null, type); 2536return Expression.Constant(value, type); 2546return Expression.Convert(expr, type); 2555Expression valueAccessExpression = Expression.Property(expr, "Value"); 2610private Expression[] args; 2630public Expression[] Args
System\Data\Services\Providers\BasicExpandProvider.cs (127)
214Expression expression = query.Expression; 217ParameterExpression parameter = Expression.Parameter(elementType, "p"); 218Expression replaceExpression = parameter; 227replaceExpression = Expression.Property(parameter, "ExpandedElement"); 236orderer = Expression.Lambda(ParameterReplacerVisitor.Replace(e.Body, e.Parameters[0], replaceExpression), parameter); 265Expression expression = query.Expression; 268ParameterExpression parameter = Expression.Parameter(elementType, "p"); 276orderer = Expression.Lambda( 379public Expression Expression 968Dictionary<Expression, ExpandNode> expandNodeAnnotations = 1190private static LambdaExpression BuildLambdaExpression(Type delegateType, Expression body, IEnumerable<ParameterExpression> parameters) 1194return Expression.Lambda(delegateType, body, parameters); 1248private static Expression AccessProperty(Expression source, ResourceType resourceType, ResourceProperty property, bool nullPropagationRequired) 1255Expression expression; 1258expression = Expression.Property(source, resourceType.GetPropertyInfo(property)); 1265expression = Expression.Call(null /* instance */, getter, source, Expression.Constant(property)); 1269expression = Expression.Call( 1273Expression.Constant(property)); 1274expression = Expression.Convert(expression, property.Type); 1285expression = Expression.Convert(expression, WebUtil.GetTypeAllowingNull(expression.Type)); 1288expression = Expression.Condition( 1289Expression.Equal(source, Expression.Constant(null, source.Type)), 1290Expression.Constant(null, expression.Type), 1304private static Expression AccessOpenProperty(Expression source, string propertyName) 1309Expression expression = Expression.Call( 1313Expression.Constant(propertyName)); 1328private static MemberAssignment BindByName(Type type, string propertyName, Expression source) 1333return Expression.Bind(member, source); 1339private Expression ApplySegmentFilter(Expression expression) 1361Expression[] arguments = new Expression[] { expression, this.Node.Filter }; 1362expression = Expression.Call(null, method, arguments); 1369ConstantExpression count = Expression.Constant((int)this.Node.MaxResultsExpected + 1, typeof(int)); 1370Expression[] arguments = new Expression[] { expression, count }; 1371expression = Expression.Call(null, method, arguments); 1383private Expression BuildProjectionExpression(Expression expression) 1398Expression parameter = this.singleResult ? expression : Expression.Parameter(expressionElementType, "p"); 1399Expression body; 1416Expression source = expression; 1420Expression[] arguments = new Expression[] { source, selector }; 1422expression = Expression.Call(null, method, arguments); 1433private Expression BuildProjectionExpressionForExpandedWrapper(Expression source) 1443bindings[1] = BindByName(this.elementType, "Description", Expression.Constant(this.WrapperDescription)); 1451Expression propertyAccess = node.BuildProjectionExpression( 1488propertyAccess = Expression.Condition( 1489Expression.Equal(source, Expression.Constant(null, source.Type)), 1490Expression.Constant(null, propertyAccess.Type), 1508skipTokenPropertyBindings[0] = BindByName(projectedSkipTokenType, "ExpandedElement", Expression.Constant((string)null, typeof(string))); 1515Expression orderExpression = ParameterReplacerVisitor.Replace(orderLamba.Body, orderLamba.Parameters[0], source); 1517skipTokenPropertyBindings[i + 2] = Expression.Bind(member, orderExpression); 1520skipTokenPropertyBindings[1] = BindByName(projectedSkipTokenType, "Description", Expression.Constant(skipTokenDescription.Remove(skipTokenDescription.Length - 1, 1).ToString())); 1522Expression skipTokenBody = Expression.MemberInit(Expression.New(projectedSkipTokenType), skipTokenPropertyBindings); 1527Expression.Constant((this.WrapperDescription.Length == 0 ? "" : (this.WrapperDescription + ",")) + XmlConstants.HttpQueryStringSkipToken)); 1531return Expression.MemberInit(Expression.New(this.elementType), bindings); 1538private Expression BuildProjectionExpressionForProjectedWrapper(Expression source) 1551Expression expression = null; 1562Expression[] bindingExpressions = new Expression[this.projectedProperties.Count + 2]; 1568Expression sourceExpression = Expression.TypeAs(source, resourceType.InstanceType); 1581Expression propertyAccess = null; 1595propertyAccess = Expression.Convert(propertyAccess, WebUtil.GetTypeAllowingNull(resourceProperty.Type)); 1620propertyAccess = Expression.Constant(null, WebUtil.GetTypeAllowingNull(projectedProperty.Property.Type)); 1625propertyAccess = Expression.Constant(null, typeof(object)); 1640propertyAccess = Expression.Convert(propertyAccess, typeof(object)); 1669bindingExpressions[0] = Expression.Condition( 1670Expression.Equal( 1672Expression.Constant(null, source.Type)), 1673Expression.Constant(string.Empty, typeof(string)), 1674Expression.Constant(resourceType.FullName, typeof(string))); 1678bindingExpressions[0] = Expression.Constant(resourceType.FullName, typeof(string)); 1682bindingExpressions[1] = Expression.Constant(propertyNameList.ToString()); 1684Expression initExpression = Expression.MemberInit( 1685Expression.New(projectedWrapperType), 1695Expression typeIsExpression = this.ExpandProvider.Provider.IsV1Provider ? 1696(Expression)Expression.TypeIs(source, resourceType.InstanceType) : 1697Expression.Call( 1701Expression.Constant(resourceType)); 1703expression = Expression.Condition(typeIsExpression, initExpression, expression); 1716expression = Expression.Condition( 1717Expression.Equal(source, Expression.Constant(null, source.Type)), 1718Expression.Constant(null, expression.Type), 1731private Expression ApplyOrderTakeOnInnerSegment(Expression expression) 1738ParameterExpression parameter = Expression.Parameter(expressionElementType, "p"); 1749Expression updatedOrderingBody = ParameterReplacerVisitor.Replace( 1754expression = Expression.Call( 1759Expression.Lambda(updatedOrderingBody, parameter)); 1765return Expression.Call( 1770Expression.Constant(this.Node.MaxResultsExpected, typeof(int))); 1854private Dictionary<Expression, ExpandNode> expandNodeAnnotations; 1864this.expandNodeAnnotations = new Dictionary<Expression, ExpandNode>(ReferenceEqualityComparer<Expression>.Instance); 1873internal static Dictionary<Expression, ExpandNode> AnnotateExpression( 1874Expression expression, 1889internal override Expression VisitConditional(ConditionalExpression c) 1915internal override Expression VisitUnary(UnaryExpression u) 1942internal override Expression VisitParameter(ParameterExpression p) 1974protected override bool ProcessPropertyAccess(string propertyName, ref Expression operandExpression, ref Expression accessExpression) 1994private ExpandNode GetExpandNodeAnnotation(Expression expression) 2010private void SetExpandNodeAnnotation(Expression expression, ExpandNode annotation) 2030private Dictionary<Expression, ExpandNode> expandNodeAnnotations; 2035Dictionary<Expression, ExpandNode> expandNodeAnnotations) 2047Expression expression, 2048Dictionary<Expression, ExpandNode> expandNodeAnnotations) 2077protected override bool ProcessPropertyAccess(string propertyName, ref Expression operandExpression, ref Expression accessExpression)
System\Data\Services\Providers\ExpandedProjectionNode.cs (3)
43private readonly Expression filter; 91Expression filter, 124public Expression Filter
System\Data\Services\Providers\OrderingExpression.cs (3)
25private readonly Expression orderingExpression; 35public OrderingExpression(Expression orderingExpression, bool isAscending) 42public Expression Expression
System\Data\Services\Providers\RootProjectionNode.cs (1)
55Expression filter,
System\Data\Services\RequestQueryProcessor.cs (42)
215internal static Expression ComposePropertyNavigation( 216Expression expression, 223Expression fixedFilter = ParameterReplacerVisitor.Replace( 228Expression test; 231Expression nullConstant = WebUtil.NullLiteral; 232test = Expression.AndAlso(Expression.NotEqual(expression, nullConstant), fixedFilter); 239Expression conditionTrue = expression; 240Expression conditionFalse = Expression.Constant(null, conditionTrue.Type); 241return Expression.Condition(test, conditionTrue, conditionFalse); 422Expression filter = null; 438ParameterExpression p = Expression.Parameter(resourceType.InstanceType, "p"); 459Expression e; 462e = Expression.Property(p, resourceType.GetPropertyInfo(keyProp)); 467e = Expression.Call( 471Expression.Constant(keyProp)); 472e = Expression.Convert(e, keyProp.Type); 475internalOrderingInfo.Add(new OrderingExpression(Expression.Lambda(e, p), true)); 925ParameterExpression p = Expression.Parameter(this.description.LastSegmentInfo.TargetResourceType.InstanceType, "it"); 1078ParameterExpression elementParameter = Expression.Parameter(rt.InstanceType, "element"); 1091this.topLevelOrderingInfo.Add(new OrderingExpression(Expression.Lambda(o.Expression, elementParameter), o.IsAscending)); 1177ParameterExpression expandParameter = Expression.Parameter(queryElementType, "p"); 1188resultWrapperBindings[0] = Expression.Bind(resultWrapperType.GetProperty("ExpandedElement"), expandParameter); 1189resultWrapperBindings[1] = Expression.Bind(resultWrapperType.GetProperty("Description"), Expression.Constant(XmlConstants.HttpQueryStringSkipToken)); 1190resultWrapperBindings[2] = Expression.Bind( 1192Expression.MemberInit(Expression.New(skipTokenWrapperType), skipTokenBindings)); 1194Expression resultBody = Expression.MemberInit(Expression.New(resultWrapperType), resultWrapperBindings); 1196this.query = RequestUriProcessor.InvokeSelectForTypes(this.query, resultWrapperType, Expression.Lambda(resultBody, expandParameter)); 1240skipTokenBindings[0] = Expression.Bind(skipTokenWrapperType.GetProperty("ExpandedElement"), expandParameter); 1241skipTokenBindings[1] = Expression.Bind(skipTokenWrapperType.GetProperty("Description"), Expression.Constant(skipTokenDescription.ToString())); 1247Expression source = ParameterReplacerVisitor.Replace(sourceLambda.Body, sourceLambda.Parameters[0], expandParameter); 1249skipTokenBindings[i + 2] = Expression.Bind(member, source); 1265ParameterExpression wrapperParameter = Expression.Parameter(resultWrapperType, "w"); 1270Expression newOrdering = ParameterReplacerVisitor.Replace( 1273Expression.MakeMemberAccess(wrapperParameter, resultWrapperType.GetProperty("ExpandedElement"))); 1275newOrderingInfo.Add(new OrderingExpression(Expression.Lambda(newOrdering, wrapperParameter), ordering.IsAscending));
System\Data\Services\RequestUriProcessor.cs (35)
1048ParameterExpression p = Expression.Parameter(targetType, input.Parameters[0].Name); 1050return Expression.Lambda( 1116ParameterExpression parameter = Expression.Parameter(query.ElementType, "element"); 1117MemberExpression body = Expression.Property(parameter, property.Name); 1118LambdaExpression selector = Expression.Lambda(body, parameter); 1138ParameterExpression parameter = Expression.Parameter(query.ElementType, "element"); 1140Expression.ConvertChecked( 1141Expression.Property(parameter, property.Name), 1143LambdaExpression selector = Expression.Lambda(body, parameter); 1160ParameterExpression parameter = Expression.Parameter(query.ElementType, "element"); 1161Expression body = Expression.Call(null /* instance */, OpenTypeMethods.GetValueOpenPropertyMethodInfo, parameter, Expression.Constant(propertyName)); 1163LambdaExpression selector = Expression.Lambda(body, parameter); 1179ParameterExpression parameter = Expression.Parameter(query.ElementType, "element"); 1180Expression body = Expression.Call(null /*instance*/, DataServiceProviderMethods.GetValueMethodInfo, parameter, Expression.Constant(property)); 1181body = Expression.Convert(body, property.Type); 1183LambdaExpression selector = Expression.Lambda(body, parameter); 1200ParameterExpression parameter = Expression.Parameter(query.ElementType, "element"); 1202Expression body = Expression.Call(null /*instance*/, getter, parameter, Expression.Constant(property)); 1203LambdaExpression selector = Expression.Lambda(body, parameter); 1236ParameterExpression parameter = Expression.Parameter(query.ElementType, "element"); 1237Expression e; 1240e = Expression.Property(parameter, keyProperty.Name); 1244e = Expression.Call(null /*instance*/, DataServiceProviderMethods.GetValueMethodInfo, parameter, Expression.Constant(keyProperty)); 1245e = Expression.Convert(e, keyProperty.Type); 1248BinaryExpression body = Expression.Equal((Expression)e, Expression.Constant(keyValue)); 1249LambdaExpression predicate = Expression.Lambda(body, parameter);
System\Data\Services\WebUtil.cs (2)
52internal static readonly ConstantExpression NullLiteral = Expression.Constant(null); 883internal static bool IsNullConstant(Expression expression)
System.Data.Services.Client (674)
System\Data\Services\Client\ALinq\ALinqExpressionVisitor.cs (58)
99internal virtual Expression Visit(Expression exp) 202ReadOnlyCollection<Expression> arguments = this.VisitExpressionList(initializer.Arguments); 205return Expression.ElementInit(initializer.AddMethod, arguments); 216internal virtual Expression VisitUnary(UnaryExpression u) 218Expression operand = this.Visit(u.Operand); 221return Expression.MakeUnary(u.NodeType, operand, u.Type, u.Method); 232internal virtual Expression VisitBinary(BinaryExpression b) 234Expression left = this.Visit(b.Left); 235Expression right = this.Visit(b.Right); 236Expression conversion = this.Visit(b.Conversion); 241return Expression.Coalesce(left, right, conversion as LambdaExpression); 245return Expression.MakeBinary(b.NodeType, left, right, b.IsLiftedToNull, b.Method); 257internal virtual Expression VisitTypeIs(TypeBinaryExpression b) 259Expression expr = this.Visit(b.Expression); 262return Expression.TypeIs(expr, b.TypeOperand); 273internal virtual Expression VisitConstant(ConstantExpression c) 283internal virtual Expression VisitConditional(ConditionalExpression c) 285Expression test = this.Visit(c.Test); 286Expression iftrue = this.Visit(c.IfTrue); 287Expression iffalse = this.Visit(c.IfFalse); 290return Expression.Condition(test, iftrue, iffalse); 301internal virtual Expression VisitParameter(ParameterExpression p) 311internal virtual Expression VisitMemberAccess(MemberExpression m) 313Expression exp = this.Visit(m.Expression); 316return Expression.MakeMemberAccess(exp, m.Member); 327internal virtual Expression VisitMethodCall(MethodCallExpression m) 329Expression obj = this.Visit(m.Object); 330IEnumerable<Expression> args = this.VisitExpressionList(m.Arguments); 333return Expression.Call(obj, m.Method, args); 344internal virtual ReadOnlyCollection<Expression> VisitExpressionList(ReadOnlyCollection<Expression> original) 346List<Expression> list = null; 349Expression p = this.Visit(original[i]); 356list = new List<Expression>(n); 368return new ReadOnlyCollection<Expression>(list); 381Expression e = this.Visit(assignment.Expression); 384return Expression.Bind(assignment.Member, e); 400return Expression.MemberBind(binding.Member, bindings); 416return Expression.ListBind(binding.Member, initializers); 497internal virtual Expression VisitLambda(LambdaExpression lambda) 499Expression body = this.Visit(lambda.Body); 503return Expression.Lambda(lambda.Type, body, lambda.Parameters); 521IEnumerable<Expression> args = this.VisitExpressionList(nex.Arguments); 526return Expression.New(nex.Constructor, args, nex.Members); 530return Expression.New(nex.Constructor, args); 542internal virtual Expression VisitMemberInit(MemberInitExpression init) 548return Expression.MemberInit(n, bindings); 559internal virtual Expression VisitListInit(ListInitExpression init) 565return Expression.ListInit(n, initializers); 576internal virtual Expression VisitNewArray(NewArrayExpression na) 578IEnumerable<Expression> exprs = this.VisitExpressionList(na.Expressions); 583return Expression.NewArrayInit(na.Type.GetElementType(), exprs); 587return Expression.NewArrayBounds(na.Type.GetElementType(), exprs); 599internal virtual Expression VisitInvocation(InvocationExpression iv) 601IEnumerable<Expression> args = this.VisitExpressionList(iv.Arguments); 602Expression expr = this.Visit(iv.Expression); 605return Expression.Invoke(expr, args);
System\Data\Services\Client\ALinq\DataServiceExpressionVisitor.cs (7)
30internal override Expression Visit(Expression exp) 56internal virtual Expression VisitResourceSetExpression(ResourceSetExpression rse) 58Expression source = this.Visit(rse.Source); 73internal virtual Expression VisitNavigationPropertySingletonExpression(NavigationPropertySingletonExpression npse) 75Expression source = this.Visit(npse.Source); 92internal virtual Expression VisitInputReferenceExpression(InputReferenceExpression ire)
System\Data\Services\Client\ALinq\DataServiceQueryProvider.cs (12)
46public IQueryable CreateQuery(Expression expression) 56new Type[] { typeof(Expression), typeof(DataServiceQueryProvider) }, 66public IQueryable<TElement> CreateQuery<TElement>(Expression expression) 77public object Execute(Expression expression) 89public TResult Execute<TResult>(Expression expression) 101internal TElement ReturnSingleton<TElement>(Expression expression) 139internal QueryComponents Translate(Expression e) 144Dictionary<Expression, Expression> normalizerRewrites = null; 151normalizerRewrites = new Dictionary<Expression, Expression>(ReferenceEqualityComparer<Expression>.Instance);
System\Data\Services\Client\ALinq\Evaluator.cs (27)
75internal static Expression PartialEval(Expression expression, Func<Expression, bool> canBeEvaluated) 78HashSet<Expression> candidates = nominator.Nominate(expression); 87internal static Expression PartialEval(Expression expression) 97private static bool CanBeEvaluatedLocally(Expression expression) 110private HashSet<Expression> candidates; 116internal SubtreeEvaluator(HashSet<Expression> candidates) 126internal Expression Eval(Expression exp) 136internal override Expression Visit(Expression exp) 156private static Expression Evaluate(Expression e) 166LambdaExpression lambda = Expression.Lambda(e); 170Debug.Assert(!(constantValue is Expression), "!(constantValue is Expression)"); 181return Expression.Constant(constantValue, constantType); 192private Func<Expression, bool> functionCanBeEvaluated; 195private HashSet<Expression> candidates; 207internal Nominator(Func<Expression, bool> functionCanBeEvaluated) 219internal HashSet<Expression> Nominate(Expression expression) 221this.candidates = new HashSet<Expression>(EqualityComparer<Expression>.Default); 233internal override Expression Visit(Expression expression)
System\Data\Services\Client\ALinq\ExpressionNormalizer.cs (79)
55private readonly Dictionary<Expression, Pattern> _patterns = new Dictionary<Expression, Pattern>(ReferenceEqualityComparer<Expression>.Instance); 58private readonly Dictionary<Expression, Expression> normalizerRewrites; 66private ExpressionNormalizer(Dictionary<Expression, Expression> normalizerRewrites) 77internal Dictionary<Expression, Expression> NormalizerRewrites 92internal static Expression Normalize(Expression expression, Dictionary<Expression, Expression> rewrites) 98Expression result = normalizer.Visit(expression); 108internal override Expression VisitBinary(BinaryExpression b) 117Expression normalizedLeft = UnwrapObjectConvert(visited.Left); 118Expression normalizedRight = UnwrapObjectConvert(visited.Right); 153internal override Expression VisitUnary(UnaryExpression u) 156Expression result = visited; 192private static Expression UnwrapObjectConvert(Expression input) 203return Expression.Constant(constant.Value, constant.Value.GetType()); 219private static bool IsConstantZero(Expression expression) 231internal override Expression VisitMethodCall(MethodCallExpression call) 233Expression visited = this.VisitMethodCallNoRewrite(call); 244internal Expression VisitMethodCallNoRewrite(MethodCallExpression call) 260return Expression.Equal(visited.Arguments[0], visited.Arguments[1], LiftToNull, visited.Method); 263return Expression.NotEqual(visited.Arguments[0], visited.Arguments[1], LiftToNull, visited.Method); 266return Expression.GreaterThan(visited.Arguments[0], visited.Arguments[1], LiftToNull, visited.Method); 269return Expression.GreaterThanOrEqual(visited.Arguments[0], visited.Arguments[1], LiftToNull, visited.Method); 272return Expression.LessThan(visited.Arguments[0], visited.Arguments[1], LiftToNull, visited.Method); 275return Expression.LessThanOrEqual(visited.Arguments[0], visited.Arguments[1], LiftToNull, visited.Method); 278return Expression.Multiply(visited.Arguments[0], visited.Arguments[1], visited.Method); 281return Expression.Subtract(visited.Arguments[0], visited.Arguments[1], visited.Method); 284return Expression.Add(visited.Arguments[0], visited.Arguments[1], visited.Method); 287return Expression.Divide(visited.Arguments[0], visited.Arguments[1], visited.Method); 290return Expression.Modulo(visited.Arguments[0], visited.Arguments[1], visited.Method); 293return Expression.And(visited.Arguments[0], visited.Arguments[1], visited.Method); 296return Expression.Or(visited.Arguments[0], visited.Arguments[1], visited.Method); 299return Expression.ExclusiveOr(visited.Arguments[0], visited.Arguments[1], visited.Method); 315return Expression.Negate(visited.Arguments[0], visited.Method); 318return Expression.UnaryPlus(visited.Arguments[0], visited.Method); 322return Expression.Convert(visited.Arguments[0], visited.Type, visited.Method); 326return Expression.Not(visited.Arguments[0], visited.Method); 340return Expression.Equal(visited.Arguments[0], visited.Arguments[1], false, visited.Method); 395Expression normalizedArgument; 399List<Expression> normalizedArguments = new List<Expression>(callExpression.Arguments); 404result = Expression.Call(callExpression.Object, callExpression.Method, normalizedArguments); 466private static bool TryMatchCoalescePattern(Expression expression, out Expression normalized) 478normalized = Expression.Quote(normalized); 494normalized = Expression.Lambda(lambda.Type, Expression.Convert(coalesce.Left, typeof(bool)), lambda.Parameters); 518private static BinaryExpression CreateRelationalOperator(ExpressionType op, Expression left, Expression right) 533private static bool TryCreateRelationalOperator(ExpressionType op, Expression left, Expression right, out BinaryExpression result) 540result = Expression.Equal(left, right, LiftToNull, relationalOperatorPlaceholderMethod); 544result = Expression.NotEqual(left, right, LiftToNull, relationalOperatorPlaceholderMethod); 548result = Expression.LessThan(left, right, LiftToNull, relationalOperatorPlaceholderMethod); 552result = Expression.LessThanOrEqual(left, right, LiftToNull, relationalOperatorPlaceholderMethod); 556result = Expression.GreaterThan(left, right, LiftToNull, relationalOperatorPlaceholderMethod); 560result = Expression.GreaterThanOrEqual(left, right, LiftToNull, relationalOperatorPlaceholderMethod); 579private Expression CreateCompareExpression(Expression left, Expression right) 581Expression result = Expression.Condition( 583Expression.Constant(0), 584Expression.Condition( 586Expression.Constant(1), 587Expression.Constant(-1))); 605private void RecordRewrite(Expression source, Expression rewritten) 643internal ComparePattern(Expression left, Expression right) 652internal readonly Expression Left; 657internal readonly Expression Right;
System\Data\Services\Client\ALinq\ExpressionWriter.cs (25)
40private readonly Stack<Expression> expressionStack; 46private Expression parent; 59this.expressionStack = new Stack<Expression>(); 69internal static string ExpressionToString(DataServiceContext context, Expression e) 84internal override Expression Visit(Expression exp) 88Expression result = base.Visit(exp); 98internal override Expression VisitConditional(ConditionalExpression c) 109internal override Expression VisitLambda(LambdaExpression lambda) 131internal override Expression VisitMemberInit(MemberInitExpression init) 142internal override Expression VisitListInit(ListInitExpression init) 153internal override Expression VisitNewArray(NewArrayExpression na) 164internal override Expression VisitInvocation(InvocationExpression iv) 175internal override Expression VisitInputReferenceExpression(InputReferenceExpression ire) 197internal override Expression VisitMethodCall(MethodCallExpression m) 257internal override Expression VisitMemberAccess(MemberExpression m) 264Expression e = this.Visit(m.Expression); 288internal override Expression VisitConstant(ConstantExpression c) 311internal override Expression VisitUnary(UnaryExpression u) 368internal override Expression VisitBinary(BinaryExpression b) 439internal override Expression VisitTypeIs(TypeBinaryExpression b) 464internal override Expression VisitParameter(ParameterExpression p) 474private static bool IsInputReference(Expression exp) 509private void VisitOperand(Expression e) 528private string Translate(Expression e)
System\Data\Services\Client\ALinq\FilterQueryOptionExpression.cs (3)
23private Expression predicate; 30internal FilterQueryOptionExpression(Type type, Expression predicate) 37internal Expression Predicate
System\Data\Services\Client\ALinq\InputBinder.cs (9)
78internal static Expression Bind(Expression e, ResourceExpression currentInput, ParameterExpression inputParameter, List<ResourceExpression> referencedInputs) 86Expression result = binder.Visit(e); 102internal override Expression VisitMemberAccess(MemberExpression m) 163Expression source; 195Expression result = this.CreateReference(target); 198result = Expression.Property(result, nestedAccesses.Pop()); 214internal override Expression VisitParameter(ParameterExpression p) 237private Expression CreateReference(ResourceExpression resource)
System\Data\Services\Client\ALinq\NavigationPropertySingletonExpression.cs (3)
29private readonly Expression memberExpression; 47internal NavigationPropertySingletonExpression(Type type, Expression source, Expression memberExpression, Type resourceType, List<string> expandPaths, CountOption countOption, Dictionary<ConstantExpression, ConstantExpression> customQueryOptions, ProjectionQueryOptionExpression projection)
System\Data\Services\Client\ALinq\OrderByQueryOptionExpression.cs (2)
55internal readonly Expression Expression; 67internal Selector(Expression e, bool descending)
System\Data\Services\Client\ALinq\ProjectionAnalyzer.cs (35)
69Expression withoutConverts = SkipConverts(le.Body); 151internal static bool IsCollectionProducingExpression(Expression e) 175internal static bool IsDisallowedExpressionForMethodCall(Expression e) 237private static Expression SkipConverts(Expression expression) 239Expression result = expression; 312Expression[] lastExpressions = analysis.GetExpressionsBeyondTargetEntity(); 343internal override Expression VisitUnary(UnaryExpression u) 369internal override Expression VisitBinary(BinaryExpression b) 374internal override Expression VisitTypeIs(TypeBinaryExpression b) 379internal override Expression VisitConditional(ConditionalExpression c) 391internal override Expression VisitConstant(ConstantExpression c) 396internal override Expression VisitMemberAccess(MemberExpression m) 409Expression e = base.VisitMemberAccess(m); 417internal override Expression VisitMethodCall(MethodCallExpression m) 437internal override Expression VisitInvocation(InvocationExpression iv) 442internal override Expression VisitLambda(LambdaExpression lambda) 448internal override Expression VisitListInit(ListInitExpression init) 453internal override Expression VisitNewArray(NewArrayExpression na) 458internal override Expression VisitMemberInit(MemberInitExpression init) 474foreach (Expression e in nex.Arguments) 490internal override Expression VisitParameter(ParameterExpression p) 532internal static void Analyze(Expression e, PathBox pb) 558internal override Expression VisitUnary(UnaryExpression u) 573internal override Expression VisitBinary(BinaryExpression b) 584internal override Expression VisitTypeIs(TypeBinaryExpression b) 594internal override Expression VisitConditional(ConditionalExpression c) 624internal override Expression VisitMemberAccess(MemberExpression m) 643Expression e = base.VisitMemberAccess(m); 651internal override Expression VisitMethodCall(MethodCallExpression m) 676internal override Expression VisitInvocation(InvocationExpression iv) 687internal override Expression VisitLambda(LambdaExpression lambda) 693internal override Expression VisitMemberInit(MemberInitExpression init) 711internal override Expression VisitParameter(ParameterExpression p) 722internal override Expression VisitConstant(ConstantExpression c)
System\Data\Services\Client\ALinq\ProjectionRewriter.cs (4)
39this.newLambdaParameter = Expression.Parameter(proposedParameterType, "it"); 67Expression body = this.Visit(lambda.Body); 74return Expression.Lambda(delegateType, body, new ParameterExpression[] { this.newLambdaParameter }); 83internal override Expression VisitMemberAccess(MemberExpression m)
System\Data\Services\Client\ALinq\QueryComponents.cs (6)
34private readonly Dictionary<Expression, Expression> normalizerRewrites; 52internal QueryComponents(Uri uri, Version version, Type lastSegmentType, LambdaExpression projection, Dictionary<Expression, Expression> normalizerRewrites) 73internal Dictionary<Expression, Expression> NormalizerRewrites
System\Data\Services\Client\ALinq\ResourceBinder.cs (154)
27/// This class provides a Bind method that analyzes an input <see cref="Expression"/> and returns a bound tree. 37internal static Expression Bind(Expression e) 42Expression boundExpression = rb.Visit(e); 58internal static bool IsMissingKeyPredicates(Expression expression) 85internal static void VerifyKeyPredicates(Expression e) 95internal static void VerifyNotSelectManyProjection(Expression expression) 127private static Expression AnalyzePredicate(MethodCallExpression mce) 156List<Expression> conjuncts = new List<Expression>(); 159Dictionary<ResourceSetExpression, List<Expression>> predicatesByTarget = new Dictionary<ResourceSetExpression, List<Expression>>(ReferenceEqualityComparer<ResourceSetExpression>.Instance); 161foreach (Expression e in conjuncts) 163Expression reboundPredicate = InputBinder.Bind(e, input, le.Parameters[0], referencedInputs); 177List<Expression> targetPredicates = null; 180targetPredicates = new List<Expression>(); 189List<Expression> inputPredicates; 199foreach (KeyValuePair<ResourceSetExpression, List<Expression>> predicates in predicatesByTarget) 202List<Expression> clauses = predicates.Value; 227Expression predicateFilter = BuildKeyPredicateFilter(input.CreateReference(), inputKeyValues); 245Expression predicateFilter = BuildKeyPredicateFilter(input.CreateReference(), input.KeyPredicate); 251Expression newFilter; 265newFilter = Expression.And(newFilter, inputPredicates[idx]); 353List<Expression> predicates, 360List<Expression> nonKeyPredicates = null; 362foreach (Expression predicate in predicates) 385nonKeyPredicates = new List<Expression>(); 420private static Expression BuildKeyPredicateFilter(InputReferenceExpression input, Dictionary<PropertyInfo, ConstantExpression> keyValuesDictionary) 426Expression retExpr = null; 429Expression clause = Expression.Equal(Expression.Property(input, keyValue.Key), keyValue.Value); 436retExpr = Expression.And(retExpr, clause); 446private static void AddConjuncts(Expression e, List<Expression> conjuncts) 469internal bool AnalyzeProjection(MethodCallExpression mce, SequenceMethod sequenceMethod, out Expression e) 494Expression collectionSelector = mce.Arguments[1]; 500Expression resultSelector = mce.Arguments[2]; 517Expression collectorReference = InputBinder.Bind(collectionLambda.Body, source, collectionLambda.Parameters[0], referencedExpressions); 538resultLambda = Expression.Lambda(resultLambda.Body, new ParameterExpression[] { resultLambda.Parameters[1] }); 598internal static Expression AnalyzeNavigation(MethodCallExpression mce) 601Expression input = mce.Arguments[0]; 604Expression boundProjection; 630private static bool IsValidNavigationSource(Expression input, out ResourceExpression sourceExpression) 648internal static Expression AnalyzeSelectMany(MethodCallExpression mce) 670Expression navPropRef = InputBinder.Bind(collectorSelector.Body, input, collectorSelector.Parameters[0], referencedInputs); 708private static Expression AnalyzeSelectManySelector(MethodCallExpression selectManyCall, ResourceSetExpression sourceResourceSet) 715Expression result; 732selector = Expression.Lambda(selector.Body, new ParameterExpression[] { selector.Parameters[1] }); 751internal static Expression ApplyOrdering(MethodCallExpression mce, ResourceSetExpression input, Expression selector, bool descending, bool thenBy) 779private static Expression LimitCardinality(MethodCallExpression mce, int maxCardinality) 798AddSequenceQueryOption(rse, new TakeQueryOptionExpression(mce.Type, Expression.Constant(maxCardinality))); 814private static Expression AnalyzeCast(MethodCallExpression mce) 825private static Expression StripConvert(Expression e) 849private static Expression AnalyzeExpand(MethodCallExpression mce) 851Expression obj = StripConvert(mce.Object); 869private static Expression AnalyzeAddCustomQueryOption(MethodCallExpression mce) 871Expression obj = StripConvert(mce.Object); 899private static Expression AnalyzeAddCountOption(MethodCallExpression mce, CountOption countOption) 901Expression obj = StripConvert(mce.Object); 924private static ResourceSetExpression CreateResourceSetExpression(Type type, ResourceExpression source, Expression memberExpression, Type resourceType) 946private static NavigationPropertySingletonExpression CreateNavigationPropertySingletonExpression(Type type, ResourceExpression source, Expression memberExpression) 962/// <param name="expectedResultType">The result type - <see cref="Expression.Type"/> - that the new resource set expression should have.</param> 988internal static Expression StripConvertToAssignable(Expression e) 992Expression result; 1014internal static T StripTo<T>(Expression expression) where T : Expression 1018Expression result; 1030internal override Expression VisitResourceSetExpression(ResourceSetExpression rse) 1062private static bool TryBindToInput(ResourceExpression input, LambdaExpression le, out Expression bound) 1074private static Expression AnalyzeResourceSetMethod(MethodCallExpression mce, Func<MethodCallExpression, ResourceSetExpression, Expression, Expression> sequenceMethodAnalyzer) 1084Expression lambdaBody; 1094private static Expression AnalyzeResourceSetConstantMethod(MethodCallExpression mce, Func<MethodCallExpression, ResourceExpression, ConstantExpression, Expression> constantMethodAnalyzer) 1107private static Expression AnalyzeCountMethod(MethodCallExpression mce) 1173internal override Expression VisitBinary(BinaryExpression b) 1175Expression e = base.VisitBinary(b); 1180return Expression.Call(mi, new Expression[] {be.Left, be.Right}); 1186internal override Expression VisitMemberAccess(MemberExpression m) 1188Expression e = base.VisitMemberAccess(m); 1196return Expression.Call(me.Expression, mi); 1202internal override Expression VisitMethodCall(MethodCallExpression mce) 1204Expression e; 1239Expression result = AnalyzeSelectMany(mce); 1308private static Expression StripCastMethodCalls(Expression expression) 1371internal static bool MatchParameterMemberAccess(Expression expression) 1382Expression body = StripCastMethodCalls(lambda.Body); 1406internal static bool MatchPropertyAccess(Expression e, out MemberExpression member, out Expression instance, out List<string> propertyPath) 1443internal static bool MatchConstant(Expression e, out ConstantExpression constExpr) 1449internal static bool MatchAnd(Expression e) 1455internal static bool MatchNonPrivateReadableProperty(Expression e, out PropertyInfo propInfo) 1499internal static bool MatchKeyProperty(Expression expression, out PropertyInfo property) 1538internal static bool MatchKeyComparison(Expression e, out PropertyInfo keyProperty, out ConstantExpression keyValue) 1562internal static bool MatchReferenceEquals(Expression expression) 1580internal static bool MatchResource(Expression expression, out ResourceExpression resource) 1593internal static bool MatchDoubleArgumentLambda(Expression expression, out LambdaExpression lambda) 1619internal static bool MatchSingleArgumentLambda(Expression expression, out LambdaExpression lambda) 1631internal static bool MatchTransparentIdentitySelector(Expression input, LambdaExpression selector) 1644Expression potentialRef = selector.Body; 1648Expression paramRef; 1659internal static bool MatchIdentityProjectionResultSelector(Expression e) 1745Dictionary<string, Expression> sourceAccessors = new Dictionary<string, Expression>(constructorParams.Length - 1, StringComparer.Ordinal); 1748Expression argument = ne.Arguments[i]; 1791Expression boundArgument = InputBinder.Bind(argument, inputSourceSet, resultSelector.Parameters[0], referencedInputs); 1824internal static bool MatchPropertyProjectionSet(ResourceExpression input, Expression potentialPropertyRef, out MemberExpression navigationMember) 1840internal static bool MatchPropertyProjectionSingleton(ResourceExpression input, Expression potentialPropertyRef, out MemberExpression navigationMember) 1857private static bool MatchNavigationPropertyProjection(ResourceExpression input, Expression potentialPropertyRef, bool requireSet, out MemberExpression navigationMember) 1861Expression foundInstance; 1876internal static bool MatchMemberInitExpressionWithDefaultConstructor(Expression source, LambdaExpression e) 1883internal static bool MatchNewExpression(Expression source, LambdaExpression e) 1895internal static bool MatchNot(Expression expression) 1904internal static bool MatchNonSingletonProperty(Expression e) 1920internal static MatchNullCheckResult MatchNullCheck(Expression entityInScope, ConditionalExpression conditional) 1931Expression assignedCandidate; 1954Expression memberCandidate; 1984Expression[] assignedExpressions = assignedAnalysis.GetExpressionsToTargetEntity(); 1985Expression[] memberExpressions = memberAnalysis.GetExpressionsToTargetEntity(); 1994Expression assigned = assignedExpressions[i]; 1995Expression member = memberExpressions[i]; 2021internal static bool MatchNullConstant(Expression expression) 2033internal static bool MatchBinaryExpression(Expression e) 2038internal static bool MatchBinaryEquality(Expression e) 2043internal static bool MatchStringAddition(Expression e) 2081internal static MatchEqualityCheckResult MatchEquality(Expression expression) 2146private static bool ExpressionIsSimpleAccess(Expression argument, ReadOnlyCollection<ParameterExpression> expressions) 2151Expression source = argument; 2180private static bool MatchNaryLambda(Expression expression, int parameterCount, out LambdaExpression lambda) 2200internal Expression AssignExpression; 2206internal Expression TestToNullExpression; 2222internal Expression TestLeft; 2225internal Expression TestRight; 2231internal static void RequireCanNavigate(Expression e) 2246internal static void RequireCanProject(Expression e) 2265internal static void RequireCanExpand(Expression e) 2279internal static void RequireCanAddCount(Expression e) 2294internal static void RequireCanAddCustomQueryOption(Expression e) 2303internal static void RequireNonSingleton(Expression e) 2312internal static void RequireLegalCustomQueryOption(Expression e, ResourceExpression target) 2432private readonly Expression target; 2444private ExpressionPresenceVisitor(Expression target) 2457internal static bool IsExpressionPresent(Expression target, Expression tree) 2470internal override Expression Visit(Expression exp) 2472Expression result;
System\Data\Services\Client\ALinq\ResourceExpression.cs (3)
45protected readonly Expression source; 72internal ResourceExpression(Expression source, ExpressionType nodeType, Type type, List<string> expandPaths, CountOption countOption, Dictionary<ConstantExpression, ConstantExpression> customQueryOptions, ProjectionQueryOptionExpression projection) 140internal Expression Source
System\Data\Services\Client\ALinq\ResourceSetExpression.cs (6)
38private readonly Expression member; 61internal ResourceSetExpression(Type type, Expression source, Expression memberExpression, Type resourceType, List<string> expandPaths, CountOption countOption, Dictionary<ConstantExpression, ConstantExpression> customQueryOptions, ProjectionQueryOptionExpression projection) 82internal Expression MemberExpression 304internal readonly Dictionary<string, Expression> SourceAccessors; 313internal TransparentAccessors(string acc, Dictionary<string, Expression> sourceAccesors)
System\Data\Services\Client\ALinq\SkipQueryOptionExpression.cs (1)
66return new SkipQueryOptionExpression(this.Type, Expression.Constant(thisValue + previousValue, typeof(int)));
System\Data\Services\Client\ALinq\UriWriter.cs (19)
63internal static void Translate(DataServiceContext context, bool addTrailingParens, Expression e, out Uri uri, out Version version) 77internal override Expression VisitMethodCall(MethodCallExpression m) 87internal override Expression VisitUnary(UnaryExpression u) 97internal override Expression VisitBinary(BinaryExpression b) 107internal override Expression VisitConstant(ConstantExpression c) 117internal override Expression VisitTypeIs(TypeBinaryExpression b) 127internal override Expression VisitConditional(ConditionalExpression c) 137internal override Expression VisitParameter(ParameterExpression p) 147internal override Expression VisitMemberAccess(MemberExpression m) 157internal override Expression VisitLambda(LambdaExpression lambda) 177internal override Expression VisitMemberInit(MemberInitExpression init) 187internal override Expression VisitListInit(ListInitExpression init) 197internal override Expression VisitNewArray(NewArrayExpression na) 207internal override Expression VisitInvocation(InvocationExpression iv) 217internal override Expression VisitNavigationPropertySingletonExpression(NavigationPropertySingletonExpression npse) 230internal override Expression VisitResourceSetExpression(ResourceSetExpression rse) 309Expression e = ((Expression)options.Current); 544private string ExpressionToString(Expression expression)
System\Data\Services\Client\AtomMaterializer.cs (7)
1116ParameterExpression list = Expression.Parameter(typeof(object), "list"); 1117ParameterExpression item = Expression.Parameter(typeof(object), "element"); 1118Expression body = Expression.Call(Expression.Convert(list, listType), addMethod, Expression.Convert(item, listElementType)); 1122LambdaExpression lambda = Expression.Lambda(body, list, item);
System\Data\Services\Client\DataServiceContext.cs (1)
584ResourceSetExpression rse = new ResourceSetExpression(typeof(IOrderedQueryable<T>), null, Expression.Constant(entitySetName), typeof(T), null, CountOption.None, null, null);
System\Data\Services\Client\DataServiceQuery.cs (1)
27public abstract Expression Expression
System\Data\Services\Client\DataServiceQueryOfT.cs (15)
36private readonly Expression queryExpression; 51private DataServiceQuery(Expression expression, DataServiceQueryProvider provider) 73public override Expression Expression 160Expression.Call( 161Expression.Convert(this.Expression, typeof(DataServiceQuery<TElement>.DataServiceOrderedQuery)), 163new Expression[] { Expression.Constant(path) })); 175Expression.Call( 176Expression.Convert(this.Expression, typeof(DataServiceQuery<TElement>.DataServiceOrderedQuery)), 192Expression.Call( 193Expression.Convert(this.Expression, typeof(DataServiceQuery<TElement>.DataServiceOrderedQuery)), 195new Expression[] { Expression.Constant(name), Expression.Constant(value, typeof(object)) })); 300internal DataServiceOrderedQuery(Expression expression, DataServiceQueryProvider provider)
System\Data\Services\Client\MemberAssignmentAnalysis.cs (32)
39internal static readonly Expression[] EmptyExpressionArray = new Expression[0]; 42private readonly Expression entity; 51private List<Expression> pathFromEntity; 59private MemberAssignmentAnalysis(Expression entity) 64this.pathFromEntity = new List<Expression>(); 91internal static MemberAssignmentAnalysis Analyze(Expression entityInScope, Expression assignmentExpression) 120Expression[] previousExpressions = previous.GetExpressionsToTargetEntity(); 121Expression[] candidateExpressions = this.GetExpressionsToTargetEntity(); 129internal override Expression Visit(Expression expression) 148internal override Expression VisitConditional(ConditionalExpression c) 150Expression result; 169internal override Expression VisitParameter(ParameterExpression p) 189internal override Expression VisitMemberInit(MemberInitExpression init) 191Expression result = init; 228internal override Expression VisitMemberAccess(MemberExpression m) 230Expression result = base.VisitMemberAccess(m); 242internal override Expression VisitMethodCall(MethodCallExpression call) 258internal Expression[] GetExpressionsBeyondTargetEntity() 267Expression[] result = new Expression[1]; 274internal Expression[] GetExpressionsToTargetEntity() 283Expression[] result = new Expression[this.pathFromEntity.Count - 1]; 300private static Exception CheckCompatibleAssignments(Type targetType, Expression[] previous, Expression[] candidate) 313Expression p = previous[i]; 314Expression c = candidate[i]; 344private static Exception CheckCompatibleAssignmentsFail(Type targetType, Expression[] previous, Expression[] candidate)
System\Data\Services\Client\ProjectionPath.cs (8)
37internal ProjectionPath(ParameterExpression root, Expression expectedRootType, Expression rootEntry) 50internal ProjectionPath(ParameterExpression root, Expression expectedRootType, Expression rootEntry, IEnumerable<Expression> members) 55foreach (Expression member in members) 73internal Expression RootEntry 80internal Expression ExpectedRootType
System\Data\Services\Client\ProjectionPathBuilder.cs (17)
43private readonly Stack<Expression> parameterExpressionTypes; 46private readonly Stack<Expression> parameterEntries; 61this.parameterExpressionTypes = new Stack<Expression>(); 62this.parameterEntries = new Stack<Expression>(); 77internal Expression ExpectedParamTypeInScope 93internal Expression LambdaParameterInScope 102internal Expression ParameterEntryInScope 137internal void EnterLambdaScope(LambdaExpression lambda, Expression entry, Expression expectedType) 167internal Expression GetRewrite(Expression expression) 179Expression result = null; 235internal void RegisterRewrite(Expression root, string[] names, Expression rewriteExpression) 248internal void RevokeRewrite(Expression root, string[] names) 298internal Expression Root 305internal Expression RewriteExpression
System\Data\Services\Client\ProjectionPlanCompiler.cs (140)
35private readonly Dictionary<Expression, ExpressionAnnotation> annotations; 41private readonly Dictionary<Expression, Expression> normalizerRewrites; 60private ProjectionPlanCompiler(Dictionary<Expression, Expression> normalizerRewrites) 62this.annotations = new Dictionary<Expression, ExpressionAnnotation>(ReferenceEqualityComparer<Expression>.Instance); 63this.materializerExpression = Expression.Parameter(typeof(object), "mat"); 76internal static ProjectionPlan CompilePlan(LambdaExpression projection, Dictionary<Expression, Expression> normalizerRewrites) 94Expression plan = rewriter.Visit(projection); 116internal override Expression VisitBinary(BinaryExpression b) 118Expression original = this.GetExpressionBeforeNormalization(b); 136internal override Expression VisitConditional(ConditionalExpression conditional) 139Expression original = this.GetExpressionBeforeNormalization(conditional); 161internal override Expression VisitUnary(UnaryExpression u) 163Expression original = this.GetExpressionBeforeNormalization(u); 164Expression result; 191internal override Expression VisitMemberAccess(MemberExpression m) 195Expression result; 196Expression baseSourceExpression = m.Expression; 205Expression baseTargetExpression = this.Visit(baseSourceExpression); 213result = Expression.MakeMemberAccess(baseTargetExpression, m.Member); 228internal override Expression VisitParameter(ParameterExpression p) 233Expression result; 256internal override Expression VisitMemberInit(MemberInitExpression init) 260Expression result = null; 277internal override Expression VisitMethodCall(MethodCallExpression m) 281Expression original = this.GetExpressionBeforeNormalization(m); 287Expression result; 342internal override Expression VisitLambda(LambdaExpression lambda) 346Expression result; 351ParameterExpression expectedTypeParameter = Expression.Parameter(typeof(Type), "type" + this.identifierId); 352ParameterExpression entryParameter = Expression.Parameter(typeof(object), "entry" + this.identifierId); 361Expression body = this.Visit(lambda.Body); 368body = Expression.Convert(body, typeof(object)); 371result = Expression.Lambda<Func<object, object, Type, object>>( 399private static Expression CallMaterializer(string methodName, params Expression[] arguments) 413private static Expression CallMaterializerWithType(string methodName, Type[] typeArguments, params Expression[] arguments) 425return Expression.Call(method, arguments); 433private Expression CallCheckValueForPathIsNull(Expression entry, Expression entryType, ProjectionPath path) 435Expression result = CallMaterializer("ProjectionCheckValueForPathIsNull", entry, entryType, Expression.Constant(path, typeof(object))); 445private Expression CallValueForPath(Expression entry, Expression entryType, ProjectionPath path) 450Expression result = CallMaterializer("ProjectionValueForPath", this.materializerExpression, entry, entryType, Expression.Constant(path, typeof(object))); 461private Expression CallValueForPathWithType(Expression entry, Expression entryType, ProjectionPath path, Type type) 466Expression value = this.CallValueForPath(entry, entryType, path); 467Expression result = Expression.Convert(value, type); 484private Expression RebindConditionalNullCheck(ConditionalExpression conditional, ResourceBinder.PatternRules.MatchNullCheckResult nullCheck) 489Expression testToNullForProjection = this.Visit(nullCheck.TestToNullExpression); 490Expression assignForProjection = this.Visit(nullCheck.AssignExpression); 499Expression testToNullThroughMethod = this.CallCheckValueForPathIsNull( 504Expression test = testToNullThroughMethod; 505Expression iftrue = Expression.Constant(null, assignForProjection.Type); 506Expression iffalse = assignForProjection; 507Expression result = Expression.Condition(test, iftrue, iffalse); 518private Expression RebindEntityMemberInit(MemberInitExpression init) 524Expression[] expressions; 538Expression entryParameterAtMemberInit = this.pathBuilder.ParameterEntryInScope; 542Expression projectedTypeExpression = Expression.Constant(projectedType, typeof(Type)); 551Expression entryToInitValue; // Expression that yields value for entry in target tree. 552Expression expectedParamValue; // Expression that yield expectedType in target tree. 567entryParameterForMembers = Expression.Parameter(typeof(object), "subentry" + this.identifierId++); 600Expression nestedEntry = CallMaterializer( 603Expression.Constant(assignment.Member.Name, typeof(string))); 604ParameterExpression nestedEntryParameter = Expression.Parameter( 639Expression e = this.Visit(assignment.Expression); 643e = Expression.Convert(e, typeof(object)); 651propertyLambda = Expression.Lambda(e, parameters); 653Expression[] nestedParams = 654new Expression[] 667propertyLambda = Expression.Lambda(Expression.Invoke(propertyLambda, nestedParams), invokeParameters); 672Expression e = this.Visit(assignment.Expression); 673e = Expression.Convert(e, typeof(object)); 681propertyLambda = Expression.Lambda(e, parameters); 698Expression reboundExpression = CallMaterializer( 704Expression.Constant(propertyNames.ToArray()), 705Expression.Constant(propertyFunctions.ToArray())); 707return Expression.Convert(reboundExpression, projectedType); 716private Expression GetDeepestEntry(Expression[] path) 720Expression result = null; 727Expression.Constant(((MemberExpression)path[pathIndex]).Member.Name, typeof(string))); 738private Expression GetExpressionBeforeNormalization(Expression expression) 743Expression original; 757private Expression RebindParameter(Expression expression, ExpressionAnnotation annotation) 762Expression result; 786private Expression RebindMemberAccess(MemberExpression m, ExpressionAnnotation baseAnnotation) 796Expression baseSourceExpression = m.Expression; 797Expression result = this.pathBuilder.GetRewrite(baseSourceExpression); 800Expression baseTypeExpression = Expression.Constant(baseSourceExpression.Type, typeof(Type)); 857result = Expression.New( 860Expression.Constant(null, typeof(DataServiceContext)), 862Expression.Constant(TrackingMode.AutoChangeTracking, typeof(TrackingMode)), 863Expression.Constant(null, typeof(string)), 864Expression.Constant(null, typeof(Func<EntityChangedParams, bool>)), 865Expression.Constant(null, typeof(Func<EntityCollectionChangedParams, bool>))); 875result = Expression.New( 878Expression.Constant(null, typeof(DataServiceContext)), 881Expression.Constant(null, typeof(string)), 882Expression.Constant(null, typeof(Func<EntityChangedParams, bool>)), 883Expression.Constant(null, typeof(Func<EntityCollectionChangedParams, bool>))); 897result = Expression.New( 900Expression.Constant(null, typeof(DataServiceContext)), 921result = Expression.New( 949private Expression RebindMethodCallForMemberSelect(MethodCallExpression call) 957Expression result = null; 958Expression parameterSource = this.Visit(call.Arguments[0]); 975Expression selectorExpression = this.Visit(call.Arguments[1]); 982Expression.Constant(returnElementType, typeof(Type)), 983Expression.Constant(annotation.Segment.StartPath, typeof(object)), 1010private Expression RebindMethodCallForMemberToList(MethodCallExpression call) 1019Expression result = this.Visit(call.Arguments[0]); 1033private Expression RebindMethodCallForNewSequence(MethodCallExpression call) 1044Expression result = null; 1051Expression parameterSource = this.Visit(call.Arguments[0]); 1064Expression selectorExpression = this.Visit(call.Arguments[1]); 1071Expression.Constant(returnElementType, typeof(Type)), 1072Expression.Constant(annotation.Segment.StartPath, typeof(object)), 1087Expression source = this.Visit(call.Arguments[0]); 1108private Expression TypedEnumerableToList(Expression source, Type targetType) 1119Expression result = CallMaterializerWithType(
System.IdentityModel (2)
System\IdentityModel\CryptoHelper.cs (2)
1283System.Linq.Expressions.NewExpression algorithmCreationExpression = System.Linq.Expressions.Expression.New(algorithmType); 1284System.Linq.Expressions.LambdaExpression creationFunction = System.Linq.Expressions.Expression.Lambda<Func<object>>(algorithmCreationExpression);
System.Web (13)
UI\WebControls\QueryExtensions.cs (7)
34ParameterExpression parameter = Expression.Parameter(source.ElementType, String.Empty); 40property = Expression.Property(parameter, sortExpressionField); 43property = Expression.Property(property, sortExpressionField); 46LambdaExpression lambda = Expression.Lambda(property, parameter); 50Expression methodCallExpression = Expression.Call(typeof(Queryable), methodName, 52source.Expression, Expression.Quote(lambda));
Util\OrderingMethodFinder.cs (3)
13protected override Expression VisitMethodCall(MethodCallExpression node) { 19Expression result = base.VisitMethodCall(node); 24internal static bool OrderMethodExists(Expression expression) {
Util\QueryableUtility.cs (3)
10private static MethodInfo GetQueryableMethod(Expression expression) { 20public static bool IsQueryableMethod(Expression expression, string method) { 24public static bool IsOrderingMethod(Expression expression) {
System.Web.DynamicData (26)
DynamicData\DynamicDataExtensions.cs (3)
274tableParameter = Expression.Parameter(rowType, "e"); 276var memberExpression = Expression.Property(tableParameter, member.Name); 277loadOptions.LoadWith(Expression.Lambda(memberExpression, tableParameter));
DynamicData\MetaTable.cs (2)
730Expression ofTypeExpression = Expression.Call(typeof(Queryable), "OfType", new[] { EntityType }, query.Expression);
DynamicData\QueryableFilterUserControl.cs (14)
133private static Expression CreatePropertyExpression(Expression parameterExpression, string propertyName) { 134Expression propExpression = null; 138propExpression = Expression.PropertyOrField(parameterExpression, p); 141propExpression = Expression.PropertyOrField(propExpression, p); 148ParameterExpression parameterExpression = Expression.Parameter(source.ElementType, String.Empty); 149Expression propertyExpression = CreatePropertyExpression(parameterExpression, propertyName); 151propertyExpression = Expression.Convert(propertyExpression, Misc.RemoveNullableFromType(propertyExpression.Type)); 154Expression compareExpression = Expression.Equal(propertyExpression, Expression.Constant(value)); 155LambdaExpression lambda = Expression.Lambda(compareExpression, parameterExpression); 156MethodCallExpression whereCall = Expression.Call(typeof(Queryable), "Where", new Type[] { source.ElementType }, source.Expression, Expression.Quote(lambda));
DynamicData\Util\Misc.cs (7)
237var parameter = Expression.Parameter(query.ElementType, "row"); 243lambda = Expression.Lambda(Expression.Property(Expression.Property(parameter, sortColumn.Name), foreignKeySortColumn.Name), parameter); 247lambda = Expression.Lambda(Expression.Property(parameter, sortColumn.Name), parameter); 250var expression = Expression.Call(typeof(Queryable), ordering, new Type[] { query.ElementType, lambda.Body.Type }, query.Expression, lambda);
System.Web.Entity (7)
System\Data\WebControls\OrderByBuilder.cs (7)
178var expression = source.Expression; 179var parameter = Expression.Parameter(source.ElementType, String.Empty); 192Expression memberExpression = parameter; 199memberExpression = Expression.Property(memberExpression, memberElement.Trim()); 202expression = Expression.Call(typeof(Queryable), methodName, new Type[] { source.ElementType, memberExpression.Type }, 203new Expression[] { expression, Expression.Quote(DynamicExpression.Lambda(memberExpression, parameter)) });
System.Web.Extensions (275)
UI\WebControls\Dynamic.cs (207)
34Expression.Call( 37source.Expression, Expression.Quote(lambda))); 45Expression.Call( 48source.Expression, Expression.Quote(lambda))); 59Expression.Parameter(source.ElementType, "") }; 62Expression queryExpr = source.Expression; 66queryExpr = Expression.Call( 69queryExpr, Expression.Quote(DynamicExpression.Lambda(o.Selector, parameters))); 79Expression.Call( 82source.Expression, Expression.Constant(count))); 88Expression.Call( 91source.Expression, Expression.Constant(count))); 101Expression.Call( 104source.Expression, Expression.Quote(keyLambda), Expression.Quote(elementLambda))); 110Expression.Call( 118Expression.Call( 172public static Expression Parse(Type resultType, string expression, params object[] values) { 178return ParseLambda(new ParameterExpression[] { Expression.Parameter(itType, "") }, resultType, expression, values); 198public static LambdaExpression Lambda(Expression body, params ParameterExpression[] parameters) { 203return Expression.Lambda(GetFuncType(typeArgs), body, parameters); 215public Expression Selector; 622static readonly Expression trueLiteral = Expression.Constant(true); 623static readonly Expression falseLiteral = Expression.Constant(false); 624static readonly Expression nullLiteral = Expression.Constant(null); 634Dictionary<Expression, string> literals; 646literals = new Dictionary<Expression, string>(); 681public Expression Parse(Type resultType) { 683Expression expr = ParseExpression(); 695Expression expr = ParseExpression(); 714Expression ParseExpression() { 716Expression expr = ParseLogicalOr(); 719Expression expr1 = ParseExpression(); 722Expression expr2 = ParseExpression(); 729Expression ParseLogicalOr() { 730Expression left = ParseLogicalAnd(); 734Expression right = ParseLogicalAnd(); 736left = Expression.OrElse(left, right); 742Expression ParseLogicalAnd() { 743Expression left = ParseComparison(); 747Expression right = ParseComparison(); 749left = Expression.AndAlso(left, right); 755Expression ParseComparison() { 756Expression left = ParseAdditive(); 763Expression right = ParseAdditive(); 769right = Expression.Convert(right, left.Type); 772left = Expression.Convert(left, right.Type); 781Expression e; 824Expression ParseAdditive() { 825Expression left = ParseMultiplicative(); 830Expression right = ParseMultiplicative(); 851Expression ParseMultiplicative() { 852Expression left = ParseUnary(); 857Expression right = ParseUnary(); 861left = Expression.Multiply(left, right); 864left = Expression.Divide(left, right); 868left = Expression.Modulo(left, right); 876Expression ParseUnary() { 887Expression expr = ParseUnary(); 890expr = Expression.Negate(expr); 894expr = Expression.Not(expr); 901Expression ParsePrimary() { 902Expression expr = ParsePrimaryStart(); 918Expression ParsePrimaryStart() { 935Expression ParseStringLiteral() { 956Expression ParseIntegerLiteral() { 980Expression ParseRealLiteral() { 998Expression CreateLiteral(object value, string text) { 999ConstantExpression expr = Expression.Constant(value); 1005Expression ParseParenExpression() { 1008Expression e = ParseExpression(); 1014Expression ParseIdentifier() { 1023return (Expression)value; 1027Expression expr = value as Expression; 1029expr = Expression.Constant(value); 1042Expression ParseIt() { 1049Expression ParseIif() { 1052Expression[] args = ParseArgumentList(); 1058Expression GenerateConditional(Expression test, Expression expr1, Expression expr2, int errorPos) { 1062Expression expr1as2 = expr2 != nullLiteral ? PromoteExpression(expr1, expr2.Type, true) : null; 1063Expression expr2as1 = expr1 != nullLiteral ? PromoteExpression(expr2, expr1.Type, true) : null; 1078return Expression.Condition(test, expr1, expr2); 1081Expression ParseNew() { 1086List<Expression> expressions = new List<Expression>(); 1089Expression expr = ParseExpression(); 1111bindings[i] = Expression.Bind(type.GetProperty(properties[i].Name), expressions[i]); 1112return Expression.MemberInit(Expression.New(type), bindings); 1115Expression ParseLambdaInvocation(LambdaExpression lambda) { 1118Expression[] args = ParseArgumentList(); 1122return Expression.Invoke(lambda, args); 1125Expression ParseTypeAccess(Type type) { 1135Expression[] args = ParseArgumentList(); 1143return Expression.New((ConstructorInfo)method, args); 1153Expression GenerateConversion(Expression expr, Type type, int errorPos) { 1159return Expression.Convert(expr, type); 1162return Expression.ConvertChecked(expr, type); 1166return Expression.Convert(expr, type); 1171Expression ParseMemberAccess(Type type, Expression instance) { 1184Expression[] args = ParseArgumentList(); 1197return Expression.Call(instance, (MethodInfo)method, args); 1209Expression.Property(instance, (PropertyInfo)member) : 1210Expression.Field(instance, (FieldInfo)member); 1228Expression ParseAggregate(Expression instance, Type elementType, string methodName, int errorPos) { 1230ParameterExpression innerIt = Expression.Parameter(elementType, ""); 1232Expression[] args = ParseArgumentList(); 1245args = new Expression[] { instance }; 1248args = new Expression[] { instance, DynamicExpression.Lambda(args[0], innerIt) }; 1250return Expression.Call(typeof(Enumerable), signature.Name, typeArgs, args); 1253Expression[] ParseArgumentList() { 1256Expression[] args = token.id != TokenId.CloseParen ? ParseArguments() : new Expression[0]; 1262Expression[] ParseArguments() { 1263List<Expression> argList = new List<Expression>(); 1272Expression ParseElementAccess(Expression expr) { 1276Expression[] args = ParseArguments(); 1282Expression index = PromoteExpression(args[0], typeof(int), true); 1286return Expression.ArrayIndex(expr, index); 1296return Expression.Call(expr, (MethodInfo)mb, args); 1364void CheckAndPromoteOperand(Type signatures, string opName, ref Expression expr, int errorPos) { 1365Expression[] args = new Expression[] { expr }; 1373void CheckAndPromoteOperands(Type signatures, string opName, ref Expression left, ref Expression right, int errorPos) { 1374Expression[] args = new Expression[] { left, right }; 1382Exception IncompatibleOperandsError(string opName, Expression left, Expression right, int pos) { 1398int FindMethod(Type type, string methodName, bool staticAccess, Expression[] args, out MethodBase method) { 1411int FindIndexer(Type type, Expression[] args, out MethodBase method) { 1454public Expression[] Args; 1457int FindBestMethod(IEnumerable<MethodBase> methods, Expression[] args, out MethodBase method) { 1478bool IsApplicable(MethodData method, Expression[] args) { 1480Expression[] promotedArgs = new Expression[args.Length]; 1484Expression promoted = PromoteExpression(args[i], pi.ParameterType, false); 1492Expression PromoteExpression(Expression expr, Type type, bool exact) { 1498return Expression.Constant(null, type); 1520return Expression.Constant(value, type); 1525if (type.IsValueType || exact) return Expression.Convert(expr, type); 1704static bool IsBetterThan(Expression[] args, MethodData m1, MethodData m2) { 1732Expression GenerateEqual(Expression left, Expression right) { 1733return Expression.Equal(left, right); 1736Expression GenerateNotEqual(Expression left, Expression right) { 1737return Expression.NotEqual(left, right); 1740Expression GenerateGreaterThan(Expression left, Expression right) { 1742return Expression.GreaterThan( 1744Expression.Constant(0) 1747return Expression.GreaterThan(left, right); 1750Expression GenerateGreaterThanEqual(Expression left, Expression right) { 1752return Expression.GreaterThanOrEqual( 1754Expression.Constant(0) 1757return Expression.GreaterThanOrEqual(left, right); 1760Expression GenerateLessThan(Expression left, Expression right) { 1762return Expression.LessThan( 1764Expression.Constant(0) 1767return Expression.LessThan(left, right); 1770Expression GenerateLessThanEqual(Expression left, Expression right) { 1772return Expression.LessThanOrEqual( 1774Expression.Constant(0) 1777return Expression.LessThanOrEqual(left, right); 1780Expression GenerateAdd(Expression left, Expression right) { 1784return Expression.Add(left, right); 1787Expression GenerateSubtract(Expression left, Expression right) { 1788return Expression.Subtract(left, right); 1791Expression GenerateStringConcat(Expression left, Expression right) { 1792if (left.Type.IsValueType) left = Expression.Convert(left, typeof(object)); 1793if (right.Type.IsValueType) right = Expression.Convert(right, typeof(object)); 1794return Expression.Call( 1800MethodInfo GetStaticMethod(string methodName, Expression left, Expression right) { 1804Expression GenerateStaticMethodCall(string methodName, Expression left, Expression right) { 1805return Expression.Call(null, GetStaticMethod(methodName, left, right), new[] { left, right });
UI\WebControls\Expressions\ExpressionHelper.cs (22)
8public static Expression GetValue(Expression exp) { 13return Expression.Convert(exp, realType); 28public static Expression CreatePropertyExpression(Expression parameterExpression, string propertyName) { 37Expression propExpression = null; 41propExpression = Expression.PropertyOrField(parameterExpression, p); 44propExpression = Expression.PropertyOrField(propExpression, p); 55public static IQueryable Call(this IQueryable source, string queryMethod, Type[] genericArgs, params Expression[] arguments) { 60Expression.Call( 71Expression.Call( 74source.Expression, Expression.Quote(lambda))); 77public static Expression Or(IEnumerable<Expression> expressions) { 78Expression orExpression = null; 79foreach (Expression e in expressions) { 87orExpression = Expression.OrElse(orExpression, e); 93public static Expression And(IEnumerable<Expression> expressions) { 94Expression andExpression = null; 95foreach (Expression e in expressions) { 103andExpression = Expression.AndAlso(andExpression, e);
UI\WebControls\Expressions\OfTypeExpression.cs (1)
79return query.Provider.CreateQuery(Expression.Call(null, OfTypeMethod, query.Expression));
UI\WebControls\Expressions\OrderByExpression.cs (3)
61ParameterExpression pe = Expression.Parameter(source.ElementType, String.Empty); 73Expression propertyExpression = ExpressionHelper.CreatePropertyExpression(parameterExpression, dataField); 76Expression.Lambda(propertyExpression, parameterExpression),
UI\WebControls\Expressions\PropertyExpression.cs (10)
16List<Expression> equalsExpressions = new List<Expression>(); 17ParameterExpression parameterExpression = Expression.Parameter(source.ElementType, String.Empty); 22Expression property = ExpressionHelper.CreatePropertyExpression(parameterExpression, pair.Key); 27Expression valueExpression = Expression.Constant(value, property.Type); 28Expression equalsExpression = Expression.Equal(property, valueExpression); 35Expression body = ExpressionHelper.And(equalsExpressions); 36return ExpressionHelper.Where(source, Expression.Lambda(body, parameterExpression));
UI\WebControls\Expressions\RangeExpression.cs (20)
58ParameterExpression parameterExpression = Expression.Parameter(source.ElementType, String.Empty); 59Expression properyExpression = ExpressionHelper.GetValue(ExpressionHelper.CreatePropertyExpression(parameterExpression, DataField)); 65Expression minExpression = null; 66Expression maxExpression = null; 93Expression rangeExpression = CreateRangeExpressionBody(minExpression, maxExpression); 95return ExpressionHelper.Where(source, Expression.Lambda(rangeExpression, parameterExpression)); 98private static Expression GetMinRangeExpression(Expression propertyExpression, object value, RangeType rangeType) { 99ConstantExpression constantValue = Expression.Constant(ExpressionHelper.BuildObjectValue(value, propertyExpression.Type)); 102return Expression.GreaterThan(propertyExpression, constantValue); 106return Expression.GreaterThanOrEqual(propertyExpression, constantValue); 113private static Expression GetMaxRangeExpression(Expression propertyExpression, object value, RangeType rangeType) { 114ConstantExpression constantValue = Expression.Constant(ExpressionHelper.BuildObjectValue(value, propertyExpression.Type)); 117return Expression.LessThan(propertyExpression, constantValue); 121return Expression.LessThanOrEqual(propertyExpression, constantValue); 128private static Expression CreateRangeExpressionBody(Expression minExpression, Expression maxExpression) { 141return Expression.AndAlso(minExpression, maxExpression);
UI\WebControls\Expressions\SearchExpression.cs (12)
66List<Expression> searchExpressions = new List<Expression>(); 68ParameterExpression parameterExpression = Expression.Parameter(source.ElementType, String.Empty); 71Expression property = ExpressionHelper.CreatePropertyExpression(parameterExpression, p.Trim()); 76Expression.Lambda(ExpressionHelper.Or(searchExpressions), 80private Expression CreateCallExpression(Expression property, string query) { 84return Expression.Call(property, SearchType.ToString(), Type.EmptyTypes, Expression.Constant(query, property.Type)); 86return Expression.Call(property, SearchType.ToString(), Type.EmptyTypes, Expression.Constant(query, property.Type), Expression.Constant(ComparisonType));