From 75c9d703f74df7e4276f9e88f2c61daf6224deb9 Mon Sep 17 00:00:00 2001 From: Zoe Roux Date: Sat, 12 Sep 2020 00:49:28 +0200 Subject: [PATCH] Fixing the expression convertor for imbricked lambdas --- Kyoo.Common/Utility.cs | 18 +++++------------- Kyoo.CommonAPI/ApiHelper.cs | 2 ++ 2 files changed, 7 insertions(+), 13 deletions(-) diff --git a/Kyoo.Common/Utility.cs b/Kyoo.Common/Utility.cs index baeab0f2..2718ff98 100644 --- a/Kyoo.Common/Utility.cs +++ b/Kyoo.Common/Utility.cs @@ -342,26 +342,18 @@ namespace Kyoo } internal Expression VisitAndConvert() - { - return (Expression)RunGenericMethod( - this, - "VisitLambda", - _expression.GetType().GetGenericArguments().First(), - _expression); - } - - protected override Expression VisitLambda(Expression node) { Type returnType = _expression.Type.GetGenericArguments().Last(); - Expression body = node.ReturnType == returnType - ? Visit(node.Body) - : Expression.Convert(Visit(node.Body)!, returnType); + Expression body = _expression.ReturnType == returnType + ? Visit(_expression.Body) + : Expression.Convert(Visit(_expression.Body)!, returnType); return Expression.Lambda(body!, _newParams); } protected override Expression VisitParameter(ParameterExpression node) { - return _newParams.First(x => x.Name == node.Name); + Console.WriteLine($"Rewritting parameter: {node.Name}"); + return _newParams.FirstOrDefault(x => x.Name == node.Name) ?? node; } } } diff --git a/Kyoo.CommonAPI/ApiHelper.cs b/Kyoo.CommonAPI/ApiHelper.cs index 55b43878..9573f2b6 100644 --- a/Kyoo.CommonAPI/ApiHelper.cs +++ b/Kyoo.CommonAPI/ApiHelper.cs @@ -23,6 +23,8 @@ namespace Kyoo.CommonApi public static Expression> ParseWhere(Dictionary where, Expression> defaultWhere = null) { + return defaultWhere; + if (where == null || where.Count == 0) return defaultWhere;