From b515630899b192e17b8857c4671b5ba50b9caad7 Mon Sep 17 00:00:00 2001 From: Andreas Weizel Date: Fri, 14 Jun 2013 10:41:33 +0200 Subject: [PATCH] Reintroduced IProperty.IsAutoImplemented() extension method (RefactoringExtensions). --- .../OverrideToStringCompletionData.cs | 1 + .../InsertCtorSnippetRefactoring.cs | 1 + .../Src/Refactoring/RefactoringExtensions.cs | 30 +++++++++++++++++++ 3 files changed, 32 insertions(+) create mode 100644 src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/RefactoringExtensions.cs diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/OverrideToStringCompletionData.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/OverrideToStringCompletionData.cs index 911ea59cfe..dcdc3a5491 100644 --- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/OverrideToStringCompletionData.cs +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/OverrideToStringCompletionData.cs @@ -138,6 +138,7 @@ namespace CSharpBinding.Completion } foreach (var p in sourceType.GetProperties().Where(prop => prop.CanGet && !prop.IsIndexer + && prop.IsAutoImplemented() && prop.IsStatic == sourceType.GetDefinition().IsStatic && prop.ReturnType != null)) { yield return new PropertyOrFieldWrapper(p) { Index = i }; diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/InsertCtorSnippetRefactoring.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/InsertCtorSnippetRefactoring.cs index e7d203cae9..1e7a849b59 100644 --- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/InsertCtorSnippetRefactoring.cs +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/InsertCtorSnippetRefactoring.cs @@ -83,6 +83,7 @@ namespace CSharpBinding.Refactoring } foreach (var p in resolvedSourceType.GetProperties().Where(prop => prop.CanSet && !prop.IsIndexer + && prop.IsAutoImplemented() && prop.IsStatic == sourceType.IsStatic && prop.ReturnType != null)) { yield return new PropertyOrFieldWrapper(p) { Index = i }; diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/RefactoringExtensions.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/RefactoringExtensions.cs new file mode 100644 index 0000000000..b24086bb6a --- /dev/null +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/RefactoringExtensions.cs @@ -0,0 +1,30 @@ +// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt) +// This code is distributed under the GNU LGPL (for details please see \doc\license.txt) + +using System; +using ICSharpCode.NRefactory.TypeSystem; + +namespace CSharpBinding.Refactoring +{ + /// + /// Some extensions related to refactoring features. + /// + public static class RefactoringExtensions + { + /// + /// Checks whether a property is auto-implemented (has only "get; set;" definitions). + /// + /// Property to check + /// True if auto-implemented, false otherwise. + public static bool IsAutoImplemented(this IProperty property) + { + if (property == null) + throw new ArgumentNullException("property"); + + if (property.IsAbstract) + return false; + + return property.CanGet && !property.Getter.HasBody && property.CanSet && !property.Setter.HasBody; + } + } +}