hazzik / DelegateDecompiler

A library which is able to decompile a delegate or a method body to its lambda representation
MIT License
522 stars 62 forks source link

Unit test failure #193

Closed magicmoux closed 1 year ago

magicmoux commented 1 year ago

@hazzik Alex,

In the latest tests you added in PR #190, this one fails : C:\projects\delegatedecompiler\src\DelegateDecompiler.Tests\NestedExpressionsTests.cs:line 18

Here's the stacktrace

DelegateDecompiler.Tests.NestedExpressionsTests.TestNestedExpression
System.InvalidOperationException : The binary operator Equal is not defined for the types 'System.Int32' and 'System.Object'.
   at System.Linq.Expressions.Expression.GetEqualityComparisonOperator(ExpressionType binaryType, String opName, Expression left, Expression right, Boolean liftToNull)
   at System.Linq.Expressions.Expression.Equal(Expression left, Expression right, Boolean liftToNull, MethodInfo method)
   at lambda_method(Closure )
   at DelegateDecompiler.OptimizeExpressionVisitor.LinqExpressionUnwrapper.Unwrap(Expression expression) in C:\projects\delegatedecompiler\src\DelegateDecompiler\OptimizeExpressionVisitor.cs:line 454
   at DelegateDecompiler.OptimizeExpressionVisitor.Visit(Expression node) in C:\projects\delegatedecompiler\src\DelegateDecompiler\OptimizeExpressionVisitor.cs:line 30
   at System.Linq.Expressions.ExpressionVisitor.VisitArguments(IArgumentProvider nodes)
   at System.Linq.Expressions.ExpressionVisitor.VisitMethodCall(MethodCallExpression node)
   at DelegateDecompiler.OptimizeExpressionVisitor.Visit(Expression node) in C:\projects\delegatedecompiler\src\DelegateDecompiler\OptimizeExpressionVisitor.cs:line 30
   at DelegateDecompiler.OptimizeExpressionVisitor.Optimize(Expression expression) in C:\projects\delegatedecompiler\src\DelegateDecompiler\OptimizeExpressionVisitor.cs:line 505
   at DelegateDecompiler.MethodBodyDecompiler.Decompile(MethodInfo method, Type declaringType) in C:\projects\delegatedecompiler\src\DelegateDecompiler\MethodBodyDecompiler.cs:line 27
   at System.Lazy`1.CreateValue()
   at System.Lazy`1.LazyInitValue()
   at DelegateDecompiler.DecompileExtensions.Decompile(Delegate delegate) in C:\projects\delegatedecompiler\src\DelegateDecompiler\DecompileExtensions.cs:line 20
   at DelegateDecompiler.Tests.DecompilerTestsBase.Test[T](Expression`1 expected, T compiled) in C:\projects\delegatedecompiler\src\DelegateDecompiler.Tests\DecompilerTestsBase.cs:line 21
hazzik commented 1 year ago

That is strange, because it does not fail for me... I'll check.

hazzik commented 1 year ago

@magicmoux what SDKs/runtimes do you have?

hazzik commented 1 year ago

nvm. Found it.