<PackageReference Include="Microsoft.CSharp" Version="4.6.0" />

Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionTreeRewriter

namespace Microsoft.CSharp.RuntimeBinder.Semantics { internal class ExpressionTreeRewriter : ExprVisitorBase { protected ExprFactory expressionFactory; protected SymbolLoader symbolLoader; protected EXPRBOUNDLAMBDA currentAnonMeth; protected bool alwaysRewrite; public static EXPR Rewrite(EXPR expr, ExprFactory expressionFactory, SymbolLoader symbolLoader); protected ExprFactory GetExprFactory(); protected SymbolLoader GetSymbolLoader(); protected ExpressionTreeRewriter(ExprFactory expressionFactory, SymbolLoader symbolLoader); protected virtual EXPR GenerateQuestionMarkOperand(EXPR pExpr); protected virtual EXPR GenerateDelegateInvoke(EXPRCALL expr); protected virtual EXPR GenerateBuiltInBinaryOperator(EXPRBINOP expr); protected virtual EXPR GenerateBuiltInUnaryOperator(EXPRUNARYOP expr); protected virtual EXPR GenerateBuiltInUnaryOperator(PREDEFMETH pdm, EXPR pOriginalOperator, EXPR pOperator); protected virtual EXPR GenerateUserDefinedBinaryOperator(EXPRBINOP expr); protected virtual EXPR GenerateUserDefinedUnaryOperator(EXPRUNARYOP expr); protected virtual EXPR GenerateUserDefinedComparisonOperator(EXPRBINOP expr); protected EXPR RewriteLambdaBody(EXPRBOUNDLAMBDA anonmeth); protected EXPR RewriteLambdaParameters(EXPRBOUNDLAMBDA anonmeth); protected virtual EXPR GenerateConversion(EXPR arg, CType CType, bool bChecked); protected virtual EXPR GenerateConversionWithSource(EXPR pTarget, CType pType, bool bChecked); protected virtual EXPR GenerateValueAccessConversion(EXPR pArgument); protected virtual EXPR GenerateUserDefinedConversion(EXPR arg, CType type, MethWithInst method); protected virtual EXPR GenerateUserDefinedConversion(EXPR arg, CType CType, EXPR target, MethWithInst method); protected virtual EXPR GenerateUserDefinedConversion(EXPRUSERDEFINEDCONVERSION pExpr, EXPR pArgument); protected virtual EXPR GenerateParameter(string name, CType CType); protected MethodSymbol GetPreDefMethod(PREDEFMETH pdm); protected EXPRTYPEOF CreateTypeOf(CType CType); protected EXPR CreateWraps(EXPRBOUNDLAMBDA anonmeth); protected EXPR DestroyWraps(EXPRBOUNDLAMBDA anonmeth, EXPR sequence); protected virtual EXPR GenerateConstructor(EXPRCALL expr); protected virtual EXPR GenerateDelegateConstructor(EXPRCALL expr); protected virtual EXPR GenerateArgsList(EXPR oldArgs); protected virtual EXPR GenerateIndexList(EXPR oldIndices); protected virtual EXPR GenerateConstant(EXPR expr); protected EXPRCALL GenerateCall(PREDEFMETH pdm, EXPR arg1); protected EXPRCALL GenerateCall(PREDEFMETH pdm, EXPR arg1, EXPR arg2); protected EXPRCALL GenerateCall(PREDEFMETH pdm, EXPR arg1, EXPR arg2, EXPR arg3); protected EXPRCALL GenerateCall(PREDEFMETH pdm, EXPR arg1, EXPR arg2, EXPR arg3, EXPR arg4); protected virtual EXPRARRINIT GenerateParamsArray(EXPR args, PredefinedType pt); protected virtual EXPRARRINIT GenerateMembersArray(AggregateType anonymousType, PredefinedType pt); protected void FixLiftedUserDefinedBinaryOperators(EXPRBINOP expr, ref EXPR pp1, ref EXPR pp2); protected bool IsNullableValueType(CType pType); protected bool IsNullableValueAccess(EXPR pExpr, EXPR pObject); protected bool IsDelegateConstructorCall(EXPR pExpr); } }