@@ -2773,11 +2773,11 @@ internal static Expression ConvertToLightExpression(SysExpr sysExpr, ref SmallLi
27732773 var pe = ( System . Linq . Expressions . ParameterExpression ) sysExpr ;
27742774 return Expression . Parameter ( pe . IsByRef ? exprType . MakeByRefType ( ) : exprType , pe . Name ) ;
27752775 }
2776- case ExpressionType . Lambda :
2777- {
2778- var le = ( System . Linq . Expressions . LambdaExpression ) sysExpr ;
2779- var body = le . Body . ToLightExpression ( ref exprsConverted ) ;
2780- var retType = le . ReturnType ;
2776+ case ExpressionType . Lambda :
2777+ {
2778+ var le = ( System . Linq . Expressions . LambdaExpression ) sysExpr ;
2779+ var body = le . Body . ToLightExpression ( ref exprsConverted ) ;
2780+ var retType = le . ReturnType ;
27812781 var pars = le . Parameters ;
27822782 var parCount = pars . Count ;
27832783 switch ( parCount )
@@ -2819,16 +2819,40 @@ internal static Expression ConvertToLightExpression(SysExpr sysExpr, ref SmallLi
28192819 ( ParameterExpression ) pars [ 5 ] . ToLightExpression ( ref exprsConverted ) , retType ) ;
28202820 default :
28212821 var pes = new ParameterExpression [ parCount ] ;
2822- for ( var i = 0 ; i < pes . Length ; i ++ )
2823- pes [ i ] = ( ParameterExpression ) le . Parameters [ i ] . ToLightExpression ( ref exprsConverted ) ;
2824- return Expression . Lambda ( exprType , body , pes , retType ) ;
2825- }
2826- }
2827- default :
2828- if ( sysExpr is System . Linq . Expressions . UnaryExpression ue )
2829- {
2830- var operand = ue . Operand . ToLightExpression ( ref exprsConverted ) ;
2831- return Expression . MakeUnary ( nodeType , operand , exprType , ue . Method ) ;
2822+ for ( var i = 0 ; i < pes . Length ; i ++ )
2823+ pes [ i ] = ( ParameterExpression ) le . Parameters [ i ] . ToLightExpression ( ref exprsConverted ) ;
2824+ return Expression . Lambda ( exprType , body , pes , retType ) ;
2825+ }
2826+ }
2827+ case ExpressionType . Dynamic :
2828+ {
2829+ var de = ( System . Linq . Expressions . DynamicExpression ) sysExpr ;
2830+ var sysArgs = de . Arguments ;
2831+ var args = new Expression [ sysArgs . Count ] ;
2832+ for ( var i = 0 ; i < args . Length ; ++ i )
2833+ args [ i ] = sysArgs [ i ] . ToLightExpression ( ref exprsConverted ) ;
2834+ return new DynamicExpression ( de . DelegateType , de . Binder , args ) ;
2835+ }
2836+ case ExpressionType . RuntimeVariables :
2837+ {
2838+ var rve = ( System . Linq . Expressions . RuntimeVariablesExpression ) sysExpr ;
2839+ var sysVars = rve . Variables ;
2840+ var vars = new ParameterExpression [ sysVars . Count ] ;
2841+ for ( var i = 0 ; i < vars . Length ; ++ i )
2842+ vars [ i ] = ( ParameterExpression ) sysVars [ i ] . ToLightExpression ( ref exprsConverted ) ;
2843+ return new RuntimeVariablesExpression ( vars ) ;
2844+ }
2845+ case ExpressionType . DebugInfo :
2846+ {
2847+ var die = ( System . Linq . Expressions . DebugInfoExpression ) sysExpr ;
2848+ return Expression . DebugInfo ( new SymbolDocumentInfo ( die . Document . FileName ) ,
2849+ die . StartLine , die . StartColumn , die . EndLine , die . EndColumn ) ;
2850+ }
2851+ default :
2852+ if ( sysExpr is System . Linq . Expressions . UnaryExpression ue )
2853+ {
2854+ var operand = ue . Operand . ToLightExpression ( ref exprsConverted ) ;
2855+ return Expression . MakeUnary ( nodeType , operand , exprType , ue . Method ) ;
28322856 }
28332857
28342858 if ( sysExpr is System . Linq . Expressions . BinaryExpression be )
@@ -5924,4 +5948,4 @@ public interface IParameterProvider
59245948 ParameterExpression GetParameter ( int index ) ;
59255949}
59265950
5927- #nullable restore
5951+ #nullable restore
0 commit comments