Skip to content

Commit d81725e

Browse files
authored
Avoid setting incompatible default value for StringValue sources (dotnet#52895)
1 parent 9c13f45 commit d81725e

File tree

2 files changed

+15
-1
lines changed

2 files changed

+15
-1
lines changed

src/Http/Http.Extensions/gen/StaticRouteHandlerModel/Emitters/EndpointParameterEmitter.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ internal static void EmitQueryOrHeaderParameterPreparation(this EndpointParamete
3333
}
3434
else if (endpointParameter.IsOptional)
3535
{
36-
codeWriter.WriteLine($"var {endpointParameter.EmitTempArgument()} = {endpointParameter.EmitAssigningCodeResult()}.Count > 0 ? (string?){endpointParameter.EmitAssigningCodeResult()} : {endpointParameter.DefaultValue};");
36+
codeWriter.WriteLine($"var {endpointParameter.EmitTempArgument()} = {endpointParameter.EmitAssigningCodeResult()}.Count > 0 ? (string?){endpointParameter.EmitAssigningCodeResult()} : null;");
3737
}
3838
else if (endpointParameter.IsStringValues)
3939
{

src/Http/Http.Extensions/test/RequestDelegateGenerator/RequestDelegateCreationTests.QueryParameters.cs

+14
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,20 @@ public async Task MapAction_MultipleStringParam_StringReturn()
125125
await VerifyAgainstBaselineUsingFile(compilation);
126126
}
127127

128+
[Fact]
129+
public async Task MapAction_ExplicitParsableParameter_StringReturn()
130+
{
131+
var (results, compilation) = await RunGeneratorAsync("""
132+
app.MapGet("/hello", ([FromQuery] int p1 = 10) => $"{p1}");
133+
""");
134+
var endpoint = GetEndpointFromCompilation(compilation);
135+
136+
var httpContext = CreateHttpContext();
137+
138+
await endpoint.RequestDelegate(httpContext);
139+
await VerifyResponseBodyAsync(httpContext, "10");
140+
}
141+
128142
public static object[][] MapAction_ExplicitQueryParam_NameTest_Data
129143
{
130144
get

0 commit comments

Comments
 (0)