public class AsmCompilationService()

in src/dotnet/ReSharperPlugin.DotNetDisassembler/AsmCompilationService.cs [13:44]


public class AsmCompilationService(AsmViewerUsageCollector usageCollector)
{
    private static readonly ILogger JitCodegenProviderLogger = JitDisasmLoggerFactory.Create<JitCodegenProvider>();

    public async Task<Result<string, Error>> CompileAsync(
        DisasmTarget target,
        JitDisasmConfiguration configuration,
        JitDisasmProjectContext projectContext,
        CancellationToken cancellationToken)
    {
        var validationResult = configuration.Validate();
        if (!validationResult.Succeed)
            return Result.FailWithValue(validationResult.FailValue);

        if (target.IsGenericMethod && !configuration.RunAppMode)
            return Result.FailWithValue(new Error(AsmViewerErrorCode.GenericMethodsRequireRunMode));

        usageCollector.LogConfigurationSaved(configuration);
        usageCollector.LogProjectInfo(projectContext);

        var provider = new JitCodegenProvider(JitCodegenProviderLogger);
        var result = await provider.GetJitCodegenAsync(target, projectContext, configuration, cancellationToken);

        if (!result.Succeed || result.Value == null)
            return Result.FailWithValue(result.FailValue);

        if (string.IsNullOrWhiteSpace(result.Value.Result))
            return Result.FailWithValue(new Error(AsmViewerErrorCode.EmptyDisassembly));

        return Result.Success(result.Value.Result);
    }
}