From cb5960b8e00f5066806eb862749e0271e9950954 Mon Sep 17 00:00:00 2001 From: Siegfried Pammer Date: Mon, 24 Dec 2018 00:55:39 +0100 Subject: [PATCH] Fix #1355: System.ArgumentException: An item with the same key has already been added in Decompiler.IL.Transforms.TransformExpressionTrees.ConvertLambda --- .../IL/Transforms/TransformExpressionTrees.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ICSharpCode.Decompiler/IL/Transforms/TransformExpressionTrees.cs b/ICSharpCode.Decompiler/IL/Transforms/TransformExpressionTrees.cs index 814331853..75523b23a 100644 --- a/ICSharpCode.Decompiler/IL/Transforms/TransformExpressionTrees.cs +++ b/ICSharpCode.Decompiler/IL/Transforms/TransformExpressionTrees.cs @@ -214,6 +214,10 @@ namespace ICSharpCode.Decompiler.IL.Transforms return false; if (!this.parameters.TryGetValue(v, out var value)) return false; + // Parameter variable cannot be used in two different compiler-generated expression trees, + // therefore we have to abort if the parameter is already mapped to a variable. + if (this.parameterMapping.ContainsKey(v)) + return false; var param = new ILVariable(VariableKind.Parameter, value.Item1, i) { Name = value.Item2 }; parameterMapping.Add(v, param); parameterVariables.Add(param);