@@ -11571,10 +11571,13 @@ internal static bool IsReturnable(this Expression expr)
1157111571 !IsBracedBlockLike(nodeType);
1157211572 }
1157311573
11574- internal static Expression StripConvertRecursively(this Expression expr) =>
11575- expr is UnaryExpression convert && convert.NodeType == ExpressionType.Convert
11576- ? StripConvertRecursively(convert.Operand)
11577- : expr;
11574+ [MethodImpl((MethodImplOptions)256)]
11575+ internal static Expression StripConvertRecursively(this Expression expr)
11576+ {
11577+ while (expr is UnaryExpression unExpr && unExpr.NodeType == ExpressionType.Convert)
11578+ expr = unExpr.Operand;
11579+ return expr;
11580+ }
1157811581
1157911582 internal static bool IsComplexExpression(this Expression expr)
1158011583 {
@@ -11590,13 +11593,14 @@ internal static bool IsConstantOrDefault(this Expression expr)
1159011593 | nodeType == ExpressionType.Default;
1159111594 }
1159211595
11593- internal static bool IsParamOrConstantOrDefault(this Expression expr)
11594- {
11595- var nodeType = StripConvertRecursively(expr).NodeType;
11596- return nodeType == ExpressionType.Parameter
11597- | nodeType == ExpressionType.Constant
11598- | nodeType == ExpressionType.Default;
11599- }
11596+ [MethodImpl((MethodImplOptions)256)]
11597+ internal static bool IsParamOrConstantOrDefault(this ExpressionType nodeType) =>
11598+ nodeType == ExpressionType.Parameter |
11599+ nodeType == ExpressionType.Constant |
11600+ nodeType == ExpressionType.Default;
11601+
11602+ internal static bool IsParamOrConstantOrDefault(this Expression expr) =>
11603+ StripConvertRecursively(expr).NodeType.IsParamOrConstantOrDefault();
1160011604
1160111605 internal static string GetCSharpName(this MemberInfo m)
1160211606 {
0 commit comments