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);
}
}