Skip to content

Commit 4c7f0a9

Browse files
committed
fixed IndexOutOfRangeException
1 parent 8f7ac10 commit 4c7f0a9

File tree

1 file changed

+11
-16
lines changed

1 file changed

+11
-16
lines changed

RetailCoder.VBE/Inspections/ParameterCanBeByValInspection.cs

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -62,41 +62,36 @@ private IEnumerable<ParameterCanBeByValInspectionResult> GetResults(List<Declara
6262
foreach (var declaration in declarationMembers)
6363
{
6464
var declarationParameters =
65-
declarations.Where(d => d.DeclarationType == DeclarationType.Parameter &&
66-
d.ParentDeclaration == declaration)
65+
declarations.Where(d => d.DeclarationType == DeclarationType.Parameter && Equals(d.ParentDeclaration, declaration))
6766
.OrderBy(o => o.Selection.StartLine)
6867
.ThenBy(t => t.Selection.StartColumn)
6968
.ToList();
7069

71-
var parametersAreByRef = declarationParameters.Select(s => true).ToList();
72-
7370
var members = declarationMembers.Any(a => a.DeclarationType == DeclarationType.Event)
7471
? declarations.FindHandlersForEvent(declaration).Select(s => s.Item2).ToList()
7572
: declarations.FindInterfaceImplementationMembers(declaration).ToList();
7673

7774
foreach (var member in members)
7875
{
7976
var parameters =
80-
declarations.Where(d => d.DeclarationType == DeclarationType.Parameter &&
81-
d.ParentDeclaration == member)
82-
.OrderBy(o => o.Selection.StartLine)
83-
.ThenBy(t => t.Selection.StartColumn)
77+
declarations.Where(d => d.DeclarationType == DeclarationType.Parameter && Equals(d.ParentDeclaration, member))
78+
.OrderBy(d => d.Selection.StartLine)
79+
.ThenBy(d => d.Selection.StartColumn)
8480
.ToList();
8581

82+
var parametersAreByRef = parameters.Select(s => true).ToList();
83+
8684
for (var i = 0; i < parameters.Count; i++)
8785
{
8886
parametersAreByRef[i] = parametersAreByRef[i] && !IsUsedAsByRefParam(declarations, parameters[i]) &&
8987
((VBAParser.ArgContext)parameters[i].Context).BYVAL() == null &&
9088
!parameters[i].References.Any(reference => reference.IsAssignment);
91-
}
92-
}
9389

94-
for (var i = 0; i < declarationParameters.Count; i++)
95-
{
96-
if (parametersAreByRef[i])
97-
{
98-
yield return new ParameterCanBeByValInspectionResult(this, State, declarationParameters[i],
99-
declarationParameters[i].Context, declarationParameters[i].QualifiedName);
90+
if (parametersAreByRef[i])
91+
{
92+
yield return new ParameterCanBeByValInspectionResult(this, State, declarationParameters[i],
93+
declarationParameters[i].Context, declarationParameters[i].QualifiedName);
94+
}
10095
}
10196
}
10297
}

0 commit comments

Comments
 (0)