Skip to content

Commit 1f398de

Browse files
committed
Enhance conflicting name message on rename
It now stated the full name of the conflicting declaration.
1 parent 8a0da07 commit 1f398de

File tree

4 files changed

+20
-10
lines changed

4 files changed

+20
-10
lines changed

Rubberduck.Core/UI/Refactorings/Rename/RenameViewModel.cs

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -83,21 +83,31 @@ private void ValidateName()
8383

8484
protected override void DialogOk()
8585
{
86-
if (Target == null
87-
|| (_declarationFinderProvider.DeclarationFinder.FindNewDeclarationNameConflicts(NewName, Model.Target).Any()
88-
&& !UserConfirmsToProceedWithConflictingName(Model.NewName, Model.Target)))
86+
if (Target == null)
8987
{
9088
base.DialogCancel();
9189
}
9290
else
9391
{
94-
base.DialogOk();
92+
var firstConflictingDeclaration = _declarationFinderProvider.DeclarationFinder
93+
.FindNewDeclarationNameConflicts(NewName, Model.Target)
94+
.FirstOrDefault();
95+
96+
if (firstConflictingDeclaration != null
97+
&& !UserConfirmsToProceedWithConflictingName(Model.NewName, Model.Target, firstConflictingDeclaration))
98+
{
99+
base.DialogCancel();
100+
}
101+
else
102+
{
103+
base.DialogOk();
104+
}
95105
}
96106
}
97107

98-
private bool UserConfirmsToProceedWithConflictingName(string newName, Declaration target)
108+
private bool UserConfirmsToProceedWithConflictingName(string newName, Declaration target, Declaration conflictingDeclaration)
99109
{
100-
var message = string.Format(RubberduckUI.RenameDialog_ConflictingNames, newName, target.IdentifierName);
110+
var message = string.Format(RubberduckUI.RenameDialog_ConflictingNames, newName, target.IdentifierName, conflictingDeclaration.QualifiedName.ToString());
101111
return _messageBox?.ConfirmYesNo(message, RubberduckUI.RenameDialog_Caption) ?? false;
102112
}
103113
}

Rubberduck.Resources/RubberduckUI.Designer.cs

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Rubberduck.Resources/RubberduckUI.de.resx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -465,7 +465,7 @@ Warnung: Alle eigenen Einstellungen gehen dabei verloren. Die Originaldatei wird
465465
<value>Neu</value>
466466
</data>
467467
<data name="RenameDialog_ConflictingNames" xml:space="preserve">
468-
<value>Das Umbenenen zu '{0}' wird einen Konflikt mit '{1}' auslösen.'
468+
<value>Der neue Name '{0}' kollidiert mit dem Namen des existierenden Elements '{1}'. '{2}' in '{0}' umzubenennen kann zu nicht kompilierbarem Code oder einer Änderung der Logik führen.
469469
Wollen Sie trotzdem fortfahren?</value>
470470
</data>
471471
<data name="Rename_DeclarationType" xml:space="preserve">

Rubberduck.Resources/RubberduckUI.resx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -484,9 +484,9 @@ Warning: All customized settings will be lost. Your old file will be saved in '
484484
<value>New</value>
485485
</data>
486486
<data name="RenameDialog_ConflictingNames" xml:space="preserve">
487-
<value>'{0}' conflicts with an existing name. Renaming '{1}' to '{0}' may result in uncompilable code or a change in logic.
487+
<value>'{0}' conflicts with the name of the existing declaration '{1}'. Renaming '{2}' to '{0}' may result in uncompilable code or a change in logic.
488488
Do you want to proceed with this rename?</value>
489-
<comment>0: NewName 1: CurrentName</comment>
489+
<comment>{0}: NewName {1}: conflicting declaration {2}: CurrentName</comment>
490490
</data>
491491
<data name="RenameDialog_AmbiguousSelection" xml:space="preserve">
492492
<value>Please ensure that exactly 1 control is selected before renaming.</value>

0 commit comments

Comments
 (0)