|
// 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.Runtime.Serialization;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.CodeCleanup;
using Microsoft.CodeAnalysis.Host;
namespace Microsoft.CodeAnalysis.CodeGeneration;
[DataContract]
internal readonly record struct CleanCodeGenerationOptions
{
[DataMember]
public required CodeGenerationOptions GenerationOptions { get; init; }
[DataMember]
public required CodeCleanupOptions CleanupOptions { get; init; }
public CodeAndImportGenerationOptions CodeAndImportGenerationOptions
=> new()
{
GenerationOptions = GenerationOptions,
AddImportOptions = CleanupOptions.AddImportOptions
};
}
internal static class CleanCodeGenerationOptionsProviders
{
public static CleanCodeGenerationOptions GetDefault(LanguageServices languageServices)
=> new()
{
GenerationOptions = CodeGenerationOptionsProviders.GetDefault(languageServices),
CleanupOptions = CodeCleanupOptionsProviders.GetDefault(languageServices)
};
public static async ValueTask<CleanCodeGenerationOptions> GetCleanCodeGenerationOptionsAsync(this Document document, CancellationToken cancellationToken)
=> new()
{
GenerationOptions = await document.GetCodeGenerationOptionsAsync(cancellationToken).ConfigureAwait(false),
CleanupOptions = await document.GetCodeCleanupOptionsAsync(cancellationToken).ConfigureAwait(false)
};
}
|