676 return value.NodeType;
726 if (left.Type.IsNullableType() && right.Type.IsNullableType())
817 [
UnconditionalSuppressMessage(
"ReflectionAnalysis",
"IL2072:UnrecognizedReflectionPattern", Justification =
"The trimmer doesn't remove operators when System.Linq.Expressions is used. See https://github.com/mono/linker/pull/2125.")]
837 if (right.IsNullableType() && left.IsNullableType() &&
method ==
null)
881 if (
method.ContainsGenericParameters)
893 return left.Type.IsNullableType();
899 return right.Type.IsNullableType();
908 return constantExpression.Value ==
null;
939 left = left.GetNonNullableType();
992 ExpressionType.Add =>
Add(left, right,
method),
1000 ExpressionType.Power =>
Power(left, right,
method),
1001 ExpressionType.And =>
And(left, right,
method),
1003 ExpressionType.Or =>
Or(left, right,
method),
1013 ExpressionType.ArrayIndex =>
ArrayIndex(left, right),
1016 ExpressionType.Assign =>
Assign(left, right),
1091 if (left.Type == right.Type && (left.Type.IsNumeric() || left.Type ==
typeof(
object) || left.Type.IsBool() || left.Type.GetNonNullableType().IsEnum))
1093 if (left.Type.IsNullableType() &&
liftToNull)
1106 if (left.Type.IsNullableType() &&
liftToNull)
1181 if (left.Type == right.Type && left.Type.IsNumeric())
1183 if (left.Type.IsNullableType() &&
liftToNull)
1194 return AndAlso(left, right,
null);
1204 if (left.Type == right.Type)
1206 if (left.Type ==
typeof(
bool))
1210 if (left.Type ==
typeof(
bool?))
1231 return OrElse(left, right,
null);
1241 if (left.Type == right.Type)
1243 if (left.Type ==
typeof(
bool))
1247 if (left.Type ==
typeof(
bool?))
1256 type = ((left.Type.IsNullableType() && method.ReturnType == left.Type.GetNonNullableType()) ? left.Type :
method.ReturnType);
1262 type = ((left.Type.IsNullableType() && method.ReturnType == left.Type.GetNonNullableType()) ? left.Type :
method.ReturnType);
1268 return Coalesce(left, right,
null);
1280 if (left.Type.IsValueType && !left.Type.IsNullableType())
1313 if (left.IsNullableType() && right.IsImplicitlyConvertibleTo(
nonNullableType))
1317 if (right.IsImplicitlyConvertibleTo(left))
1330 return Add(left, right,
null);
1339 if (left.Type == right.Type && left.Type.IsArithmetic())
1350 return AddAssign(left, right,
null,
null);
1365 if (left.Type == right.Type && left.Type.IsArithmetic())
1414 if (left.Type == right.Type && left.Type.IsArithmetic())
1438 if (left.Type == right.Type && left.Type.IsArithmetic())
1449 return Subtract(left, right,
null);
1458 if (left.Type == right.Type && left.Type.IsArithmetic())
1484 if (left.Type == right.Type && left.Type.IsArithmetic())
1514 if (left.Type == right.Type && left.Type.IsArithmetic())
1538 if (left.Type == right.Type && left.Type.IsArithmetic())
1549 return Divide(left, right,
null);
1558 if (left.Type == right.Type && left.Type.IsArithmetic())
1584 if (left.Type == right.Type && left.Type.IsArithmetic())
1599 return Modulo(left, right,
null);
1608 if (left.Type == right.Type && left.Type.IsArithmetic())
1634 if (left.Type == right.Type && left.Type.IsArithmetic())
1649 return Multiply(left, right,
null);
1658 if (left.Type == right.Type && left.Type.IsArithmetic())
1684 if (left.Type == right.Type && left.Type.IsArithmetic())
1714 if (left.Type == right.Type && left.Type.IsArithmetic())
1738 if (left.Type == right.Type && left.Type.IsArithmetic())
1749 if (left.IsInteger())
1751 return right.GetNonNullableType() ==
typeof(
int);
1758 if (!left.IsNullableType() && right.IsNullableType())
1871 return And(left, right,
null);
1880 if (left.Type == right.Type && left.Type.IsIntegerOrBool())
1891 return AndAssign(left, right,
null,
null);
1906 if (left.Type == right.Type && left.Type.IsIntegerOrBool())
1921 return Or(left, right,
null);
1930 if (left.Type == right.Type && left.Type.IsIntegerOrBool())
1941 return OrAssign(left, right,
null,
null);
1956 if (left.Type == right.Type && left.Type.IsIntegerOrBool())
1980 if (left.Type == right.Type && left.Type.IsIntegerOrBool())
2006 if (left.Type == right.Type && left.Type.IsIntegerOrBool())
2021 return Power(left, right,
null);
2030 if (!(left.Type == right.Type) || !left.Type.IsArithmetic())
2032 string name =
"op_Exponent";
2036 name =
"op_Exponentiation";
2092 if (
type.GetArrayRank() != 1)
2226 return expressions.Count
switch
2242 for (
int i = 0; i <
count; i++)
2383 if (!
type.IsValueType ||
type.IsNullableType())
2502 [
Obsolete(
"This constructor has been deprecated. Use a different constructor that does not take ExpressionType. Then override NodeType and Type properties to provide the values that would be specified to this constructor.")]
2536 return visitor.VisitExtension(
this);
2603 if (propertyInfo.CanWrite)
2825 [
RequiresUnreferencedCode(
"Creating Expressions requires unreferenced code because the members being referenced by the Expression may be trimmed.")]
2836 BindingFlags flags = BindingFlags.IgnoreCase | BindingFlags.Instance | BindingFlags.Public |
BindingFlags.FlattenHierarchy;
2838 if (propertyInfo ==
null)
2840 flags = BindingFlags.IgnoreCase | BindingFlags.Instance | BindingFlags.NonPublic |
BindingFlags.FlattenHierarchy;
2843 if (propertyInfo ==
null)
2851 return propertyInfo;
2858 for (
int i = 0; i <
arguments.Length; i++)
2878 if (!(propertyInfo ==
null))
2885 return propertyInfo;
2904 if (
array.Length == 0)
2912 return array.Length == 0;
2918 for (
int i = 0; i <
args.Length; i++)
2920 if (
args[i] ==
null)
2951 if (
indexer.PropertyType.IsByRef)
3001 for (
int i = 0; i <
array.Length; i++)
3030 if (instance !=
null)
3037 if (instance ==
null)
3057 for (
int num =
indexes.Length; i < num; i++)
3075 for (
int j = 0;
j < i;
j++)
3215 return Label(target,
null);
3351 for (
int i = 0; i <
count; i++)
3432 else if (parameters.
Count > 0)
3533 [
RequiresUnreferencedCode(
"Creating Expressions requires unreferenced code because the members being referenced by the Expression may be trimmed.")]
3539 [
RequiresUnreferencedCode(
"Creating Expressions requires unreferenced code because the members being referenced by the Expression may be trimmed.")]
3553 [
RequiresUnreferencedCode(
"Creating Expressions requires unreferenced code because the members being referenced by the Expression may be trimmed.")]
3559 [
RequiresUnreferencedCode(
"Creating Expressions requires unreferenced code because the members being referenced by the Expression may be trimmed.")]
3593 return Loop(body,
null);
3598 return Loop(body, @
break,
null);
3604 if (@
continue !=
null && @
continue.
Type !=
typeof(
void))
3650 if (!propertyInfo.CanWrite)
3683 [
RequiresUnreferencedCode(
"Creating Expressions requires unreferenced code because the members being referenced by the Expression may be trimmed.")]
3708 [
RequiresUnreferencedCode(
"Creating Expressions requires unreferenced code because the members being referenced by the Expression may be trimmed.")]
3714 if (propertyInfo ==
null)
3726 if (propertyInfo ==
null)
3744 if (
methodInfo.GetParametersCached().Length != 1)
3749 else if (
methodInfo.GetParametersCached().Length != 0)
3798 return propertyInfo;
3802 return propertyInfo;
3809 [
UnconditionalSuppressMessage(
"ReflectionAnalysis",
"IL2075:UnrecognizedReflectionPattern", Justification =
"Since the methods are already supplied, they won't be trimmed. Just checking for method equality.")]
3824 [
RequiresUnreferencedCode(
"Creating Expressions requires unreferenced code because the members being referenced by the Expression may be trimmed.")]
3969 if (!propertyInfo.CanRead)
4085 if (instance !=
null)
4104 if (instance !=
null)
4120 if (instance !=
null)
4138 if (instance !=
null)
4145 [
RequiresUnreferencedCode(
"Creating Expressions requires unreferenced code because the members being referenced by the Expression may be trimmed.")]
4154 BindingFlags flags = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic |
BindingFlags.FlattenHierarchy;
4158 [
RequiresUnreferencedCode(
"Calling a generic method cannot be statically analyzed. It's not possible to guarantee the availability of requirements of the generic method. This can be suppressed if the method is not generic.")]
4167 BindingFlags flags = BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic |
BindingFlags.FlattenHierarchy;
4187 if (instance ==
null)
4202 if (instance ==
null)
4222 if (instance !=
null)
4228 if (instance ==
null)
4269 [
RequiresUnreferencedCode(
"Calling a generic method cannot be statically analyzed. It's not possible to guarantee the availability of requirements of the generic method. This can be suppressed if the method is not generic.")]
4317 for (
int i = 0; i <
arguments.Length; i++)
4335 [
RequiresUnreferencedCode(
"Calling a generic method cannot be statically analyzed. It's not possible to guarantee the availability of requirements of the generic method. This can be suppressed if the method is not generic.")]
4340 if (!
m.IsGenericMethodDefinition)
4345 else if (
m.IsGenericMethodDefinition &&
m.GetGenericArguments().Length ==
typeArgs.Length)
4415 for (
int j = 0;
j < i;
j++)
4453 for (
int i = 0; i <
count; i++)
4519 if (!
type.IsValueType)
4571 for (
int j = 0;
j < i;
j++)
4583 for (
int k = 0;
k < i;
k++)
4628 if (!propertyInfo.CanRead)
4632 if (propertyInfo.GetGetMethod().IsStatic)
4792 if (!
type3.IsNullableType())
4884 return MakeTry(
null, body,
@finally,
null,
null);
4911 else if (
@finally !=
null)
5032 [
UnconditionalSuppressMessage(
"ReflectionAnalysis",
"IL2072:UnrecognizedReflectionPattern", Justification =
"The trimmer doesn't remove operators when System.Linq.Expressions is used. See https://github.com/mono/linker/pull/2125.")]
5043 if (
type.IsNullableType())
5257 if (
type.IsValueType && !
type.IsNullableType())
5272 if (!
type.IsValueType)
5313 if (
expression.Type.HasIdentityPrimitiveOrNullableConversionTo(
type))
5329 if (!
array.Type.IsSZArray)
5372 if (
value.Type.IsValueType)
5469 string name = ((kind != ExpressionType.PreIncrementAssign && kind !=
ExpressionType.PostIncrementAssign) ?
"op_Decrement" :
"op_Increment");
5510 if (body ==
base.Body)
5513 if (parameters ==
null)
5522 parameters = (
collection = parameters.ToReadOnly());
5547 return visitor.VisitLambda(
this);
5559 return parameters.Count
switch
bool TryGetValue(TKey key, [MaybeNullWhen(false)] out TValue value)
void Add(TKey key, TValue value)
static Exception Unreachable
static void Requires([DoesNotReturnIf(false)] bool precondition, string paramName)
static void RequiresNotNull(object value, string paramName)
static void ValidateArgumentCount(MethodBase method, ExpressionType nodeKind, int count, ParameterInfo[] pis)
static void RequiresCanRead(Expression expression, string paramName)
static bool TryQuote(Type parameterType, ref Expression argument)
static ParameterInfo[] GetParametersForValidation(MethodBase method, ExpressionType nodeKind)
static void ValidateArgumentTypes(MethodBase method, ExpressionType nodeKind, ref ReadOnlyCollection< Expression > arguments, string methodParamName)
static Expression ValidateOneArgument(MethodBase method, ExpressionType nodeKind, Expression arguments, ParameterInfo pi, string methodParamName, string argumentParamName, int index=-1)
static bool HasReferenceEquality(Type left, Type right)
static bool IsSameOrSubclass(Type type, Type subType)
static MethodInfo GetArrayGetMethod(Type arrayType)
static Type FindGenericType(Type definition, Type type)
static bool HasBuiltInEqualityOperator(Type left, Type right)
static void ValidateType(Type type, string paramName)
static bool AreEquivalent(Type t1, Type t2)
static MethodInfo GetBooleanOperator(Type type, string name)
static bool AreReferenceAssignable(Type dest, Type src)
static bool IsValidInstanceType(MemberInfo member, Type instanceType)
static MethodInfo GetUserDefinedCoercionMethod(Type convertFrom, Type convertToType)
static CultureInfo CurrentCulture
LambdaExpression? Conversion
override ExpressionType NodeType
ReadOnlyCollection< Expression > Expressions
ReadOnlyCollection< ParameterExpression > Variables
static MethodInfo Math_Pow_Double_Double
ParameterExpression? Variable
static Type MakeDelegateType(Type[] types)
static Type GetFuncType(Type[] types)
static Type GetActionType(Type[] types)
static Delegate Compile(LambdaExpression lambda)
static ConditionalExpression Make(Expression test, Expression ifTrue, Expression ifFalse, Type type)
override ExpressionType NodeType
override ExpressionType NodeType
SymbolDocumentInfo Document
override ExpressionType NodeType
static void WriteTo(Expression node, TextWriter writer)
override ExpressionType NodeType
static new DynamicExpression MakeDynamic(Type delegateType, CallSiteBinder binder, IEnumerable< Expression >? arguments)
static new DynamicExpression Dynamic(CallSiteBinder binder, Type returnType, params Expression[] arguments)
static Exception OverloadOperatorTypeDoesNotMatchConversionType(object p0, object p1)
static Exception IndexesOfSetGetMustMatch(string paramName)
static Exception AllCaseBodiesMustHaveSameType(string paramName)
static Exception ExtensionNodeMustOverrideProperty(object p0)
static Exception ElementInitializerMethodNotAdd(string paramName)
static Exception ExpressionMustBeWriteable(string paramName)
static Exception OutOfRange(string paramName, object p1)
static Exception BodyOfCatchMustHaveSameTypeAsBodyOfTry()
static Exception MethodWithMoreThanOneMatch(object p0, object p1)
static Exception ExpressionTypeDoesNotMatchReturn(object p0, object p1)
static Exception ArgumentMustBeInstanceMember(string paramName)
static Exception MethodIsGeneric(object p0, string paramName)
static Exception ReducibleMustOverrideReduce()
static Exception FaultCannotHaveCatchOrFinally(string paramName)
static Exception ExpressionTypeCannotInitializeArrayType(object p0, object p1)
static Exception InstancePropertyWithoutParameterNotDefinedForType(object p0, object p1)
static Exception ReferenceEqualityNotDefined(object p0, object p1)
static Exception InstancePropertyNotDefinedForType(object p0, object p1, string paramName)
static Exception ElementInitializerMethodNoRefOutParam(object p0, object p1, string paramName)
static Exception DuplicateVariable(object p0, string paramName)
static Exception UserDefinedOperatorMustBeStatic(object p0, string paramName)
static Exception StartEndMustBeOrdered()
static Exception ArgumentTypeDoesNotMatchMember(object p0, object p1, string paramName)
static Exception SetterMustBeVoid(string paramName)
static Exception UserDefinedOpMustHaveValidReturnType(object p0, object p1)
static Exception PropertyDoesNotHaveGetter(object p0, string paramName)
static Exception ArgumentMustBeInteger(string paramName)
static Exception IncorrectNumberOfLambdaDeclarationParameters()
static Exception IncorrectNumberOfMembersForGivenConstructor()
static Exception IncorrectTypeForTypeAs(object p0, string paramName)
static Exception InstanceAndMethodTypeMismatch(object p0, object p1, object p2)
static Exception ArgumentMemberNotDeclOnType(object p0, object p1, string paramName)
static Exception ArgumentMustBeArray(string paramName)
static Exception ElementInitializerMethodStatic(string paramName)
static Exception VariableMustNotBeByRef(object p0, object p1, string paramName)
static Exception IncorrectNumberOfArgumentsForMembers()
static Exception ElementInitializerMethodWithZeroArgs(string paramName)
static Exception TypeMissingDefaultConstructor(object p0, string paramName)
static Exception AccessorsCannotHaveByRefArgs(string paramName)
static Exception NotAMemberOfAnyType(object p0, string paramName)
static Exception PropertyTypeMustMatchGetter(string paramName)
static Exception PropertyNotDefinedForType(object p0, object p1, string paramName)
static Exception LabelTypeMustBeVoid(string paramName)
static Exception ExpressionTypeDoesNotMatchLabel(object p0, object p1)
static Exception ConversionIsNotSupportedForArithmeticTypes()
static Exception ExpressionTypeDoesNotMatchAssignment(object p0, object p1)
static Exception AccessorsCannotHaveVarArgs(string paramName)
static Exception TryMustHaveCatchFinallyOrFault()
static Exception IncorrectNumberOfIndexes()
static Exception BoundsCannotBeLessThanOne(string paramName)
static Exception AllTestValuesMustHaveSameType(string paramName)
static Exception FieldNotDefinedForType(object p0, object p1)
static Exception PropertyDoesNotHaveSetter(object p0, string paramName)
static Exception ArgumentMustBeFieldInfoOrPropertyInfoOrMethod(string paramName)
static Exception BinaryOperatorNotDefined(object p0, object p1, object p2)
static Exception TestValueTypeDoesNotMatchComparisonMethodParameter(object p0, object p1)
static Exception MustReduceToDifferent()
static Exception ExpressionTypeNotInvocable(object p0, string paramName)
static Exception SwitchValueTypeDoesNotMatchComparisonMethodParameter(object p0, object p1)
static Exception PropertyTypeMustMatchSetter(string paramName)
static Exception BothAccessorsMustBeStatic(string paramName)
static Exception ArgumentMustBeSingleDimensionalArrayType(string paramName)
static Exception UserDefinedOperatorMustNotBeVoid(object p0, string paramName)
static Exception DefaultBodyMustBeSupplied(string paramName)
static Exception MethodContainsGenericParameters(object p0, string paramName)
static Exception IncorrectNumberOfConstructorArguments()
static Exception OnlyStaticPropertiesHaveNullInstance(string paramName)
static Exception MustBeReducible()
static Exception LogicalOperatorMustHaveBooleanOperators(object p0, object p1)
static Exception ArgumentMustBeBoolean(string paramName)
static Exception IncorrectNumberOfTypeArgsForAction(string paramName)
static Exception MemberNotFieldOrProperty(object p0, string paramName)
static Exception UserDefinedOpMustHaveConsistentTypes(object p0, object p1)
static Exception PropertyTypeCannotBeVoid(string paramName)
static Exception EqualityMustReturnBoolean(object p0, string paramName)
static Exception ArgumentTypesMustMatch()
static Exception ArgumentCannotBeOfTypeVoid(string paramName)
static Exception PropertyWithMoreThanOneMatch(object p0, object p1)
static Exception PropertyCannotHaveRefType(string paramName)
static Exception UnhandledUnary(object p0, string paramName)
static Exception UnhandledBinary(object p0, string paramName)
static Exception ExpressionTypeDoesNotMatchMethodParameter(object p0, object p1, object p2, string paramName)
static Exception ArgumentMustNotHaveValueType(string paramName)
static Exception IncorrectNumberOfMethodCallArguments(object p0, string paramName)
static Exception ArgumentMustBeFieldInfoOrPropertyInfo(string paramName)
static Exception TypeNotIEnumerable(object p0, string paramName)
static Exception IncorrectNumberOfTypeArgsForFunc(string paramName)
static Exception InvalidUnboxType(string paramName)
static Exception UnaryOperatorNotDefined(object p0, object p1)
static Exception MethodNotPropertyAccessor(object p0, object p1, string paramName)
static Exception ArgumentMustBeArrayIndexType(string paramName)
static Exception GenericMethodWithArgsDoesNotExistOnType(object p0, object p1)
static Exception TypeMustNotBeByRef(string paramName)
static Exception PropertyDoesNotHaveAccessor(object p0, string paramName)
static Exception ReducedNotCompatible()
static Exception ExpressionTypeDoesNotMatchConstructorParameter(object p0, object p1, string paramName)
static Exception InstancePropertyWithSpecifiedParametersNotDefinedForType(object p0, object p1, object p2, string paramName)
static Exception NonStaticConstructorRequired(string paramName)
static Exception LambdaTypeMustBeDerivedFromSystemDelegate(string paramName)
static Exception OnlyStaticFieldsHaveNullInstance(string paramName)
static Exception LabelMustBeVoidOrHaveExpression(string paramName)
static Exception QuotedExpressionMustBeLambda(string paramName)
static Exception CoercionOperatorNotDefined(object p0, object p1)
static Exception CoalesceUsedOnNonNullType()
static Exception OperandTypesDoNotMatchParameters(object p0, object p1)
static Exception OnlyStaticMethodsHaveNullInstance()
static Exception InstanceFieldNotDefinedForType(object p0, object p1)
static Exception NotAMemberOfType(object p0, object p1, string paramName)
static Exception FieldInfoNotDefinedForType(object p0, object p1, object p2)
static Exception ParameterExpressionNotValidAsDelegate(object p0, object p1)
static Exception MethodWithArgsDoesNotExistOnType(object p0, object p1)
static Exception SetterHasNoParams(string paramName)
static string ExpressionToString(Expression node)
BinaryExpressionProxy(BinaryExpression node)
LambdaExpression Conversion
readonly BinaryExpression _node
readonly BlockExpression _node
ReadOnlyCollection< ParameterExpression > Variables
BlockExpressionProxy(BlockExpression node)
readonly CatchBlock _node
CatchBlockProxy(CatchBlock node)
ParameterExpression Variable
ConditionalExpressionProxy(ConditionalExpression node)
readonly ConditionalExpression _node
ConstantExpressionProxy(ConstantExpression node)
readonly ConstantExpression _node
DebugInfoExpressionProxy(DebugInfoExpression node)
readonly DebugInfoExpression _node
SymbolDocumentInfo Document
readonly DefaultExpression _node
DefaultExpressionProxy(DefaultExpression node)
ExtensionInfo(ExpressionType nodeType, Type type)
readonly ExpressionType NodeType
GotoExpressionProxy(GotoExpression node)
readonly GotoExpression _node
readonly IndexExpression _node
IndexExpressionProxy(IndexExpression node)
ReadOnlyCollection< Expression > Arguments
ReadOnlyCollection< Expression > Arguments
InvocationExpressionProxy(InvocationExpression node)
readonly InvocationExpression _node
LabelExpressionProxy(LabelExpression node)
readonly LabelExpression _node
readonly LambdaExpression _node
LambdaExpressionProxy(LambdaExpression node)
ReadOnlyCollection< ParameterExpression > Parameters
readonly ListInitExpression _node
ListInitExpressionProxy(ListInitExpression node)
readonly LoopExpression _node
LoopExpressionProxy(LoopExpression node)
LabelTarget ContinueLabel
MemberExpressionProxy(MemberExpression node)
readonly MemberExpression _node
readonly MemberInitExpression _node
MemberInitExpressionProxy(MemberInitExpression node)
ReadOnlyCollection< MemberBinding > Bindings
MethodCallExpressionProxy(MethodCallExpression node)
readonly MethodCallExpression _node
ReadOnlyCollection< Expression > Arguments
readonly NewArrayExpression _node
NewArrayExpressionProxy(NewArrayExpression node)
ConstructorInfo Constructor
readonly NewExpression _node
ReadOnlyCollection< MemberInfo > Members
NewExpressionProxy(NewExpression node)
ReadOnlyCollection< Expression > Arguments
ParameterExpressionProxy(ParameterExpression node)
readonly ParameterExpression _node
readonly RuntimeVariablesExpression _node
RuntimeVariablesExpressionProxy(RuntimeVariablesExpression node)
ReadOnlyCollection< ParameterExpression > Variables
readonly SwitchCase _node
SwitchCaseProxy(SwitchCase node)
ReadOnlyCollection< Expression > TestValues
readonly SwitchExpression _node
SwitchExpressionProxy(SwitchExpression node)
ReadOnlyCollection< SwitchCase > Cases
readonly TryExpression _node
TryExpressionProxy(TryExpression node)
ReadOnlyCollection< CatchBlock > Handlers
TypeBinaryExpressionProxy(TypeBinaryExpression node)
readonly TypeBinaryExpression _node
UnaryExpressionProxy(UnaryExpression node)
readonly UnaryExpression _node
static BinaryExpression GreaterThan(Expression left, Expression right)
static SwitchExpression Switch(Expression switchValue, params SwitchCase[]? cases)
static CatchBlock Catch(Type type, Expression body)
static ConstantExpression Constant(object? value)
static BlockExpression Block(Expression arg0, Expression arg1)
static void ValidateAccessor(Expression instance, MethodInfo method, ParameterInfo[] indexes, ref ReadOnlyCollection< Expression > arguments, string paramName)
static ListInitExpression ListInit(NewExpression newExpression, MethodInfo? addMethod, IEnumerable< Expression > initializers)
static Type GetFuncType(params Type[]? typeArgs)
static bool IsValidLiftedConditionalLogicalOperator(Type left, Type right, ParameterInfo[] pms)
static BinaryExpression GetUserDefinedBinaryOperator(ExpressionType binaryType, string name, Expression left, Expression right, bool liftToNull)
static UnaryExpression GetUserDefinedCoercionOrThrow(ExpressionType coercionType, Expression expression, Type convertToType)
static MethodInfo GetInvokeMethod(Expression expression)
static IndexExpression ArrayAccess(Expression array, IEnumerable< Expression >? indexes)
static GotoExpression Return(LabelTarget target, Expression? value)
static bool IsCompatible(PropertyInfo pi, Expression[] args)
static BinaryExpression ModuloAssign(Expression left, Expression right, MethodInfo? method)
static MemberExpression PropertyOrField(Expression expression, string propertyOrFieldName)
static void ValidateLambdaArgs(Type delegateType, ref Expression body, ReadOnlyCollection< ParameterExpression > parameters, string paramName)
static NewExpression New(ConstructorInfo constructor, params Expression[]? arguments)
static UnaryExpression IsTrue(Expression expression)
static BinaryExpression MultiplyAssignChecked(Expression left, Expression right)
static SwitchExpression Switch(Type? type, Expression switchValue, Expression? defaultBody, MethodInfo? comparison, IEnumerable< SwitchCase >? cases)
static BinaryExpression GetUserDefinedAssignOperatorOrThrow(ExpressionType binaryType, string name, Expression left, Expression right, LambdaExpression conversion, bool liftToNull)
static BinaryExpression MultiplyChecked(Expression left, Expression right, MethodInfo? method)
static BinaryExpression SubtractAssignChecked(Expression left, Expression right, MethodInfo? method, LambdaExpression? conversion)
static void ValidateOpAssignConversionLambda(LambdaExpression conversion, Expression left, MethodInfo method, ExpressionType nodeType)
static UnaryExpression MakeUnary(ExpressionType unaryType, Expression operand, Type type)
static RuntimeVariablesExpression RuntimeVariables(IEnumerable< ParameterExpression > variables)
static BinaryExpression DivideAssign(Expression left, Expression right, MethodInfo? method, LambdaExpression? conversion)
static DefaultExpression Default(Type type)
static BinaryExpression NotEqual(Expression left, Expression right)
static BinaryExpression Add(Expression left, Expression right)
static BinaryExpression SubtractAssign(Expression left, Expression right, MethodInfo? method, LambdaExpression? conversion)
override string ToString()
static LambdaExpression Lambda(Expression body, params ParameterExpression[]? parameters)
static LambdaExpression Lambda(Expression body, string? name, bool tailCall, IEnumerable< ParameterExpression >? parameters)
static BlockExpression Block(IEnumerable< Expression > expressions)
static BinaryExpression LeftShiftAssign(Expression left, Expression right)
static UnaryExpression ArrayLength(Expression array)
static DynamicExpression MakeDynamic(Type delegateType, CallSiteBinder binder, params Expression[]? arguments)
Expression ReduceAndCheck()
static GotoExpression Break(LabelTarget target, Expression? value)
static DynamicExpression MakeDynamic(Type delegateType, CallSiteBinder binder, Expression arg0, Expression arg1)
static UnaryExpression IsFalse(Expression expression, MethodInfo? method)
static LoopExpression Loop(Expression body, LabelTarget? @break, LabelTarget? @continue)
static void ValidateNewArgs(ConstructorInfo constructor, ref ReadOnlyCollection< Expression > arguments, ref ReadOnlyCollection< MemberInfo > members)
static GotoExpression Break(LabelTarget target, Expression? value, Type type)
Expression(Expression body)
static MethodCallExpression Call(Expression instance, string methodName, Type[]? typeArguments, params Expression[]? arguments)
static void ValidateSettableFieldOrPropertyMember(MemberInfo member, out Type memberType)
static TryExpression TryFault(Expression body, Expression? fault)
static void ValidateListInitArgs(Type listType, ReadOnlyCollection< ElementInit > initializers, string listTypeParamName)
static UnaryExpression MakeOpAssignUnary(ExpressionType kind, Expression expression, MethodInfo method)
static PropertyInfo GetProperty(MethodInfo mi, string paramName, int index=-1)
new TDelegate Compile(DebugInfoGenerator debugInfoGenerator)
virtual Expression Accept(ExpressionVisitor visitor)
static void Validate(Type type, bool allowByRef)
static void ValidateUserDefinedConditionalLogicOperator(ExpressionType nodeType, Type left, Type right, MethodInfo method)
static GotoExpression Return(LabelTarget target)
static BinaryExpression LeftShiftAssign(Expression left, Expression right, MethodInfo? method)
static BinaryExpression ExclusiveOrAssign(Expression left, Expression right, MethodInfo? method)
static GotoExpression Goto(LabelTarget target, Type type)
static LambdaExpression Lambda(Type delegateType, Expression body, bool tailCall, IEnumerable< ParameterExpression >? parameters)
static GotoExpression Goto(LabelTarget target, Expression? value)
static MethodCallExpression Call(MethodInfo method)
static MemberListBinding ListBind(MethodInfo propertyAccessor, params ElementInit[] initializers)
static BinaryExpression MultiplyAssign(Expression left, Expression right)
static BinaryExpression Multiply(Expression left, Expression right)
static NewArrayExpression NewArrayBounds(Type type, params Expression[] bounds)
static GotoExpression Return(LabelTarget target, Expression? value, Type type)
static ConditionalExpression Condition(Expression test, Expression ifTrue, Expression ifFalse, Type type)
static BinaryExpression Assign(Expression left, Expression right)
static string GetArgTypesString(Expression[] arguments)
static BinaryExpression GetMethodBasedBinaryOperator(ExpressionType binaryType, Expression left, Expression right, MethodInfo method, bool liftToNull)
static UnaryExpression PreIncrementAssign(Expression expression, MethodInfo? method)
static InvocationExpression Invoke(Expression expression, IEnumerable< Expression >? arguments)
static void ValidateGoto(LabelTarget target, ref Expression value, string targetParameter, string valueParameter, Type type)
static BinaryExpression AddAssignChecked(Expression left, Expression right)
static BlockExpression Block(Type type, params Expression[] expressions)
static UnaryExpression GetUserDefinedUnaryOperator(ExpressionType unaryType, string name, Expression operand)
static LambdaExpression Lambda(Expression body, bool tailCall, IEnumerable< ParameterExpression >? parameters)
static InvocationExpression Invoke(Expression expression, Expression arg0, Expression arg1, Expression arg2)
static BinaryExpression RightShift(Expression left, Expression right)
static BinaryExpression Divide(Expression left, Expression right, MethodInfo? method)
static BinaryExpression AddChecked(Expression left, Expression right)
static void ValidateCallInstanceType(Type instanceType, MethodInfo method)
static BinaryExpression Add(Expression left, Expression right, MethodInfo? method)
static LoopExpression Loop(Expression body, LabelTarget? @break)
static UnaryExpression PreDecrementAssign(Expression expression, MethodInfo? method)
static BinaryExpression Subtract(Expression left, Expression right)
static NewExpression New(ConstructorInfo constructor, IEnumerable< Expression >? arguments)
static MethodCallExpression Call(MethodInfo method, Expression arg0, Expression arg1, Expression arg2, Expression arg3, Expression arg4)
static UnaryExpression MakeUnary(ExpressionType unaryType, Expression operand, Type type, MethodInfo? method)
static GotoExpression Break(LabelTarget target, Type type)
static DynamicExpression Dynamic(CallSiteBinder binder, Type returnType, Expression arg0)
static MemberExpression Field(Expression expression, string fieldName)
static BinaryExpression ModuloAssign(Expression left, Expression right)
static BinaryExpression And(Expression left, Expression right, MethodInfo? method)
static BlockExpression GetOptimizedBlockExpression(IReadOnlyList< Expression > expressions)
static MethodCallExpression Call([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicMethods|DynamicallyAccessedMemberTypes.NonPublicMethods)] Type type, string methodName, Type[]? typeArguments, params Expression[]? arguments)
static BinaryExpression LeftShift(Expression left, Expression right)
static BinaryExpression OrAssign(Expression left, Expression right, MethodInfo? method, LambdaExpression? conversion)
static BlockExpression Block(IEnumerable< ParameterExpression >? variables, params Expression[] expressions)
static BinaryExpression PowerAssign(Expression left, Expression right)
static SwitchCase SwitchCase(Expression body, params Expression[] testValues)
static MemberAssignment Bind(MethodInfo propertyAccessor, Expression expression)
static UnaryExpression Increment(Expression expression, MethodInfo? method)
static BinaryExpression OrElse(Expression left, Expression right)
static BinaryExpression GetEqualityComparisonOperator(ExpressionType binaryType, string opName, Expression left, Expression right, bool liftToNull)
static MemberExpression Property(Expression? expression, PropertyInfo property)
static MethodCallExpression Call(Expression? instance, MethodInfo method, Expression arg0, Expression arg1, Expression arg2)
static Expression< TDelegate > Create(Expression body, string name, bool tailCall, IReadOnlyList< ParameterExpression > parameters)
static Type ValidateCoalesceArgTypes(Type left, Type right)
static BinaryExpression SubtractAssignChecked(Expression left, Expression right)
static MemberMemberBinding MemberBind(MethodInfo propertyAccessor, params MemberBinding[] bindings)
static InvocationExpression Invoke(Expression expression, Expression arg0, Expression arg1, Expression arg2, Expression arg3, Expression arg4)
static MemberListBinding ListBind(MethodInfo propertyAccessor, IEnumerable< ElementInit > initializers)
static BinaryExpression ExclusiveOr(Expression left, Expression right, MethodInfo? method)
static UnaryExpression PostDecrementAssign(Expression expression)
static TypeBinaryExpression TypeEqual(Expression expression, Type type)
static MethodCallExpression Call(MethodInfo method, params Expression[]? arguments)
static BinaryExpression Power(Expression left, Expression right)
static GotoExpression Continue(LabelTarget target)
static UnaryExpression PreDecrementAssign(Expression expression)
static UnaryExpression Unbox(Expression expression, Type type)
static BinaryExpression AddAssign(Expression left, Expression right)
static Type GetActionType(params Type[]? typeArgs)
static MemberAssignment Bind(MemberInfo member, Expression expression)
static BinaryExpression ExclusiveOrAssign(Expression left, Expression right, MethodInfo? method, LambdaExpression? conversion)
static MethodInfo GetUserDefinedBinaryOperator(ExpressionType binaryType, Type leftType, Type rightType, string name)
static BinaryExpression MultiplyAssignChecked(Expression left, Expression right, MethodInfo? method, LambdaExpression? conversion)
override Expression Accept(ExpressionVisitor visitor)
static SwitchExpression Switch(Expression switchValue, Expression? defaultBody, MethodInfo? comparison, params SwitchCase[]? cases)
static ParameterExpression Parameter(Type type)
static UnaryExpression Quote(Expression expression)
static void ValidateTryAndCatchHaveSameType(Type type, Expression tryBody, ReadOnlyCollection< CatchBlock > handlers)
static MemberListBinding ListBind(MemberInfo member, IEnumerable< ElementInit > initializers)
static ParameterExpression Parameter(Type type, string? name)
static UnaryExpression PreIncrementAssign(Expression expression)
static BinaryExpression LeftShift(Expression left, Expression right, MethodInfo? method)
static SwitchExpression Switch(Expression switchValue, Expression? defaultBody, MethodInfo? comparison, IEnumerable< SwitchCase >? cases)
static GotoExpression Break(LabelTarget target)
static Expression ValidateOneArgument(MethodBase method, ExpressionType nodeKind, Expression arg, ParameterInfo pi, string methodParamName, string argumentParamName)
static DefaultExpression Empty()
static UnaryExpression OnesComplement(Expression expression)
static UnaryExpression GetMethodBasedCoercionOperator(ExpressionType unaryType, Expression operand, Type convertToType, MethodInfo method)
static void ValidateParamswithOperandsOrThrow(Type paramType, Type operandType, ExpressionType exprType, string name)
static BinaryExpression ModuloAssign(Expression left, Expression right, MethodInfo? method, LambdaExpression? conversion)
static UnaryExpression Not(Expression expression, MethodInfo? method)
static NewExpression New([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors|DynamicallyAccessedMemberTypes.NonPublicConstructors)] Type type)
static BinaryExpression LeftShiftAssign(Expression left, Expression right, MethodInfo? method, LambdaExpression? conversion)
Expression(ExpressionType nodeType, Type type)
static NewArrayExpression NewArrayInit(Type type, IEnumerable< Expression > initializers)
static UnaryExpression Increment(Expression expression)
static BinaryExpression Coalesce(Expression left, Expression right, LambdaExpression? conversion)
static PropertyInfo FindInstanceProperty([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicProperties|DynamicallyAccessedMemberTypes.NonPublicProperties)] Type type, string propertyName, Expression[] arguments)
static UnaryExpression PostIncrementAssign(Expression expression)
static volatile CacheDict< Type, Func< Expression, string, bool, ReadOnlyCollection< ParameterExpression >, LambdaExpression > > s_lambdaFactories
static UnaryExpression Negate(Expression expression)
static void ValidateMethodInfo(MethodInfo method, string paramName)
static void ValidateArgumentCount(MethodBase method, ExpressionType nodeKind, int count, ParameterInfo[] pis)
static IndexExpression Property(Expression? instance, PropertyInfo indexer, IEnumerable< Expression >? arguments)
static CatchBlock Catch(ParameterExpression variable, Expression body, Expression? filter)
static CatchBlock Catch(ParameterExpression variable, Expression body)
static CatchBlock MakeCatchBlock(Type type, ParameterExpression? variable, Expression body, Expression? filter)
static LambdaExpression CreateLambda(Type delegateType, Expression body, string name, bool tailCall, ReadOnlyCollection< ParameterExpression > parameters)
static void RequiresCanRead(IReadOnlyList< Expression > items, string paramName)
static MemberExpression MakeMemberAccess(Expression? expression, MemberInfo member)
static DebugInfoExpression ClearDebugInfo(SymbolDocumentInfo document)
static BinaryExpression RightShiftAssign(Expression left, Expression right, MethodInfo? method, LambdaExpression? conversion)
static BinaryExpression ReferenceEqual(Expression left, Expression right)
static BinaryExpression GetComparisonOperator(ExpressionType binaryType, string opName, Expression left, Expression right, bool liftToNull)
static BinaryExpression Or(Expression left, Expression right)
static UnaryExpression TypeAs(Expression expression, Type type)
static BinaryExpression AddAssignChecked(Expression left, Expression right, MethodInfo? method)
static ListInitExpression ListInit(NewExpression newExpression, params Expression[] initializers)
static MethodCallExpression Call(Expression? instance, MethodInfo method, params Expression[]? arguments)
virtual Expression VisitChildren(ExpressionVisitor visitor)
static SymbolDocumentInfo SymbolDocument(string fileName, Guid language)
static bool IsLiftingConditionalLogicalOperator(Type left, Type right, MethodInfo method, ExpressionType binaryType)
static TryExpression TryCatchFinally(Expression body, Expression? @finally, params CatchBlock[]? handlers)
static Type GetDelegateType(params Type[] typeArgs)
static ConditionalExpression IfThenElse(Expression test, Expression ifTrue, Expression ifFalse)
static BinaryExpression NotEqual(Expression left, Expression right, bool liftToNull, MethodInfo? method)
static BinaryExpression Divide(Expression left, Expression right)
static LambdaExpression Lambda(Type delegateType, Expression body, string? name, bool tailCall, IEnumerable< ParameterExpression >? parameters)
static IndexExpression MakeIndexProperty(Expression instance, PropertyInfo indexer, string paramName, ReadOnlyCollection< Expression > argList)
static MethodCallExpression Call(MethodInfo method, Expression arg0, Expression arg1, Expression arg2, Expression arg3)
static ElementInit ElementInit(MethodInfo addMethod, params Expression[] arguments)
static MemberMemberBinding MemberBind(MemberInfo member, params MemberBinding[] bindings)
static bool IsCompatible(MethodBase m, Expression[] arguments)
static BinaryExpression RightShift(Expression left, Expression right, MethodInfo? method)
static BlockExpression Block(Type type, IEnumerable< ParameterExpression >? variables, params Expression[] expressions)
static IndexExpression Property(Expression instance, string propertyName, params Expression[]? arguments)
static void ValidateAccessorArgumentTypes(MethodInfo method, ParameterInfo[] indexes, ref ReadOnlyCollection< Expression > arguments, string paramName)
static UnaryExpression GetUserDefinedCoercion(ExpressionType coercionType, Expression expression, Type convertToType)
static BinaryExpression Multiply(Expression left, Expression right, MethodInfo? method)
static UnaryExpression Rethrow()
static BinaryExpression AddAssignChecked(Expression left, Expression right, MethodInfo? method, LambdaExpression? conversion)
static UnaryExpression Decrement(Expression expression)
static ParameterExpression Variable(Type type, string? name)
static UnaryExpression Not(Expression expression)
static void RequiresCanWrite(Expression expression, string paramName)
static InvocationExpression Invoke(Expression expression, Expression arg0, Expression arg1)
static DynamicExpression Dynamic(CallSiteBinder binder, Type returnType, Expression arg0, Expression arg1)
static GotoExpression Goto(LabelTarget target, Expression? value, Type type)
static DebugInfoExpression DebugInfo(SymbolDocumentInfo document, int startLine, int startColumn, int endLine, int endColumn)
static readonly CacheDict< Type, MethodInfo > s_lambdaDelegateCache
static void ValidateSpan(int startLine, int startColumn, int endLine, int endColumn)
static GotoExpression Return(LabelTarget target, Type type)
static bool TryGetActionType(Type[] typeArgs, [NotNullWhen(true)] out Type? actionType)
static BinaryExpression SubtractChecked(Expression left, Expression right, MethodInfo? method)
virtual ExpressionType NodeType
static CatchBlock Catch(Type type, Expression body, Expression? filter)
static MethodCallExpression ArrayIndex(Expression array, params Expression[] indexes)
static BinaryExpression GreaterThan(Expression left, Expression right, bool liftToNull, MethodInfo? method)
static BinaryExpression Or(Expression left, Expression right, MethodInfo? method)
virtual Expression< TDelegate > Rewrite(Expression body, ParameterExpression[] parameters)
static MethodCallExpression Call(MethodInfo method, Expression arg0, Expression arg1)
virtual Expression Reduce()
static MethodCallExpression Call(Expression? instance, MethodInfo method, IEnumerable< Expression >? arguments)
static void ValidateArgumentTypes(MethodBase method, ExpressionType nodeKind, ref ReadOnlyCollection< Expression > arguments, string methodParamName)
static LabelExpression Label(LabelTarget target)
static LabelTarget Label()
static DynamicExpression Dynamic(CallSiteBinder binder, Type returnType, IEnumerable< Expression > arguments)
static LabelExpression Label(LabelTarget target, Expression? defaultValue)
static void ValidateOperator(MethodInfo method)
static BinaryExpression MakeBinary(ExpressionType binaryType, Expression left, Expression right, bool liftToNull, MethodInfo? method, LambdaExpression? conversion)
static void ValidateGettableFieldOrPropertyMember(MemberInfo member, out Type memberType)
static ConditionalExpression Condition(Expression test, Expression ifTrue, Expression ifFalse)
static TypeBinaryExpression TypeIs(Expression expression, Type type)
static void ValidateGotoType(Type expectedType, ref Expression value, string paramName)
static BinaryExpression Equal(Expression left, Expression right, bool liftToNull, MethodInfo? method)
static NewExpression New(ConstructorInfo constructor)
static LambdaExpression Lambda(Expression body, bool tailCall, params ParameterExpression[]? parameters)
static BlockExpression Block(params Expression[] expressions)
virtual bool SameParameters(ICollection< ParameterExpression > parameters)
static BinaryExpression SubtractAssign(Expression left, Expression right)
static ConditionalExpression IfThen(Expression test, Expression ifTrue)
static LambdaExpression Lambda(Type delegateType, Expression body, string? name, IEnumerable< ParameterExpression >? parameters)
static BinaryExpression ExclusiveOr(Expression left, Expression right)
static InvocationExpression Invoke(Expression expression, Expression arg0)
static MemberExpression Field(Expression? expression, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicFields|DynamicallyAccessedMemberTypes.NonPublicFields)] Type type, string fieldName)
static LoopExpression Loop(Expression body)
static BlockExpression BlockCore(Type type, ReadOnlyCollection< ParameterExpression > variables, ReadOnlyCollection< Expression > expressions)
static BinaryExpression PowerAssign(Expression left, Expression right, MethodInfo? method, LambdaExpression? conversion)
static SymbolDocumentInfo SymbolDocument(string fileName, Guid language, Guid languageVendor)
static MethodCallExpression Call(MethodInfo method, Expression arg0, Expression arg1, Expression arg2)
static SwitchCase SwitchCase(Expression body, IEnumerable< Expression > testValues)
static NewExpression New(ConstructorInfo constructor, IEnumerable< Expression >? arguments, params MemberInfo[]? members)
static UnaryExpression ConvertChecked(Expression expression, Type type)
static UnaryExpression GetUserDefinedUnaryOperatorOrThrow(ExpressionType unaryType, string name, Expression operand)
static BinaryExpression MultiplyAssign(Expression left, Expression right, MethodInfo? method)
static UnaryExpression Convert(Expression expression, Type type)
static bool IsSimpleShift(Type left, Type right)
static MethodCallExpression ArrayIndex(Expression array, IEnumerable< Expression > indexes)
static BlockExpression Block(Expression arg0, Expression arg1, Expression arg2)
static BinaryExpression GetMethodBasedAssignOperator(ExpressionType binaryType, Expression left, Expression right, MethodInfo method, LambdaExpression conversion, bool liftToNull)
static MemberExpression Field(Expression? expression, FieldInfo field)
static void ValidateMemberInitArgs(Type type, ReadOnlyCollection< MemberBinding > bindings)
static BlockExpression Block(Type type, IEnumerable< Expression > expressions)
static void VerifyOpTrueFalse(ExpressionType nodeType, Type left, MethodInfo opTrue, string paramName)
static MemberExpression Property(Expression? expression, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicProperties|DynamicallyAccessedMemberTypes.NonPublicProperties)] Type type, string propertyName)
static UnaryExpression Decrement(Expression expression, MethodInfo? method)
static BinaryExpression AddChecked(Expression left, Expression right, MethodInfo? method)
static InvocationExpression Invoke(Expression expression, Expression arg0, Expression arg1, Expression arg2, Expression arg3)
static BinaryExpression AndAssign(Expression left, Expression right, MethodInfo? method, LambdaExpression? conversion)
static BinaryExpression GetUserDefinedBinaryOperatorOrThrow(ExpressionType binaryType, string name, Expression left, Expression right, bool liftToNull)
static void ValidateVariables(ReadOnlyCollection< ParameterExpression > varList, string collectionName)
static ListInitExpression ListInit(NewExpression newExpression, params ElementInit[] initializers)
static BinaryExpression MakeBinary(ExpressionType binaryType, Expression left, Expression right)
static BinaryExpression SubtractChecked(Expression left, Expression right)
static ListInitExpression ListInit(NewExpression newExpression, MethodInfo? addMethod, params Expression[] initializers)
static UnaryExpression UnaryPlus(Expression expression, MethodInfo? method)
static ListInitExpression ListInit(NewExpression newExpression, IEnumerable< Expression > initializers)
static MethodInfo FindMethod([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicMethods|DynamicallyAccessedMemberTypes.NonPublicMethods)] Type type, string methodName, Type[] typeArgs, Expression[] args, BindingFlags flags)
static BinaryExpression GreaterThanOrEqual(Expression left, Expression right)
static DynamicExpression MakeDynamic(Type delegateType, CallSiteBinder binder, Expression arg0, Expression arg1, Expression arg2)
static LambdaExpression Lambda(Expression body, IEnumerable< ParameterExpression >? parameters)
static TryExpression MakeTry(Type? type, Expression body, Expression? @finally, Expression? fault, IEnumerable< CatchBlock >? handlers)
static LambdaExpression Lambda(Type delegateType, Expression body, bool tailCall, params ParameterExpression[]? parameters)
static MemberInitExpression MemberInit(NewExpression newExpression, IEnumerable< MemberBinding > bindings)
static ParameterInfo[] ValidateMethodAndGetParameters(Expression instance, MethodInfo method)
static BinaryExpression AndAssign(Expression left, Expression right)
static BinaryExpression PowerAssign(Expression left, Expression right, MethodInfo? method)
static DynamicExpression MakeDynamic(Type delegateType, CallSiteBinder binder, Expression arg0)
static ListInitExpression ListInit(NewExpression newExpression, IEnumerable< ElementInit > initializers)
static BinaryExpression MultiplyAssignChecked(Expression left, Expression right, MethodInfo? method)
static bool TryGetFuncType(Type[] typeArgs, [NotNullWhen(true)] out Type? funcType)
static UnaryExpression ConvertChecked(Expression expression, Type type, MethodInfo? method)
static NewArrayExpression NewArrayBounds(Type type, IEnumerable< Expression > bounds)
static void ValidateConstructor(ConstructorInfo constructor, string paramName)
static ElementInit ElementInit(MethodInfo addMethod, IEnumerable< Expression > arguments)
static BinaryExpression OrElse(Expression left, Expression right, MethodInfo? method)
static SwitchExpression Switch(Expression switchValue, Expression? defaultBody, params SwitchCase[]? cases)
static BinaryExpression OrAssign(Expression left, Expression right)
static UnaryExpression IsTrue(Expression expression, MethodInfo? method)
static DynamicExpression Dynamic(CallSiteBinder binder, Type returnType, Expression arg0, Expression arg1, Expression arg2)
static BinaryExpression DivideAssign(Expression left, Expression right)
static void ValidateAnonymousTypeMember(ref MemberInfo member, out Type memberType, string paramName, int index)
static LabelTarget Label(string? name)
static DynamicExpression Dynamic(CallSiteBinder binder, Type returnType, params Expression[] arguments)
static BinaryExpression LessThan(Expression left, Expression right, bool liftToNull, MethodInfo? method)
static RuntimeVariablesExpression RuntimeVariables(params ParameterExpression[] variables)
static bool IsNullComparison(Expression left, Expression right)
static BinaryExpression SubtractAssign(Expression left, Expression right, MethodInfo? method)
static MemberMemberBinding MemberBind(MethodInfo propertyAccessor, IEnumerable< MemberBinding > bindings)
static UnaryExpression IsFalse(Expression expression)
static DynamicExpression MakeDynamic(Type delegateType, CallSiteBinder binder, IEnumerable< Expression >? arguments)
static IndexExpression Property(Expression? instance, PropertyInfo indexer, params Expression[]? arguments)
static BinaryExpression ArrayIndex(Expression array, Expression index)
static BinaryExpression LessThanOrEqual(Expression left, Expression right, bool liftToNull, MethodInfo? method)
static BinaryExpression AndAlso(Expression left, Expression right)
static MemberMemberBinding MemberBind(MemberInfo member, IEnumerable< MemberBinding > bindings)
static BinaryExpression DivideAssign(Expression left, Expression right, MethodInfo? method)
static void ValidateSwitchCaseType(Expression @case, bool customType, Type resultType, string parameterName)
static BinaryExpression Subtract(Expression left, Expression right, MethodInfo? method)
static GotoExpression MakeGoto(GotoExpressionKind kind, LabelTarget target, Expression? value, Type type)
static UnaryExpression UnaryPlus(Expression expression)
static BinaryExpression AndAssign(Expression left, Expression right, MethodInfo? method)
static SwitchExpression Switch(Type? type, Expression switchValue, Expression? defaultBody, MethodInfo? comparison, params SwitchCase[]? cases)
static bool IsNullConstant(Expression e)
static Expression< TDelegate > Lambda< TDelegate >(Expression body, params ParameterExpression[]? parameters)
static MethodCallExpression Call(Expression instance, MethodInfo method, Expression arg0)
static Type GetResultTypeOfShift(Type left, Type right)
static MethodCallExpression Call(Expression? instance, MethodInfo method)
static BinaryExpression GreaterThanOrEqual(Expression left, Expression right, bool liftToNull, MethodInfo? method)
static bool TryQuote(Type parameterType, ref Expression argument)
static BinaryExpression ReferenceNotEqual(Expression left, Expression right)
static LabelTarget Label(Type type)
static BlockExpression Block(IEnumerable< ParameterExpression >? variables, IEnumerable< Expression > expressions)
static LambdaExpression Lambda(Type delegateType, Expression body, params ParameterExpression[]? parameters)
static BinaryExpression MultiplyChecked(Expression left, Expression right)
static UnaryExpression NegateChecked(Expression expression)
static SymbolDocumentInfo SymbolDocument(string fileName, Guid language, Guid languageVendor, Guid documentType)
static PropertyInfo FindProperty([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicProperties|DynamicallyAccessedMemberTypes.NonPublicProperties)] Type type, string propertyName, Expression[] arguments, BindingFlags flags)
static TryGetFuncActionArgsResult ValidateTryGetFuncActionArgs(Type[] typeArgs)
static MemberInitExpression MemberInit(NewExpression newExpression, params MemberBinding[] bindings)
Expression ReduceExtensions()
static UnaryExpression Negate(Expression expression, MethodInfo? method)
static TryExpression TryCatch(Expression body, params CatchBlock[]? handlers)
static BinaryExpression And(Expression left, Expression right)
static ConstantExpression Constant(object? value, Type type)
static BinaryExpression Coalesce(Expression left, Expression right)
static BinaryExpression AddAssign(Expression left, Expression right, MethodInfo? method, LambdaExpression? conversion)
static BinaryExpression Power(Expression left, Expression right, MethodInfo? method)
static void ValidateIndexedProperty(Expression instance, PropertyInfo indexer, string paramName, ref ReadOnlyCollection< Expression > argList)
static UnaryExpression Convert(Expression expression, Type type, MethodInfo? method)
new TDelegate Compile(bool preferInterpretation)
static void ValidateStaticOrInstanceMethod(Expression instance, MethodInfo method)
static LambdaExpression Lambda(Type delegateType, Expression body, IEnumerable< ParameterExpression >? parameters)
static BinaryExpression LessThan(Expression left, Expression right)
static BinaryExpression OrAssign(Expression left, Expression right, MethodInfo? method)
static ParameterInfo[] GetParametersForValidation(MethodBase method, ExpressionType nodeKind)
static MethodCallExpression Call(MethodInfo method, Expression arg0)
static BinaryExpression MultiplyAssign(Expression left, Expression right, MethodInfo? method, LambdaExpression? conversion)
static IndexExpression MakeIndex(Expression instance, PropertyInfo? indexer, IEnumerable< Expression >? arguments)
static NewArrayExpression NewArrayInit(Type type, params Expression[] initializers)
static MethodCallExpression Call(MethodInfo method, IEnumerable< Expression >? arguments)
Expression< TDelegate > Update(Expression body, IEnumerable< ParameterExpression >? parameters)
static BinaryExpression Modulo(Expression left, Expression right)
static UnaryExpression OnesComplement(Expression expression, MethodInfo? method)
static BinaryExpression RightShiftAssign(Expression left, Expression right)
static DynamicExpression Dynamic(CallSiteBinder binder, Type returnType, Expression arg0, Expression arg1, Expression arg2, Expression arg3)
static MemberListBinding ListBind(MemberInfo member, params ElementInit[] initializers)
static LambdaExpression Lambda(Expression body, string? name, IEnumerable< ParameterExpression >? parameters)
static UnaryExpression Throw(Expression? value, Type type)
static BinaryExpression Equal(Expression left, Expression right)
static TryExpression TryFinally(Expression body, Expression? @finally)
static IndexExpression ArrayAccess(Expression array, params Expression[]? indexes)
static InvocationExpression Invoke(Expression expression, params Expression[]? arguments)
static UnaryExpression Throw(Expression? value)
static UnaryExpression Rethrow(Type type)
static NewExpression New(ConstructorInfo constructor, IEnumerable< Expression >? arguments, IEnumerable< MemberInfo >? members)
static BinaryExpression RightShiftAssign(Expression left, Expression right, MethodInfo? method)
static GotoExpression Goto(LabelTarget target)
static GotoExpression Continue(LabelTarget target, Type type)
static BlockExpression Block(Expression arg0, Expression arg1, Expression arg2, Expression arg3, Expression arg4)
static BinaryExpression SubtractAssignChecked(Expression left, Expression right, MethodInfo? method)
static UnaryExpression PostIncrementAssign(Expression expression, MethodInfo? method)
override LambdaExpression Accept(StackSpiller spiller)
static LabelTarget Label(Type type, string? name)
static MethodInfo ApplyTypeArgs(MethodInfo m, Type[] typeArgs)
static SymbolDocumentInfo SymbolDocument(string fileName)
static DynamicExpression MakeDynamic(Type delegateType, CallSiteBinder binder, Expression arg0, Expression arg1, Expression arg2, Expression arg3)
static BinaryExpression AddAssign(Expression left, Expression right, MethodInfo? method)
static MemberExpression Property(Expression? expression, MethodInfo propertyAccessor)
static BinaryExpression Modulo(Expression left, Expression right, MethodInfo? method)
static bool CheckMethod(MethodInfo method, MethodInfo propertyMethod)
TryGetFuncActionArgsResult
static ParameterExpression Variable(Type type)
static BinaryExpression ExclusiveOrAssign(Expression left, Expression right)
static BinaryExpression LessThanOrEqual(Expression left, Expression right)
static BinaryExpression MakeBinary(ExpressionType binaryType, Expression left, Expression right, bool liftToNull, MethodInfo? method)
static BinaryExpression AndAlso(Expression left, Expression right, MethodInfo? method)
static ConditionalWeakTable< Expression, ExtensionInfo > s_legacyCtorSupportTable
static MemberExpression Property(Expression expression, string propertyName)
static BlockExpression Block(Expression arg0, Expression arg1, Expression arg2, Expression arg3)
static void ValidateElementInitAddMethodInfo(MethodInfo addMethod, string paramName)
static UnaryExpression NegateChecked(Expression expression, MethodInfo? method)
static bool ParameterIsAssignable(ParameterInfo pi, Type argType)
static BlockExpression Block(Type type, IEnumerable< ParameterExpression >? variables, IEnumerable< Expression > expressions)
static UnaryExpression GetMethodBasedUnaryOperator(ExpressionType unaryType, Expression operand, MethodInfo method)
static UnaryExpression PostDecrementAssign(Expression expression, MethodInfo? method)
static MethodCallExpression Call(Expression? instance, MethodInfo method, Expression arg0, Expression arg1)
static InvocationExpression Invoke(Expression expression)
override ExpressionType NodeType
override ExpressionType NodeType
ReadOnlyCollection< Expression > Arguments
LightDelegateCreator CompileTop(LambdaExpression node)
Delegate CreateDelegate()
override ExpressionType NodeType
ReadOnlyCollection< Expression > Arguments
override ExpressionType NodeType
override ExpressionType NodeType
ReadOnlyCollection< ParameterExpression > Parameters
NewExpression NewExpression
override ExpressionType NodeType
ReadOnlyCollection< ElementInit > Initializers
LabelTarget? ContinueLabel
override ExpressionType NodeType
static PropertyExpression Make(Expression expression, PropertyInfo property)
override ExpressionType NodeType
ReadOnlyCollection< MemberBinding > Bindings
NewExpression NewExpression
override ExpressionType NodeType
ReadOnlyCollection< Expression > Arguments
override ExpressionType NodeType
ReadOnlyCollection< Expression > Expressions
static NewArrayExpression Make(ExpressionType nodeType, Type type, ReadOnlyCollection< Expression > expressions)
override ExpressionType NodeType
ReadOnlyCollection< MemberInfo >? Members
ConstructorInfo? Constructor
ReadOnlyCollection< Expression > Arguments
override ExpressionType NodeType
static ParameterExpression Make(Type type, string name, bool isByRef)
override ExpressionType NodeType
ReadOnlyCollection< ParameterExpression > Variables
ReadOnlyCollection< Expression > TestValues
ReadOnlyCollection< SwitchCase > Cases
override ExpressionType NodeType
ReadOnlyCollection< CatchBlock > Handlers
override ExpressionType NodeType
override ExpressionType NodeType
override ExpressionType NodeType
MethodInfo? GetGetMethod()
MethodInfo? GetSetMethod()
static int CompareExchange(ref int location1, int value, int comparand)
DynamicallyAccessedMemberTypes