Slightly more intelligent way of detecting expressions that can also be statements

This commit is contained in:
Yoshi Askharoun
2025-08-04 00:59:23 -05:00
parent 32c2b97bf0
commit 189ae83130
+7 -3
View File
@@ -77,9 +77,13 @@ partial class Decompiler
case OpCode.DiscardValue:
var value = stack.Pop();
if ((value is InvocationExpressionSyntax)
&& methodBody.Skip(i).Any(m => m.OpCode is not (OpCode.DiscardValue or OpCode.ReturnValue)))
blockStack.Peek().Statements.Add(ExpressionStatement((ExpressionSyntax)value));
if (value is ExpressionSyntax expr)
{
var lastStatement = blockStack.Peek().Statements[^1];
if (!lastStatement.DescendantNodes().Any(n => n.IsEquivalentTo(expr)))
blockStack.Peek().Statements.Add(ExpressionStatement(expr));
}
break;
case OpCode.LookupSymbol: