core/src/CalleBuilder.cs
+3
-2
diff --git a/core/src/CalleBuilder.cs b/core/src/CalleBuilder.cs
index 3ec1640..2f3919b 100644
@@ -10,7 +10,7 @@ namespace Cfa;
internal sealed class CalleeBuilder(IReadOnlyCollection<Compilation> compilations)
{
private readonly IReadOnlyCollection<Compilation> compilations = compilations;
private readonly HashSet<ISymbol> visitedSymbols = [];
private readonly HashSet<ISymbol> visitedSymbols = [with(SymbolEqualityComparer.Default)];
public IImmutableList<Callee> FindCallees(ISymbol symbol, CancellationToken cancellationToken)
{
@@ -19,6 +19,7 @@ internal sealed class CalleeBuilder(IReadOnlyCollection<Compilation> compilation
return [];
}
var seen = new HashSet<ISymbol>(SymbolEqualityComparer.Default);
var callees = ImmutableList.CreateBuilder<Callee>();
foreach (var reference in symbol.DeclaringSyntaxReferences)
{
@@ -28,7 +29,7 @@ internal sealed class CalleeBuilder(IReadOnlyCollection<Compilation> compilation
foreach (var invocation in invocations)
{
var invokedSymbol = semanticModelForSyntax.GetSymbolInfo(invocation, cancellationToken).Symbol;
if (invokedSymbol is { DeclaringSyntaxReferences.Length: > 0 })
if (invokedSymbol is { DeclaringSyntaxReferences.Length: > 0 } && seen.Add(invokedSymbol))
{
callees.Add(
new Callee(invokedSymbol, LinkKind.Direct, FindCallees(invokedSymbol, cancellationToken))