From a2e370fe2d21b92398cc3d90f204e7de9f814273 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20Kr=C3=BCger?= Date: Tue, 4 Sep 2012 08:18:38 +0200 Subject: [PATCH] [CodeActions] Fixed implement abstract members bug. --- .../CodeActions/ImplementInterfaceAction.cs | 6 ++++- .../ImplementAbstractMembersTest.cs | 27 +++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/ICSharpCode.NRefactory.CSharp/Refactoring/CodeActions/ImplementInterfaceAction.cs b/ICSharpCode.NRefactory.CSharp/Refactoring/CodeActions/ImplementInterfaceAction.cs index 915715cb52..d1a4abcd0e 100644 --- a/ICSharpCode.NRefactory.CSharp/Refactoring/CodeActions/ImplementInterfaceAction.cs +++ b/ICSharpCode.NRefactory.CSharp/Refactoring/CodeActions/ImplementInterfaceAction.cs @@ -101,7 +101,11 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring decl.Modifiers = Modifiers.None; decl.AddChild(builder.ConvertType(member.DeclaringType), EntityDeclaration.PrivateImplementationTypeRole); } else { - decl.Modifiers = Modifiers.Public; + if (member.IsProtected) { + decl.Modifiers = Modifiers.Protected; + } else { + decl.Modifiers = Modifiers.Public; + } } return decl; } diff --git a/ICSharpCode.NRefactory.Tests/CSharp/CodeActions/ImplementAbstractMembersTest.cs b/ICSharpCode.NRefactory.Tests/CSharp/CodeActions/ImplementAbstractMembersTest.cs index 9bf6d38732..f8e411b778 100644 --- a/ICSharpCode.NRefactory.Tests/CSharp/CodeActions/ImplementAbstractMembersTest.cs +++ b/ICSharpCode.NRefactory.Tests/CSharp/CodeActions/ImplementAbstractMembersTest.cs @@ -55,6 +55,33 @@ class Foo : Simple } #endregion } +"); + } + + [Test()] + public void TestProtectedMembers() + { + Test(@"abstract class Simple { + protected abstract string ServiceName { get; } +} + +class Foo : $Simple +{ +} +", @"abstract class Simple { + protected abstract string ServiceName { get; } +} + +class Foo : Simple +{ + #region implemented abstract members of Simple + protected override string ServiceName { + get { + throw new System.NotImplementedException (); + } + } + #endregion +} "); }