using System.Collections.Immutable; using System.Linq; using System.Text; using Just.Railway.SourceGen.Executors.ResultExtensions.MainExtensions; namespace Just.Railway.SourceGen.Executors.ResultExtensions.ValueTaskExtensions; internal class ResultValueTaskTryRecoverExecutor : ResultTryRecoverExecutor { protected override string NamespaceName => "Just.Railway.ValueTaskExtensions"; protected override string PartialClassName => "ResultValueTaskExtensions"; protected override void GenerateMethodsForArgCount(StringBuilder sb, int argCount) { if (argCount > 1) return; var templateArgNames = Enumerable.Repeat("T", argCount) .ToImmutableArray(); string methodTemplateDecl = GenerateTemplateDecl(templateArgNames); string resultTypeDef = GenerateResultTypeDef(templateArgNames); sb.AppendLine($"#region {resultTypeDef}"); GenerateAsyncMethods("ValueTask", "ValueTask", sb, templateArgNames, resultTypeDef, methodTemplateDecl); sb.AppendLine("#endregion"); } }