Skip to content

Commit 58869ed

Browse files
committed
modified CombinedParseTreeListener per antlr/antlr4#841
1 parent c65f7b4 commit 58869ed

File tree

1 file changed

+20
-6
lines changed

1 file changed

+20
-6
lines changed

Rubberduck.Parsing/VBA/CombinedParseTreeListener.cs

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,30 +10,44 @@ namespace Rubberduck.Parsing.VBA
1010
/// </summary>
1111
public class CombinedParseTreeListener : IParseTreeListener
1212
{
13-
private List<IParseTreeListener> _listeners;
14-
public CombinedParseTreeListener(IParseTreeListener[] listeners)
13+
private readonly IReadOnlyList<IParseTreeListener> _listeners;
14+
public CombinedParseTreeListener(IEnumerable<IParseTreeListener> listeners)
1515
{
1616
_listeners = listeners.ToList();
1717
}
1818

1919
public void EnterEveryRule(ParserRuleContext ctx)
2020
{
21-
_listeners.ForEach(l => l.EnterEveryRule(ctx));
21+
foreach (var listener in _listeners)
22+
{
23+
listener.EnterEveryRule(ctx);
24+
ctx.EnterRule(listener);
25+
}
2226
}
2327

2428
public void ExitEveryRule(ParserRuleContext ctx)
2529
{
26-
_listeners.ForEach(l => l.ExitEveryRule(ctx));
30+
foreach (var listener in _listeners)
31+
{
32+
listener.ExitEveryRule(ctx);
33+
ctx.ExitRule(listener);
34+
}
2735
}
2836

2937
public void VisitErrorNode(IErrorNode node)
3038
{
31-
_listeners.ForEach(l => l.VisitErrorNode(node));
39+
foreach (var listener in _listeners)
40+
{
41+
listener.VisitErrorNode(node);
42+
}
3243
}
3344

3445
public void VisitTerminal(ITerminalNode node)
3546
{
36-
_listeners.ForEach(l => l.VisitTerminal(node));
47+
foreach (var listener in _listeners)
48+
{
49+
listener.VisitTerminal(node);
50+
}
3751
}
3852
}
3953
}

0 commit comments

Comments
 (0)