Skip to content

Commit 71ccfa1

Browse files
committed
Cleanup and removed abandoned code
1 parent f46bdab commit 71ccfa1

File tree

1 file changed

+22
-180
lines changed

1 file changed

+22
-180
lines changed

Rubberduck.Parsing/Symbols/DeclarationFinder.cs

Lines changed: 22 additions & 180 deletions
Original file line numberDiff line numberDiff line change
@@ -1015,21 +1015,6 @@ private List<Declaration> FindAllEventHandlers()
10151015
return handlers.ToList();
10161016
}
10171017

1018-
private IEnumerable<Declaration> GetAccessibleUserDeclarations(Declaration target)
1019-
{
1020-
if (target == null)
1021-
{
1022-
return Enumerable.Empty<Declaration>();
1023-
}
1024-
1025-
return _userDeclarationsByType.AllValues()
1026-
.Where(callee => AccessibilityCheck.IsAccessible(
1027-
Declaration.GetProjectParent(target),
1028-
Declaration.GetModuleParent(target),
1029-
target.ParentDeclaration,
1030-
callee));
1031-
}
1032-
10331018
public IEnumerable<Declaration> FindNewDeclarationNameConflicts(string newName, Declaration renameTarget)
10341019
{
10351020
if (newName.Equals(renameTarget.IdentifierName))
@@ -1045,49 +1030,37 @@ public IEnumerable<Declaration> FindNewDeclarationNameConflicts(string newName,
10451030

10461031
if (IsEnumOrUDTMemberDeclaration(renameTarget))
10471032
{
1048-
identifierMatches = identifierMatches.Where(idm =>
1033+
var memberMatches = identifierMatches.Where(idm =>
10491034
IsEnumOrUDTMemberDeclaration(idm) && idm.ParentDeclaration == renameTarget.ParentDeclaration);
1050-
if (identifierMatches.Any())
1035+
if (memberMatches.Any())
10511036
{
1052-
return identifierMatches;
1037+
return memberMatches;
10531038
}
10541039
}
10551040

10561041
identifierMatches = identifierMatches.Where(nc => !IsEnumOrUDTMemberDeclaration(nc));
1057-
#if DEBUG
1058-
foreach (var idMatch in identifierMatches)
1059-
{
1060-
var predicate1 = renameTarget.References.Any(renameTargetRef => renameTargetRef.ParentScoping == idMatch.ParentDeclaration);
1061-
var predicate2 = renameTarget.References.Any(renameTargetRefs => renameTarget.ParentDeclaration.DeclarationType != DeclarationType.ClassModule
1062-
&& idMatch == renameTargetRefs.ParentScoping
1063-
&& !UsesScopeResolution(renameTargetRefs.Context.Parent));
1064-
var predicate3 = renameTarget.References
1065-
.Any(renameTargetRef => idMatch.References
1066-
.Any(idmRefs => idmRefs.ParentScoping == renameTargetRef.ParentScoping
1067-
&& !UsesScopeResolution(renameTargetRef.Context.Parent)));
1068-
var predicate4 = RenameTargetReferencedInConflictingNameDeclaringModule(renameTarget, idMatch);
1069-
var predicate5 = renameTarget == idMatch.ParentDeclaration;
1070-
var isLocalConflict = predicate1 || predicate2 || predicate3 || predicate4 || predicate5;
1071-
}
1072-
#endif
1073-
var referenceConflicts = identifierMatches.Where(idm => renameTarget.References.Any(renameTargetRef => renameTargetRef.ParentScoping == idm.ParentDeclaration)
1074-
|| renameTarget.References.Any(renameTargetRef => renameTarget.ParentDeclaration.DeclarationType != DeclarationType.ClassModule
1075-
&& idm == renameTargetRef.ParentScoping
1076-
&& !UsesScopeResolution(renameTargetRef.Context.Parent))
1077-
|| renameTarget.References
1078-
.Any(renameTargetRef => idm.References
1079-
.Any(idmRefs => idmRefs.ParentScoping == renameTargetRef.ParentScoping
1080-
&& !UsesScopeResolution(renameTargetRef.Context.Parent)))
1081-
|| RenameTargetReferencedInConflictingNameDeclaringModule(renameTarget, idm)
1082-
|| renameTarget == idm.ParentDeclaration);
1042+
var referenceConflicts = identifierMatches.Where(idm =>
1043+
renameTarget.References
1044+
.Any(renameTargetRef => renameTargetRef.ParentScoping == idm.ParentDeclaration
1045+
|| renameTarget.ParentDeclaration.DeclarationType != DeclarationType.ClassModule
1046+
&& idm == renameTargetRef.ParentScoping
1047+
&& !UsesScopeResolution(renameTargetRef.Context.Parent)
1048+
|| idm.References
1049+
.Any(idmRef => idmRef.ParentScoping == renameTargetRef.ParentScoping
1050+
&& !UsesScopeResolution(renameTargetRef.Context.Parent)))
1051+
|| idm.DeclarationType.HasFlag(DeclarationType.Variable)
1052+
&& idm.ParentDeclaration.DeclarationType.HasFlag(DeclarationType.Module) //?
1053+
&& renameTarget.References.Any(renameTargetRef => renameTargetRef.QualifiedModuleName == idm.ParentDeclaration.QualifiedModuleName));
1054+
10831055
if (referenceConflicts.Any())
10841056
{
10851057
return referenceConflicts;
10861058
}
10871059

10881060
var renameTargetModule = Declaration.GetModuleParent(renameTarget);
10891061
var declarationConflicts = identifierMatches.Where(idm =>
1090-
AccessibilityCheck.IsAccessible(
1062+
renameTarget == idm.ParentDeclaration
1063+
|| AccessibilityCheck.IsAccessible(
10911064
Declaration.GetProjectParent(renameTarget),
10921065
renameTargetModule,
10931066
renameTarget.ParentDeclaration,
@@ -1103,107 +1076,13 @@ private bool IsEnumOrUDTMemberDeclaration(Declaration candidate)
11031076
|| candidate.DeclarationType == DeclarationType.UserDefinedTypeMember;
11041077
}
11051078

1106-
public bool IsConflictingMember(Declaration renameTarget, Declaration renameTargetModule, Declaration candidate)
1079+
private bool IsConflictingMember(Declaration renameTarget, Declaration renameTargetModule, Declaration candidate)
11071080
{
11081081
var candidateModule = Declaration.GetModuleParent(candidate);
1109-
return renameTargetModule == candidateModule //member of same module
1110-
|| renameTargetModule.DeclarationType.HasFlag(DeclarationType.ProceduralModule)
1082+
return renameTargetModule == candidateModule
1083+
|| renameTargetModule.DeclarationType.HasFlag(DeclarationType.ProceduralModule)
11111084
&& candidate.Accessibility != Accessibility.Private
1112-
&& candidateModule.DeclarationType.HasFlag(DeclarationType.ProceduralModule)
1113-
;
1114-
}
1115-
1116-
public bool RenameTargetReferencedInConflictingNameDeclaringModule(Declaration renameTarget, Declaration conflictCandidate)
1117-
{
1118-
if (conflictCandidate.DeclarationType != DeclarationType.Variable)
1119-
{
1120-
return false;
1121-
}
1122-
var candidateModule = Declaration.GetModuleParent(conflictCandidate);
1123-
if (candidateModule != conflictCandidate.ParentDeclaration)
1124-
{
1125-
return false;
1126-
}
1127-
return renameTarget.References.Any(renameTargetRef => renameTargetRef.QualifiedModuleName == candidateModule.QualifiedModuleName);
1128-
}
1129-
1130-
public IEnumerable<Declaration> GetDeclarationsWithIdentifiersToAvoid(Declaration target)
1131-
{
1132-
if (target == null)
1133-
{
1134-
return Enumerable.Empty<Declaration>();
1135-
}
1136-
1137-
var declarationsToAvoid = GetNameCollisionDeclarations(target).ToList();
1138-
1139-
declarationsToAvoid.AddRange(GetNameCollisionDeclarations(target.References));
1140-
1141-
return declarationsToAvoid;
1142-
}
1143-
1144-
private HashSet<Declaration> GetNameCollisionDeclarations(Declaration declaration)
1145-
{
1146-
if (declaration is null)
1147-
{
1148-
return new HashSet<Declaration>();
1149-
}
1150-
1151-
//Filter accessible declarations to those that would result in name collisions or hiding
1152-
var declarationsToAvoid = GetAccessibleUserDeclarations(declaration).Where(candidate =>
1153-
(!(candidate.DeclarationType == DeclarationType.UserDefinedTypeMember
1154-
|| candidate.DeclarationType == DeclarationType.EnumerationMember)
1155-
&& (IsAccessibleInOtherProcedureModule(candidate,declaration)
1156-
|| IsAccessibleInSameProcedureModule(candidate, declaration)
1157-
|| candidate.DeclarationType == DeclarationType.Project
1158-
|| candidate.DeclarationType.HasFlag(DeclarationType.Module)
1159-
|| IsDeclarationInSameProcedureScope(candidate, declaration)
1160-
)
1161-
)).ToHashSet();
1162-
1163-
//Add local variables when the target is a method or property
1164-
if (IsSubroutineOrProperty(declaration))
1165-
{
1166-
var localVariableDeclarations = _declarations.AllValues()
1167-
.Where(dec => ReferenceEquals(declaration, dec.ParentDeclaration));
1168-
declarationsToAvoid.UnionWith(localVariableDeclarations);
1169-
}
1170-
1171-
declarationsToAvoid = AddRelatedMembers(declaration, declarationsToAvoid);
1172-
return declarationsToAvoid;
1173-
}
1174-
1175-
private IEnumerable<Declaration> GetNameCollisionDeclarations(IEnumerable<IdentifierReference> references)
1176-
{
1177-
var declarationsToAvoid = new HashSet<Declaration>();
1178-
foreach (var reference in references)
1179-
{
1180-
if (!UsesScopeResolution(reference.Context.Parent))
1181-
{
1182-
declarationsToAvoid.UnionWith(GetNameCollisionDeclarations(reference.ParentNonScoping));
1183-
}
1184-
}
1185-
return declarationsToAvoid;
1186-
}
1187-
1188-
private bool IsAccessibleInOtherProcedureModule(Declaration candidate, Declaration declaration)
1189-
=> AreProceduralModules(candidate, declaration, out bool isSameModule)
1190-
&& !isSameModule && candidate.Accessibility != Accessibility.Private;
1191-
1192-
private bool IsAccessibleInSameProcedureModule(Declaration candidate, Declaration declaration)
1193-
=> AreProceduralModules(candidate, declaration, out bool isSameModule)
1194-
&& isSameModule;
1195-
1196-
private bool AreProceduralModules(Declaration candidate, Declaration declaration, out bool sameModule)
1197-
{
1198-
sameModule = false;
1199-
var candidateModuleDeclaration = Declaration.GetModuleParent(candidate);
1200-
1201-
var decModuleDeclaration = Declaration.GetModuleParent(declaration);
1202-
1203-
sameModule = candidateModuleDeclaration != null && candidateModuleDeclaration == decModuleDeclaration;
1204-
1205-
return candidateModuleDeclaration?.DeclarationType == DeclarationType.ProceduralModule
1206-
&& decModuleDeclaration?.DeclarationType == DeclarationType.ProceduralModule;
1085+
&& candidateModule.DeclarationType.HasFlag(DeclarationType.ProceduralModule);
12071086
}
12081087

12091088
private bool UsesScopeResolution(RuleContext ruleContext)
@@ -1212,43 +1091,6 @@ private bool UsesScopeResolution(RuleContext ruleContext)
12121091
|| (ruleContext is VBAParser.MemberAccessExprContext);
12131092
}
12141093

1215-
private bool IsInProceduralModule(Declaration candidateDeclaration)
1216-
{
1217-
var candidateModuleDeclaration = Declaration.GetModuleParent(candidateDeclaration);
1218-
1219-
return candidateModuleDeclaration?.DeclarationType == DeclarationType.ProceduralModule;
1220-
}
1221-
1222-
private bool IsDeclarationInSameProcedureScope(Declaration candidateDeclaration, Declaration scopingDeclaration)
1223-
{
1224-
return candidateDeclaration.ParentScope == scopingDeclaration.ParentScope;
1225-
}
1226-
1227-
private HashSet<Declaration> AddRelatedMembers(Declaration candidateDeclaration, HashSet<Declaration> conflictingMembers)
1228-
{
1229-
if (candidateDeclaration.DeclarationType == DeclarationType.UserDefinedTypeMember
1230-
|| candidateDeclaration.DeclarationType == DeclarationType.EnumerationMember)
1231-
{
1232-
var relatedMembers = Members(candidateDeclaration.ParentDeclaration).Where(m =>
1233-
(m.DeclarationType == DeclarationType.EnumerationMember
1234-
|| m.DeclarationType == DeclarationType.UserDefinedTypeMember)
1235-
&& !m.IdentifierName.Equals(candidateDeclaration.IdentifierName)
1236-
);
1237-
foreach (var rm in relatedMembers)
1238-
{
1239-
conflictingMembers.Add(rm);
1240-
}
1241-
}
1242-
return conflictingMembers;
1243-
}
1244-
1245-
private static bool IsSubroutineOrProperty(Declaration declaration)
1246-
{
1247-
return declaration.DeclarationType.HasFlag(DeclarationType.Property)
1248-
|| declaration.DeclarationType == DeclarationType.Function
1249-
|| declaration.DeclarationType == DeclarationType.Procedure;
1250-
}
1251-
12521094
/// <summary>
12531095
/// Creates a dictionary of identifier references, keyed by module.
12541096
/// </summary>

0 commit comments

Comments
 (0)