Skip to content

Commit df438a7

Browse files
committed
Update RemoveParametersRefactoring to use a separate Removal collection
This allows segregating UI concerns from Model Concerns. Also fixes two failing unit-tests because of incorrect messageBox setup
1 parent 4d1cb10 commit df438a7

File tree

5 files changed

+55
-49
lines changed

5 files changed

+55
-49
lines changed

Rubberduck.Core/UI/Refactorings/RemoveParameters/RemoveParametersPresenter.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ public RemoveParametersModel Show()
4444
{
4545
return null;
4646
}
47-
_model.Parameters = _view.ViewModel.Parameters.Where(m => m.IsRemoved).Select(vm => vm.ToModel()).ToList();
47+
_model.RemoveParameters = _view.ViewModel.Parameters.Where(m => m.IsRemoved).Select(vm => vm.ToModel()).ToList();
4848
return _model;
4949
}
5050
}

Rubberduck.Refactorings/RemoveParameters/RemoveParametersModel.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@ public class RemoveParametersModel
1616
public IEnumerable<Declaration> Declarations { get; }
1717

1818
public Declaration TargetDeclaration { get; private set; }
19-
public List<Parameter> Parameters { get; set; }
19+
public List<Parameter> Parameters { get; private set; }
20+
public List<Parameter> RemoveParameters { get; set; }
2021

2122
private readonly IMessageBox _messageBox;
2223

@@ -43,6 +44,7 @@ private void LoadParameters()
4344
if (TargetDeclaration == null) { return; }
4445

4546
Parameters = GetParameters().Select(arg => new Parameter(arg)).ToList();
47+
RemoveParameters = new List<Parameter>();
4648

4749
if (TargetDeclaration.DeclarationType == DeclarationType.PropertyLet ||
4850
TargetDeclaration.DeclarationType == DeclarationType.PropertySet)
@@ -79,7 +81,7 @@ private Declaration PromptIfTargetImplementsInterface()
7981
var message = string.Format(RubberduckUI.Refactoring_TargetIsInterfaceMemberImplementation, declaration.IdentifierName, interfaceMember.ComponentName, interfaceMember.IdentifierName);
8082

8183
var confirm = _messageBox.ConfirmYN(message, RubberduckUI.ReorderParamsDialog_TitleText);
82-
return confirm ? null : interfaceMember;
84+
return confirm ? interfaceMember : null;
8385
}
8486

8587
private Declaration GetEvent()

Rubberduck.Refactorings/RemoveParameters/RemoveParametersRefactoring.cs

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -97,11 +97,10 @@ public void QuickFix(RubberduckParserState state, QualifiedSelection selection)
9797

9898
if (target != null)
9999
{
100-
_model.Parameters.Clear();
101-
_model.Parameters.Add(target);
100+
_model.RemoveParameters.Add(target);
102101
} else
103102
{
104-
return; // FIXME is this equivalent to before?
103+
return;
105104
}
106105
RemoveParameters();
107106
}
@@ -170,11 +169,11 @@ private void RemoveCallArguments(VBAParser.ArgumentListContext argList, Qualifie
170169
var args = argList.children.OfType<VBAParser.ArgumentContext>().ToList();
171170
for (var i = 0; i < _model.Parameters.Count; i++)
172171
{
173-
// All parameters we keep are to be removed by definition
174-
//if (!_model.Parameters[i].IsRemoved)
175-
//{
176-
// continue;
177-
//}
172+
// only remove params from RemoveParameters
173+
if (!_model.RemoveParameters.Contains(_model.Parameters[i]))
174+
{
175+
continue;
176+
}
178177

179178
if (_model.Parameters[i].IsParamArray)
180179
{
@@ -264,9 +263,9 @@ private void RemoveSignatureParameters(Declaration target)
264263

265264
var parameters = ((IParameterizedDeclaration) target).Parameters.OrderBy(o => o.Selection).ToList();
266265

267-
foreach (var remove in _model.Parameters)
266+
foreach (var index in _model.RemoveParameters.Select(rem => _model.Parameters.IndexOf(rem)))
268267
{
269-
rewriter.Remove(remove.Declaration);
268+
rewriter.Remove(parameters[index]);
270269
}
271270

272271
_rewriters.Add(rewriter);

0 commit comments

Comments
 (0)