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);
}
}