|
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
using System.Collections.Immutable;
using Microsoft.CodeAnalysis.UnusedReferences;
using Microsoft.VisualStudio.LanguageServices.ExternalAccess.ProjectSystem.Api;
using Roslyn.Utilities;
namespace Microsoft.VisualStudio.LanguageServices.Implementation.UnusedReferences;
internal static class UnusedReferenceExtensions
{
public static ReferenceInfo ToReferenceInfo(this ProjectSystemReferenceInfo projectSystemReference)
{
return new ReferenceInfo(
(ReferenceType)projectSystemReference.ReferenceType,
projectSystemReference.ItemSpecification,
projectSystemReference.TreatAsUsed,
ImmutableArray<string>.Empty,
ImmutableArray<ReferenceInfo>.Empty);
}
public static ProjectSystemReferenceUpdate ToProjectSystemReferenceUpdate(this ReferenceUpdate referenceUpdate)
{
var updateAction = referenceUpdate.Action switch
{
UpdateAction.TreatAsUsed => ProjectSystemUpdateAction.SetTreatAsUsed,
UpdateAction.TreatAsUnused => ProjectSystemUpdateAction.UnsetTreatAsUsed,
UpdateAction.Remove => ProjectSystemUpdateAction.Remove,
_ => throw ExceptionUtilities.Unreachable()
};
return new ProjectSystemReferenceUpdate(
updateAction,
referenceUpdate.ReferenceInfo.ToProjectSystemReferenceInfo());
}
public static ProjectSystemReferenceInfo ToProjectSystemReferenceInfo(this ReferenceInfo reference)
{
return new ProjectSystemReferenceInfo(
(ProjectSystemReferenceType)reference.ReferenceType,
reference.ItemSpecification,
reference.TreatAsUsed);
}
}
|