Skip to content

Commit ebd7703

Browse files
committed
Short circuit processing if no Listener results
1 parent fac64b3 commit ebd7703

File tree

2 files changed

+27
-0
lines changed

2 files changed

+27
-0
lines changed

Rubberduck.CodeAnalysis/Inspections/Concrete/ProcedureCanBeWrittenAsFunctionInspection.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,11 @@ public ProcedureCanBeWrittenAsFunctionInspection(RubberduckParserState state)
2626

2727
protected override IEnumerable<IInspectionResult> DoGetInspectionResults()
2828
{
29+
if (Listener.Contexts.Count == 0)
30+
{
31+
return Enumerable.Empty<IInspectionResult>();
32+
}
33+
2934
var userDeclarations = UserDeclarations.ToList();
3035
var builtinHandlers = State.DeclarationFinder.FindEventHandlers().ToList();
3136

RubberduckTests/Inspections/ProcedureShouldBeFunctionInspectionTests.cs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,28 @@ namespace RubberduckTests.Inspections
1010
[TestFixture]
1111
public class ProcedureShouldBeFunctionInspectionTests
1212
{
13+
[Test]
14+
[Category("Inspections")]
15+
public void ProcedureShouldBeFunction_NoArgCase_NoResults()
16+
{
17+
const string inputCode =
18+
@"
19+
Private foo As Long
20+
Private Sub Foo()
21+
foo = 42
22+
End Sub";
23+
24+
var vbe = MockVbeBuilder.BuildFromSingleStandardModule(inputCode, out _);
25+
using (var state = MockParser.CreateAndParse(vbe.Object))
26+
{
27+
var inspection = new ProcedureCanBeWrittenAsFunctionInspection(state);
28+
var inspector = InspectionsHelper.GetInspector(inspection);
29+
var inspectionResults = inspector.FindIssuesAsync(state, CancellationToken.None).Result;
30+
31+
Assert.AreEqual(0, inspectionResults.Count());
32+
}
33+
}
34+
1335
[Test]
1436
[Category("Inspections")]
1537
public void ProcedureShouldBeFunction_ReturnsResult()

0 commit comments

Comments
 (0)