From bef75321fb9cde52c587fcc30639d4346b38f7f9 Mon Sep 17 00:00:00 2001 From: Siegfried Pammer Date: Sat, 29 Feb 2020 20:40:19 +0100 Subject: [PATCH] #1913: Do not destroy control-flow by removing return statements --- .../IL/Transforms/TransformDisplayClassUsage.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ICSharpCode.Decompiler/IL/Transforms/TransformDisplayClassUsage.cs b/ICSharpCode.Decompiler/IL/Transforms/TransformDisplayClassUsage.cs index e83a37ccd..795800433 100644 --- a/ICSharpCode.Decompiler/IL/Transforms/TransformDisplayClassUsage.cs +++ b/ICSharpCode.Decompiler/IL/Transforms/TransformDisplayClassUsage.cs @@ -64,7 +64,8 @@ namespace ICSharpCode.Decompiler.IL.Transforms if ((context.Settings.AnonymousMethods || context.Settings.ExpressionTrees) && IsClosure(context, v, out ITypeDefinition closureType, out var inst)) { if (!CanRemoveAllReferencesTo(context, v)) continue; - instructionsToRemove.Add(inst); + if (inst is StObj || inst is StLoc) + instructionsToRemove.Add(inst); AddOrUpdateDisplayClass(f, v, closureType, inst, localFunctionClosureParameter: false); continue; }