public static Task<ReferencedSymbol> FindReferences(this Solution solution, ISymbol symbol)
{
if (solution == null)
{
return Task.FromResult(new ReferencedSymbol(symbol, new ReferenceLocation[0]));
}
var lazyRepo = KnownReferences.GetOrAdd(solution.Id, x => new Lazy<ReferenceRepository>(() => new ReferenceRepository(solution), LazyThreadSafetyMode.ExecutionAndPublication));
return Task.Run(
() =>
{
var repo = lazyRepo.Value;
var locations = repo.Get(symbol).AsArray();
return new ReferencedSymbol(symbol, locations);
});
}
}