From 6178365b1e0f7da772f3e835d655b243f7a9c8a6 Mon Sep 17 00:00:00 2001 From: Safia Abdalla Date: Mon, 18 Dec 2023 23:59:57 -0800 Subject: [PATCH] Avoid setting incompatible default value for StringValue sources --- .../Emitters/EndpointParameterEmitter.cs | 2 +- ...RequestDelegateCreationTests.QueryParameters.cs | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/Http/Http.Extensions/gen/StaticRouteHandlerModel/Emitters/EndpointParameterEmitter.cs b/src/Http/Http.Extensions/gen/StaticRouteHandlerModel/Emitters/EndpointParameterEmitter.cs index cd068f26a5e2..b58a5321e8a4 100644 --- a/src/Http/Http.Extensions/gen/StaticRouteHandlerModel/Emitters/EndpointParameterEmitter.cs +++ b/src/Http/Http.Extensions/gen/StaticRouteHandlerModel/Emitters/EndpointParameterEmitter.cs @@ -33,7 +33,7 @@ internal static void EmitQueryOrHeaderParameterPreparation(this EndpointParamete } else if (endpointParameter.IsOptional) { - codeWriter.WriteLine($"var {endpointParameter.EmitTempArgument()} = {endpointParameter.EmitAssigningCodeResult()}.Count > 0 ? (string?){endpointParameter.EmitAssigningCodeResult()} : {endpointParameter.DefaultValue};"); + codeWriter.WriteLine($"var {endpointParameter.EmitTempArgument()} = {endpointParameter.EmitAssigningCodeResult()}.Count > 0 ? (string?){endpointParameter.EmitAssigningCodeResult()} : null;"); } else if (endpointParameter.IsStringValues) { diff --git a/src/Http/Http.Extensions/test/RequestDelegateGenerator/RequestDelegateCreationTests.QueryParameters.cs b/src/Http/Http.Extensions/test/RequestDelegateGenerator/RequestDelegateCreationTests.QueryParameters.cs index 8ad843fab793..41dde7279e17 100644 --- a/src/Http/Http.Extensions/test/RequestDelegateGenerator/RequestDelegateCreationTests.QueryParameters.cs +++ b/src/Http/Http.Extensions/test/RequestDelegateGenerator/RequestDelegateCreationTests.QueryParameters.cs @@ -125,6 +125,20 @@ public async Task MapAction_MultipleStringParam_StringReturn() await VerifyAgainstBaselineUsingFile(compilation); } + [Fact] + public async Task MapAction_ExplicitParsableParameter_StringReturn() + { + var (results, compilation) = await RunGeneratorAsync(""" +app.MapGet("/hello", ([FromQuery] int p1 = 10) => $"{p1}"); +"""); + var endpoint = GetEndpointFromCompilation(compilation); + + var httpContext = CreateHttpContext(); + + await endpoint.RequestDelegate(httpContext); + await VerifyResponseBodyAsync(httpContext, "10"); + } + public static object[][] MapAction_ExplicitQueryParam_NameTest_Data { get