From 3442fad4a0edb8c99e2e1757959ac3c6f84b3e5a Mon Sep 17 00:00:00 2001 From: Siegfried Pammer Date: Fri, 29 Aug 2025 21:59:41 +0200 Subject: [PATCH] Fix #3545: Covariant return not detected for abstract override property --- .../TestCases/Pretty/CovariantReturns.cs | 11 +++++++++++ ICSharpCode.Decompiler/CSharp/CSharpDecompiler.cs | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/ICSharpCode.Decompiler.Tests/TestCases/Pretty/CovariantReturns.cs b/ICSharpCode.Decompiler.Tests/TestCases/Pretty/CovariantReturns.cs index 11987dde5..5f2bc1da8 100644 --- a/ICSharpCode.Decompiler.Tests/TestCases/Pretty/CovariantReturns.cs +++ b/ICSharpCode.Decompiler.Tests/TestCases/Pretty/CovariantReturns.cs @@ -1,5 +1,16 @@ namespace ICSharpCode.Decompiler.Tests.TestCases.CovariantReturns { + public abstract class AbstractDerived : Base + { + public abstract override AbstractDerived Instance { get; } + + public abstract override AbstractDerived this[int index] { get; } + + public abstract override AbstractDerived Build(); + + protected abstract override AbstractDerived SetParent(object parent); + } + public abstract class Base { public abstract Base Instance { get; } diff --git a/ICSharpCode.Decompiler/CSharp/CSharpDecompiler.cs b/ICSharpCode.Decompiler/CSharp/CSharpDecompiler.cs index 65849d73d..72ee06de2 100644 --- a/ICSharpCode.Decompiler/CSharp/CSharpDecompiler.cs +++ b/ICSharpCode.Decompiler/CSharp/CSharpDecompiler.cs @@ -2126,7 +2126,7 @@ namespace ICSharpCode.Decompiler.CSharp { SetNewModifier(propertyDecl); } - if (getterHasBody && IsCovariantReturnOverride(property.Getter)) + if (IsCovariantReturnOverride(property.Getter)) { RemoveAttribute(getter, KnownAttribute.PreserveBaseOverrides); propertyDecl.Modifiers &= ~(Modifiers.New | Modifiers.Virtual);