Skip to content

Commit a65e520

Browse files
committed
*correctly* fixed IndexOutOfRangeException in ParameterCanBeByValInspection
1 parent 69698d9 commit a65e520

File tree

3 files changed

+15
-6
lines changed

3 files changed

+15
-6
lines changed

RetailCoder.VBE/Inspections/Inspector.cs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
using System.Threading;
66
using System.Threading.Tasks;
77
using Antlr4.Runtime.Tree;
8+
using NLog;
89
using Rubberduck.Parsing;
910
using Rubberduck.Parsing.Grammar;
1011
using Rubberduck.Parsing.VBA;
@@ -82,7 +83,14 @@ public async Task<IEnumerable<ICodeInspectionResult>> FindIssuesAsync(Rubberduck
8283
}
8384
}, token)).ToList();
8485

85-
await Task.WhenAll(inspections);
86+
try
87+
{
88+
await Task.WhenAll(inspections);
89+
}
90+
catch (Exception e)
91+
{
92+
LogManager.GetCurrentClassLogger().Error(e);
93+
}
8694
state.OnStatusMessageUpdate(RubberduckUI.ResourceManager.GetString("ParserState_" + state.Status, UI.Settings.Settings.Culture)); // should be "Ready"
8795
return allIssues;
8896
}

RetailCoder.VBE/Inspections/ParameterCanBeByValInspection.cs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
using System;
12
using System.Collections.Generic;
23
using System.Linq;
34
using Rubberduck.Common;
@@ -68,6 +69,7 @@ private IEnumerable<ParameterCanBeByValInspectionResult> GetResults(List<Declara
6869
.ThenBy(t => t.Selection.StartColumn)
6970
.ToList();
7071

72+
if (!declarationParameters.Any()) { continue; }
7173
var parametersAreByRef = declarationParameters.Select(s => true).ToList();
7274

7375
var members = declarationMembers.Any(a => a.DeclarationType == DeclarationType.Event)
@@ -85,9 +87,10 @@ private IEnumerable<ParameterCanBeByValInspectionResult> GetResults(List<Declara
8587

8688
for (var i = 0; i < parameters.Count; i++)
8789
{
88-
parametersAreByRef[i] = parametersAreByRef[i] && !IsUsedAsByRefParam(declarations, parameters[i]) &&
89-
((VBAParser.ArgContext)parameters[i].Context).BYVAL() == null &&
90-
!parameters[i].References.Any(reference => reference.IsAssignment);
90+
parametersAreByRef[i] = parametersAreByRef[i] &&
91+
!IsUsedAsByRefParam(declarations, parameters[i]) &&
92+
((VBAParser.ArgContext) parameters[i].Context).BYVAL() == null &&
93+
!parameters[i].References.Any(reference => reference.IsAssignment);
9194
}
9295
}
9396

RubberduckTests/Inspections/ParameterCanBeByValInspectionTests.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,7 @@
33
using Microsoft.VisualStudio.TestTools.UnitTesting;
44
using Moq;
55
using Rubberduck.Inspections;
6-
using Rubberduck.Parsing;
76
using Rubberduck.Parsing.VBA;
8-
using Rubberduck.VBEditor;
97
using Rubberduck.VBEditor.Application;
108
using Rubberduck.VBEditor.Events;
119
using Rubberduck.VBEditor.SafeComWrappers;

0 commit comments

Comments
 (0)