Skip to content

Commit c5ad714

Browse files
committed
address a few possible exceptions
1 parent 318939b commit c5ad714

File tree

2 files changed

+10
-10
lines changed

2 files changed

+10
-10
lines changed

Rubberduck.CodeAnalysis/Inspections/Concrete/AssignmentNotUsedInspection.cs

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -131,20 +131,19 @@ private static IEnumerable<AssignmentNode> FindUnusedAssignmentNodes(INode node,
131131
.Contains(refNode));
132132

133133
var assignmentsPrecedingReference = assignmentExprNodesWithReference.Any()
134-
? assignmentExprNodes.TakeWhile(n => n != assignmentExprNodesWithReference.Last())
135-
.Last()
136-
.Nodes(new[] { typeof(AssignmentNode) })
134+
? assignmentExprNodes.TakeWhile(n => n != assignmentExprNodesWithReference.LastOrDefault())
135+
?.LastOrDefault()
136+
?.Nodes(new[] { typeof(AssignmentNode) })
137137
: allAssignmentsAndReferences.TakeWhile(n => n != refNode)
138138
.OfType<AssignmentNode>();
139139

140-
if (assignmentsPrecedingReference.Any())
140+
if (assignmentsPrecedingReference?.Any() ?? false)
141141
{
142-
usedAssignments.Add(assignmentsPrecedingReference.Last() as AssignmentNode);
142+
usedAssignments.Add(assignmentsPrecedingReference.LastOrDefault() as AssignmentNode);
143143
}
144144
}
145145

146-
return allAssignmentsAndReferences.OfType<AssignmentNode>()
147-
.Except(usedAssignments);
146+
return allAssignmentsAndReferences.OfType<AssignmentNode>().Except(usedAssignments);
148147
}
149148

150149
private static bool IsDescendentOfNeverFlagNode(AssignmentNode assignment)

Rubberduck.Parsing/VBA/DeclarationCaching/DeclarationFinder.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -333,7 +333,7 @@ public IEnumerable<ModuleBodyElementDeclaration> FindEventHandlers(Declaration e
333333
{
334334
var withEventsDeclarations = FindWithEventFields(eventDeclaration);
335335
return withEventsDeclarations
336-
.Select(withEventsField => FindHandlersForWithEventsField(withEventsField).Single(handler =>
336+
.Select(withEventsField => FindHandlersForWithEventsField(withEventsField).SingleOrDefault(handler =>
337337
handler.IdentifierName.Equals($"{withEventsField.IdentifierName}_{eventDeclaration.IdentifierName}", StringComparison.InvariantCultureIgnoreCase)));
338338
}
339339

@@ -362,9 +362,10 @@ public ICollection<Declaration> FindFormEventHandlers()
362362
/// </summary>
363363
/// <param name="name">The identifier name of the project declaration to find.</param>
364364
/// <param name="result">The <see cref="ProjectDeclaration"/> result, if found; null otherwise.</param>
365-
public bool TryFindProjectDeclaration(string name, out Declaration result)
365+
/// <param name="includeUserDefined">True to include user-defined projects in the search; false by default.</param>
366+
public bool TryFindProjectDeclaration(string name, out Declaration result, bool includeUserDefined = false)
366367
{
367-
result = _projects.Value.SingleOrDefault(project => project.IdentifierName.Equals(name, StringComparison.InvariantCultureIgnoreCase) && !project.IsUserDefined);
368+
result = _projects.Value.FirstOrDefault(project => project.IdentifierName.Equals(name, StringComparison.InvariantCultureIgnoreCase) && project.IsUserDefined == includeUserDefined);
368369
return result != null;
369370
}
370371

0 commit comments

Comments
 (0)