diff --git a/TUnit.Assertions.SourceGenerator/Generators/MethodAssertionGenerator.cs b/TUnit.Assertions.SourceGenerator/Generators/MethodAssertionGenerator.cs index 95bbfcae85..69561312d2 100644 --- a/TUnit.Assertions.SourceGenerator/Generators/MethodAssertionGenerator.cs +++ b/TUnit.Assertions.SourceGenerator/Generators/MethodAssertionGenerator.cs @@ -569,6 +569,13 @@ private static void GenerateAssertionClass(StringBuilder sb, AssertionMethodData sb.AppendLine("{"); + if (data.ReturnTypeInfo.Kind is ReturnTypeKind.Bool) + { + sb.AppendLine( + " private static readonly Task _passedTask = Task.FromResult(AssertionResult.Passed);"); + sb.AppendLine(); + } + // Private fields for additional parameters // Note: Ref struct types (like DefaultInterpolatedStringHandler) are stored as string foreach (var param in data.AdditionalParameters) @@ -702,9 +709,9 @@ private static void GenerateMethodCall(StringBuilder sb, AssertionMethodData dat { case ReturnTypeKind.Bool: sb.AppendLine($" var result = {methodCall};"); - sb.AppendLine(" return Task.FromResult(result"); - sb.AppendLine(" ? AssertionResult.Passed"); - sb.AppendLine(" : AssertionResult.Failed($\"found {value}\"));"); + sb.AppendLine(" return result"); + sb.AppendLine(" ? _passedTask"); + sb.AppendLine(" : Task.FromResult(AssertionResult.Failed($\"found {value}\"));"); break; case ReturnTypeKind.AssertionResult: