Skip to content

Commit 0490c07

Browse files
committed
Move things out of DeclarationExtensions
Especially, members only used in ExtractMethod are simply moved there.
1 parent 507f48b commit 0490c07

File tree

7 files changed

+61
-67
lines changed

7 files changed

+61
-67
lines changed

Rubberduck.CodeAnalysis/Inspections/Concrete/ObsoleteGlobalInspection.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using System.Linq;
33
using Rubberduck.Common;
44
using Rubberduck.Inspections.Abstract;
5+
using Rubberduck.Inspections.Inspections.Extensions;
56
using Rubberduck.Inspections.Results;
67
using Rubberduck.Parsing.Inspections.Abstract;
78
using Rubberduck.Resources.Inspections;

Rubberduck.CodeAnalysis/Inspections/Concrete/ProcedureNotUsedInspection.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using System.Linq;
33
using Rubberduck.Common;
44
using Rubberduck.Inspections.Abstract;
5+
using Rubberduck.Inspections.Inspections.Extensions;
56
using Rubberduck.Inspections.Results;
67
using Rubberduck.Parsing.Inspections.Abstract;
78
using Rubberduck.Resources.Inspections;
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
using System.Globalization;
2+
using Rubberduck.Parsing.Symbols;
3+
using Rubberduck.Resources;
4+
5+
namespace Rubberduck.Inspections.Inspections.Extensions
6+
{
7+
public static class DeclarationTypeExtensions
8+
{
9+
public static string ToLocalizedString(this DeclarationType type)
10+
{
11+
return RubberduckUI.ResourceManager.GetString("DeclarationType_" + type, CultureInfo.CurrentUICulture);
12+
}
13+
}
14+
}

Rubberduck.Core/Refactorings/ExtractMethod/ExtractMethodModel.cs

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,9 +77,10 @@ public void extract(IEnumerable<Declaration> declarations, QualifiedSelection se
7777
_selectedCode = selectedCode;
7878
_rowsToRemove = new List<Selection>();
7979

80-
var sourceMember = items.FindSelectedDeclaration(
80+
var sourceMember = FindSelectedDeclaration(
81+
items,
8182
selection,
82-
DeclarationExtensions.ProcedureTypes,
83+
ExtractedMethod.ProcedureTypes,
8384
d => ((ParserRuleContext)d.Context.Parent).GetSelection());
8485

8586
if (sourceMember == null)
@@ -111,6 +112,30 @@ public void extract(IEnumerable<Declaration> declarations, QualifiedSelection se
111112

112113
}
113114

115+
private static Declaration FindSelectedDeclaration(IEnumerable<Declaration> declarations, QualifiedSelection selection, IEnumerable<DeclarationType> types, Func<Declaration, Selection> selector = null)
116+
{
117+
var userDeclarations = declarations.Where(item => item.IsUserDefined);
118+
var items = userDeclarations.Where(item => types.Contains(item.DeclarationType)
119+
&& item.QualifiedName.QualifiedModuleName == selection.QualifiedName).ToList();
120+
121+
var declaration = items.SingleOrDefault(item =>
122+
selector?.Invoke(item).Contains(selection.Selection) ?? item.Selection.Contains(selection.Selection));
123+
124+
if (declaration != null)
125+
{
126+
return declaration;
127+
}
128+
129+
// if we haven't returned yet, then we must be on an identifier reference.
130+
declaration = items.SingleOrDefault(item => item.IsUserDefined
131+
&& types.Contains(item.DeclarationType)
132+
&& item.References.Any(reference =>
133+
reference.QualifiedModuleName == selection.QualifiedName
134+
&& reference.Selection.Contains(selection.Selection)));
135+
136+
return declaration;
137+
}
138+
114139
public IEnumerable<Selection> splitSelection(Selection selection, IEnumerable<Declaration> declarations)
115140
{
116141
var tupleList = new List<Tuple<int, int>>();

Rubberduck.Core/Refactorings/ExtractMethod/ExtractMethodSelectionValidation.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public bool withinSingleProcedure(QualifiedSelection qualifiedSelection)
2323
{
2424

2525
var selection = qualifiedSelection.Selection;
26-
IEnumerable<Declaration> procedures = _declarations.Where(d => d.IsUserDefined && (DeclarationExtensions.ProcedureTypes.Contains(d.DeclarationType)));
26+
IEnumerable<Declaration> procedures = _declarations.Where(d => d.IsUserDefined && (ExtractedMethod.ProcedureTypes.Contains(d.DeclarationType)));
2727
Func<int, dynamic> ProcOfLine = (sl) => procedures.FirstOrDefault(d => d.Context.Start.Line < sl && d.Context.Stop.Line > sl);
2828

2929
var startLine = selection.StartLine;

Rubberduck.Core/Refactorings/ExtractMethod/ExtractedMethod.cs

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
using System.Collections.Generic;
1+
using System;
2+
using System.Collections.Generic;
23
using System.Linq;
3-
using Rubberduck.Common;
44
using Rubberduck.Parsing.Symbols;
55

66
namespace Rubberduck.Refactorings.ExtractMethod
@@ -17,15 +17,15 @@ public class ExtractedMethod : IExtractedMethod
1717

1818
public virtual string NewMethodCall()
1919
{
20-
if (string.IsNullOrWhiteSpace(MethodName))
20+
if (String.IsNullOrWhiteSpace(MethodName))
2121
{
2222
MethodName = NEW_METHOD;
2323
}
2424
string result = "" + MethodName;
2525
string argList;
2626
if (Parameters.Any())
2727
{
28-
argList = string.Join(", ", Parameters.Select(p => p.Name));
28+
argList = String.Join(", ", Parameters.Select(p => p.Name));
2929
result += " " + argList;
3030
}
3131
return result;
@@ -47,10 +47,18 @@ public string getNewMethodName(IEnumerable<Declaration> declarations)
4747
public bool isConflictingName(IEnumerable<Declaration> declarations, string methodName)
4848
{
4949
var existingName = declarations.FirstOrDefault(d =>
50-
DeclarationExtensions.ProcedureTypes.Contains(d.DeclarationType)
50+
Enumerable.Contains(ProcedureTypes, d.DeclarationType)
5151
&& d.IdentifierName.Equals(methodName));
5252
return (existingName != null);
5353
}
5454

55+
public static readonly DeclarationType[] ProcedureTypes =
56+
{
57+
DeclarationType.Procedure,
58+
DeclarationType.Function,
59+
DeclarationType.PropertyGet,
60+
DeclarationType.PropertyLet,
61+
DeclarationType.PropertySet
62+
};
5563
}
5664
}

Rubberduck.Refactorings/Common/DeclarationExtensions.cs

Lines changed: 4 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,9 @@
11
using System;
22
using System.Collections.Generic;
33
using System.Diagnostics;
4-
using System.Globalization;
54
using System.Linq;
65
using Rubberduck.Parsing.Symbols;
76
using Rubberduck.Parsing.VBA;
8-
using Rubberduck.Resources;
9-
using Rubberduck.VBEditor;
107
using Rubberduck.VBEditor.SafeComWrappers;
118

129
// ReSharper disable LocalizableElement
@@ -15,26 +12,6 @@ namespace Rubberduck.Common
1512
{
1613
public static class DeclarationExtensions
1714
{
18-
19-
public static string ToLocalizedString(this DeclarationType type)
20-
{
21-
return RubberduckUI.ResourceManager.GetString("DeclarationType_" + type, CultureInfo.CurrentUICulture);
22-
}
23-
24-
public static readonly DeclarationType[] ProcedureTypes =
25-
{
26-
DeclarationType.Procedure,
27-
DeclarationType.Function,
28-
DeclarationType.PropertyGet,
29-
DeclarationType.PropertyLet,
30-
DeclarationType.PropertySet
31-
};
32-
33-
public static IEnumerable<Declaration> Named(this IEnumerable<Declaration> declarations, string name)
34-
{
35-
return declarations.Where(declaration => declaration.IdentifierName == name);
36-
}
37-
3815
/// <summary>
3916
/// Finds all event handler procedures for specified control declaration.
4017
/// </summary>
@@ -63,35 +40,6 @@ public static IEnumerable<Declaration> FindUserEventHandlers(this IEnumerable<De
6340
return handlers;
6441
}
6542

66-
/// <summary>
67-
/// Gets the <see cref="Declaration"/> of the specified <see cref="DeclarationType"/>,
68-
/// at the specified <see cref="QualifiedSelection"/>.
69-
/// Returns the declaration if selection is on an identifier reference.
70-
/// </summary>
71-
public static Declaration FindSelectedDeclaration(this IEnumerable<Declaration> declarations, QualifiedSelection selection, IEnumerable<DeclarationType> types, Func<Declaration, Selection> selector = null)
72-
{
73-
var userDeclarations = declarations.Where(item => item.IsUserDefined);
74-
var items = userDeclarations.Where(item => types.Contains(item.DeclarationType)
75-
&& item.QualifiedName.QualifiedModuleName == selection.QualifiedName).ToList();
76-
77-
var declaration = items.SingleOrDefault(item =>
78-
selector?.Invoke(item).Contains(selection.Selection) ?? item.Selection.Contains(selection.Selection));
79-
80-
if (declaration != null)
81-
{
82-
return declaration;
83-
}
84-
85-
// if we haven't returned yet, then we must be on an identifier reference.
86-
declaration = items.SingleOrDefault(item => item.IsUserDefined
87-
&& types.Contains(item.DeclarationType)
88-
&& item.References.Any(reference =>
89-
reference.QualifiedModuleName == selection.QualifiedName
90-
&& reference.Selection.Contains(selection.Selection)));
91-
92-
return declaration;
93-
}
94-
9543
public static IEnumerable<Declaration> FindFormEventHandlers(this RubberduckParserState state)
9644
{
9745
var items = state.AllDeclarations.ToList();
@@ -124,7 +72,7 @@ public static IEnumerable<Declaration> FindFormEventHandlers(this RubberduckPars
12472
return handlers.ToList();
12573
}
12674

127-
/// <summary>
75+
/// <summary>
12876
/// Gets a tuple containing the <c>WithEvents</c> declaration and the corresponding handler,
12977
/// for each type implementing this event.
13078
/// </summary>
@@ -165,7 +113,9 @@ public static IEnumerable<Declaration> FindEventProcedures(this IEnumerable<Decl
165113
return new Declaration[]{};
166114
}
167115

168-
var members = GetTypeMembers(items, type).ToList();
116+
var members = items
117+
.Where(item => Equals(item.ParentScopeDeclaration, type))
118+
.ToList();
169119
var events = members.Where(member => member.DeclarationType == DeclarationType.Event);
170120
var handlerNames = events.Select(e => withEventsDeclaration.IdentifierName + '_' + e.IdentifierName);
171121

@@ -176,10 +126,5 @@ public static IEnumerable<Declaration> FindEventProcedures(this IEnumerable<Decl
176126
&& handlerNames.Any(name => item.IdentifierName == name))
177127
.ToList();
178128
}
179-
180-
private static IEnumerable<Declaration> GetTypeMembers(this IEnumerable<Declaration> declarations, Declaration type)
181-
{
182-
return declarations.Where(item => Equals(item.ParentScopeDeclaration, type));
183-
}
184129
}
185130
}

0 commit comments

Comments
 (0)