diff --git a/ICSharpCode.Decompiler/CSharp/RecordDecompiler.cs b/ICSharpCode.Decompiler/CSharp/RecordDecompiler.cs index fe9c1f01e..b8d55eb83 100644 --- a/ICSharpCode.Decompiler/CSharp/RecordDecompiler.cs +++ b/ICSharpCode.Decompiler/CSharp/RecordDecompiler.cs @@ -293,8 +293,8 @@ namespace ICSharpCode.Decompiler.CSharp for (int i = 0; i < method.Parameters.Count; i++) { var param = unspecializedMethod.Parameters[i]; - //var backingMember = backingMembers.Find(x => x.Name == param.Name); - var backingMember = backingMembers.Count > i ? backingMembers[i] : null; + var backingMember = backingMembers.Find(x => x.Name == param.Name); + //var backingMember = backingMembers.Count > i ? backingMembers[i] : null; if (backingMember != null) { primaryCtorParameterToAutoPropertyOrBackingField.Add(param, backingMember); diff --git a/ICSharpCode.Decompiler/CSharp/Transforms/TransformFieldAndConstructorInitializers.cs b/ICSharpCode.Decompiler/CSharp/Transforms/TransformFieldAndConstructorInitializers.cs index 872e06ca3..b5b7f1aee 100644 --- a/ICSharpCode.Decompiler/CSharp/Transforms/TransformFieldAndConstructorInitializers.cs +++ b/ICSharpCode.Decompiler/CSharp/Transforms/TransformFieldAndConstructorInitializers.cs @@ -227,10 +227,7 @@ namespace ICSharpCode.Decompiler.CSharp.Transforms var v = initializer.Annotation()?.Variable; if (v?.Kind == IL.VariableKind.Parameter) { - // remove record ctor parameter assignments - if (!IsPropertyDeclaredByPrimaryCtor(fieldOrPropertyOrEvent, record)) - break; - isStructPrimaryCtor = true; + isStructPrimaryCtor = record?.PrimaryConstructor != null; if (fieldOrPropertyOrEvent is IField f) fieldToVariableMap.Add(f, v); } @@ -282,23 +279,6 @@ namespace ICSharpCode.Decompiler.CSharp.Transforms } } - bool IsPropertyDeclaredByPrimaryCtor(IMember m, RecordDecompiler record) - { - if (record == null) - return false; - switch (m) - { - case IProperty p: - return record.IsPropertyDeclaredByPrimaryConstructor(p); - case IField f: - return record.PrimaryConstructor != null; - case IEvent e: - return record.PrimaryConstructor != null; - default: - return false; - } - } - void RemoveSingleEmptyConstructor(IEnumerable members, ITypeDefinition contextTypeDefinition) { // if we're outside of a type definition skip this altogether