Skip to content

Commit ca77a8d

Browse files
committed
Allow to clear inspection listener contexts by module
1 parent e280deb commit ca77a8d

File tree

5 files changed

+32
-4
lines changed

5 files changed

+32
-4
lines changed

Rubberduck.CodeAnalysis/Inspections/Abstract/ParseTreeInspectionBase.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,11 @@ public virtual void ClearContexts()
139139
_contexts.Clear();
140140
}
141141

142+
public virtual void ClearContexts(QualifiedModuleName module)
143+
{
144+
_contexts.Remove(module);
145+
}
146+
142147
protected void SaveContext(ParserRuleContext context)
143148
{
144149
var module = CurrentModuleName;

Rubberduck.CodeAnalysis/Inspections/Concrete/OptionExplicitInspection.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,12 @@ public override void ClearContexts()
6969
base.ClearContexts();
7070
}
7171

72+
public override void ClearContexts(QualifiedModuleName module)
73+
{
74+
_hasOptionExplicit.Remove(module);
75+
base.ClearContexts(module);
76+
}
77+
7278
public override void EnterModuleDeclarations(VBAParser.ModuleDeclarationsContext context)
7379
{
7480
_hasOptionExplicit[CurrentModuleName] = false;

Rubberduck.CodeAnalysis/Inspections/Concrete/UnhandledOnErrorResumeNextInspection.cs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
using Rubberduck.Parsing.Inspections.Abstract;
88
using Rubberduck.Resources.Inspections;
99
using Rubberduck.Parsing.VBA;
10+
using Rubberduck.VBEditor;
1011

1112
namespace Rubberduck.Inspections.Concrete
1213
{
@@ -74,6 +75,19 @@ public override void ClearContexts()
7475
base.ClearContexts();
7576
}
7677

78+
public override void ClearContexts(QualifiedModuleName module)
79+
{
80+
var keysInModule = _unhandledContextsMap.Keys
81+
.Where(context => context.ModuleName.Equals(module));
82+
83+
foreach (var key in keysInModule)
84+
{
85+
_unhandledContextsMap.Remove(key);
86+
}
87+
88+
base.ClearContexts(module);
89+
}
90+
7791
public override void ExitModuleBodyElement(VBAParser.ModuleBodyElementContext context)
7892
{
7993
if (_unhandledContexts.Any())

Rubberduck.CodeAnalysis/Inspections/Concrete/UnreachableCaseInspection/UnreachableCaseInspection.cs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -279,17 +279,19 @@ public class UnreachableCaseInspectionListener : InspectionListenerBase
279279
{
280280
private readonly IDictionary<QualifiedModuleName, List<VBAParser.EnumerationStmtContext>> _enumStmts = new Dictionary<QualifiedModuleName, List<VBAParser.EnumerationStmtContext>>();
281281
public IReadOnlyList<VBAParser.EnumerationStmtContext> EnumerationStmtContexts() => _enumStmts.AllValues().ToList();
282-
public IReadOnlyList<VBAParser.EnumerationStmtContext> EnumerationStmtContexts(QualifiedModuleName module) =>
283-
_enumStmts.TryGetValue(module, out var stmts)
284-
? stmts
285-
: new List<VBAParser.EnumerationStmtContext>();
286282

287283
public override void ClearContexts()
288284
{
289285
_enumStmts.Clear();
290286
base.ClearContexts();
291287
}
292288

289+
public override void ClearContexts(QualifiedModuleName module)
290+
{
291+
_enumStmts.Remove(module);
292+
base.ClearContexts(module);
293+
}
294+
293295
public override void EnterSelectCaseStmt([NotNull] VBAParser.SelectCaseStmtContext context)
294296
{
295297
SaveContext(context);

Rubberduck.Parsing/Inspections/Abstract/IInpsectionListener.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ public interface IInspectionListener: IParseTreeListener
1010
IReadOnlyList<QualifiedContext<ParserRuleContext>> Contexts();
1111
IReadOnlyList<QualifiedContext<ParserRuleContext>> Contexts(QualifiedModuleName module);
1212
void ClearContexts();
13+
void ClearContexts(QualifiedModuleName module);
1314
QualifiedModuleName CurrentModuleName { get; set; }
1415
}
1516
}

0 commit comments

Comments
 (0)