From 83822510f1455d778339cfc94c73f8da45f1dffa Mon Sep 17 00:00:00 2001 From: Alex Macocian Date: Fri, 18 Oct 2024 13:33:14 +0200 Subject: [PATCH] Add support for ValueTask --- .../Net.Sdk.Web.Extensions.SourceGenerators.csproj | 2 +- .../UseRoutesGenerator.cs | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/Net.Sdk.Web.Extensions.SourceGenerators/Net.Sdk.Web.Extensions.SourceGenerators.csproj b/Net.Sdk.Web.Extensions.SourceGenerators/Net.Sdk.Web.Extensions.SourceGenerators.csproj index fe9268a..d86a8ef 100644 --- a/Net.Sdk.Web.Extensions.SourceGenerators/Net.Sdk.Web.Extensions.SourceGenerators.csproj +++ b/Net.Sdk.Web.Extensions.SourceGenerators/Net.Sdk.Web.Extensions.SourceGenerators.csproj @@ -2,7 +2,7 @@ netstandard2.0 - 0.8.18 + 0.8.19 latest true Alexandru Macocian diff --git a/Net.Sdk.Web.Extensions.SourceGenerators/UseRoutesGenerator.cs b/Net.Sdk.Web.Extensions.SourceGenerators/UseRoutesGenerator.cs index 972a0d9..2b70073 100644 --- a/Net.Sdk.Web.Extensions.SourceGenerators/UseRoutesGenerator.cs +++ b/Net.Sdk.Web.Extensions.SourceGenerators/UseRoutesGenerator.cs @@ -262,13 +262,19 @@ public class UseRoutesGenerator : IIncrementalGenerator return returnTypeSymbol?.ToDisplayString() switch { "System.Threading.Tasks.Task" => @$" - builder.Map{type}(""{pattern}"", (Delegate)((HttpContext httpContext, {classDeclarationSyntax.Identifier} route{(parameters.Length > 0 ? $", {parameters}" : "")}) => + builder.Map{type}(""{pattern}"", (HttpContext httpContext, {classDeclarationSyntax.Identifier} route{(parameters.Length > 0 ? $", {parameters}" : "")}) => {{ var cancellationToken = httpContext.RequestAborted; return route.{methodDeclarationSyntax.Identifier}({variables}); - }})){routeFilterSb};", + }}){routeFilterSb};", "Microsoft.AspNetCore.Http.IResult" => @$" builder.Map{type}(""{pattern}"", (HttpContext httpContext, {classDeclarationSyntax.Identifier} route{(parameters.Length > 0 ? $", {parameters}" : "")}) => + {{ + var cancellationToken = httpContext.RequestAborted; + return route.{methodDeclarationSyntax.Identifier}({variables}); + }}){routeFilterSb};", + "System.Threading.Tasks.ValueTask" => @$" + builder.Map{type}(""{pattern}"", (HttpContext httpContext, {classDeclarationSyntax.Identifier} route{(parameters.Length > 0 ? $", {parameters}" : "")}) => {{ var cancellationToken = httpContext.RequestAborted; return route.{methodDeclarationSyntax.Identifier}({variables});