Skip to content

Commit cd23ec2

Browse files
committed
Updated for new name collision detection design
1 parent 48fd7cd commit cd23ec2

File tree

1 file changed

+11
-49
lines changed

1 file changed

+11
-49
lines changed

Rubberduck.CodeAnalysis/QuickFixes/AssignedByValParameterMakeLocalCopyQuickFix.cs

Lines changed: 11 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
using Rubberduck.Parsing.Symbols;
66
using Rubberduck.UI.Refactorings;
77
using Rubberduck.Common;
8-
using System.Collections.Generic;
98
using System.Windows.Forms;
109
using Antlr4.Runtime;
1110
using Rubberduck.Inspections.Abstract;
@@ -36,9 +35,8 @@ public override void Fix(IInspectionResult result)
3635
Debug.Assert(null != ((ParserRuleContext)result.Target.Context.Parent.Parent).GetChild<VBAParser.EndOfStatementContext>());
3736

3837
_quickFixTarget = result.Target;
39-
//var forbiddenNames = _parserState.DeclarationFinder.GetDeclarationsWithIdentifiersToAvoid(result.Target).Select(n => n.IdentifierName);
4038

41-
var localIdentifier = PromptForLocalVariableName(result.Target); //, forbiddenNames.ToList());
39+
var localIdentifier = PromptForLocalVariableName(result.Target);
4240
if (string.IsNullOrEmpty(localIdentifier))
4341
{
4442
return;
@@ -55,16 +53,16 @@ public override void Fix(IInspectionResult result)
5553
public override bool CanFixInModule => false;
5654
public override bool CanFixInProject => false;
5755

58-
private string PromptForLocalVariableName(Declaration target) //, List<string> forbiddenNames)
56+
private string PromptForLocalVariableName(Declaration target)
5957
{
6058
IAssignedByValParameterQuickFixDialog view = null;
6159
try
6260
{
63-
view = _dialogFactory.Create(target.IdentifierName, target.DeclarationType.ToString(), IsNameCollision); //, forbiddenNames);
64-
view.NewName = GetDefaultLocalIdentifier(target); //, forbiddenNames);
61+
view = _dialogFactory.Create(target.IdentifierName, target.DeclarationType.ToString(), IsNameCollision);
62+
view.NewName = GetDefaultLocalIdentifier(target);
6563
view.ShowDialog();
6664

67-
if (view.DialogResult == DialogResult.Cancel || !IsValidVariableName(view.NewName)) //, forbiddenNames))
65+
if (view.DialogResult == DialogResult.Cancel || !IsValidVariableName(view.NewName))
6866
{
6967
return string.Empty;
7068
}
@@ -78,42 +76,7 @@ private string PromptForLocalVariableName(Declaration target) //, List<string> f
7876
}
7977

8078
private bool IsNameCollision(string newName)
81-
{
82-
var conflicts = _parserState.DeclarationFinder.NewDeclarationNameConflictsWithExisting(newName, _quickFixTarget);
83-
return conflicts.Any();
84-
//bool hasConflict = false;
85-
86-
//var nameCollisions = _parserState.DeclarationFinder.MatchName(newName);
87-
//if (_quickFixTarget.DeclarationType == DeclarationType.EnumerationMember
88-
// || _quickFixTarget.DeclarationType == DeclarationType.UserDefinedTypeMember)
89-
//{
90-
// nameCollisions = nameCollisions
91-
// .Where(nc => nc.ParentDeclaration == _quickFixTarget.ParentDeclaration);
92-
//}
93-
//else
94-
//{
95-
// nameCollisions = _parserState.DeclarationFinder.MatchName(newName)
96-
// .Where(nc => nc.DeclarationType != DeclarationType.EnumerationMember
97-
// && nc.DeclarationType != DeclarationType.UserDefinedTypeMember);
98-
//}
99-
100-
//if (nameCollisions.Any())
101-
//{
102-
// foreach (var conflictDec in nameCollisions)
103-
// {
104-
// var accessible = _parserState.DeclarationFinder.GetAccessibleUserDeclarations(_quickFixTarget);
105-
// if (accessible.Contains(conflictDec))
106-
// {
107-
// hasConflict = true;
108-
// }
109-
// else if (IsSubroutineOrProperty(_quickFixTarget))
110-
// {
111-
// hasConflict = conflictDec.ParentDeclaration == _quickFixTarget;
112-
// }
113-
// }
114-
//}
115-
//return hasConflict;
116-
}
79+
=> _parserState.DeclarationFinder.FindNewDeclarationNameConflicts(newName, _quickFixTarget).Any();
11780

11881
private static bool IsSubroutineOrProperty(Declaration declaration)
11982
{
@@ -122,30 +85,29 @@ private static bool IsSubroutineOrProperty(Declaration declaration)
12285
|| declaration.DeclarationType == DeclarationType.Procedure;
12386
}
12487

125-
private string GetDefaultLocalIdentifier(Declaration target) //, List<string> forbiddenNames)
88+
private string GetDefaultLocalIdentifier(Declaration target)
12689
{
12790
var newName = $"local{target.IdentifierName.CapitalizeFirstLetter()}";
128-
if (IsValidVariableName(newName))//, forbiddenNames))
91+
if (IsValidVariableName(newName))
12992
{
13093
return newName;
13194
}
13295

13396
for ( var attempt = 2; attempt < 10; attempt++)
13497
{
13598
var result = newName + attempt;
136-
if (IsValidVariableName(result)) //, forbiddenNames))
99+
if (IsValidVariableName(result))
137100
{
138101
return result;
139102
}
140103
}
141104
return newName;
142105
}
143106

144-
private bool IsValidVariableName(string variableName) //, IEnumerable<string> forbiddenNames)
107+
private bool IsValidVariableName(string variableName)
145108
{
146109
return VariableNameValidator.IsValidName(variableName)
147-
&& !IsNameCollision(variableName); //, StringComparison.InvariantCultureIgnoreCase));
148-
//&& !forbiddenNames.Any(name => name.Equals(variableName, StringComparison.InvariantCultureIgnoreCase));
110+
&& !IsNameCollision(variableName);
149111
}
150112

151113
private void ReplaceAssignedByValParameterReferences(IModuleRewriter rewriter, Declaration target, string localIdentifier)

0 commit comments

Comments
 (0)