@@ -76,7 +76,7 @@ public EndpointParameter(IParameterSymbol parameter, WellKnownTypes wellKnownTyp
7676 }
7777 }
7878
79- private bool TryGetParsability ( IParameterSymbol parameter , WellKnownTypes wellKnownTypes , [ NotNullWhen ( true ) ] out Func < string , string , string > ? parsingBlockEmitter )
79+ private bool TryGetParsability ( IParameterSymbol parameter , WellKnownTypes wellKnownTypes , [ NotNullWhen ( true ) ] out Action < CodeWriter , string , string > ? parsingBlockEmitter )
8080 {
8181 var parameterType = parameter . Type . UnwrapTypeSymbol ( ) ;
8282
@@ -132,35 +132,36 @@ private bool TryGetParsability(IParameterSymbol parameter, WellKnownTypes wellKn
132132
133133 if ( IsOptional )
134134 {
135- parsingBlockEmitter = ( inputArgument , outputArgument ) => $$ """
136- {{ parameter . Type . ToDisplayString ( SymbolDisplayFormat . FullyQualifiedFormat ) }} {{ outputArgument }} = default;
137- if ({{ preferredTryParseInvocation ( inputArgument , $ "{ inputArgument } _parsed_non_nullable") }} )
138- {
139- {{ outputArgument }} = {{ $ "{ inputArgument } _parsed_non_nullable"}} ;
140- }
141- else if (string.IsNullOrEmpty({{ inputArgument }} ))
142- {
143- {{ outputArgument }} = null;
144- }
145- else
146- {
147- wasParamCheckFailure = true;
148- }
149- """ ;
135+ parsingBlockEmitter = ( writer , inputArgument , outputArgument ) =>
136+ {
137+ writer . WriteLine ( $ """ { parameter . Type . ToDisplayString ( SymbolDisplayFormat . FullyQualifiedFormat ) } { outputArgument } = default;""" ) ;
138+ writer . WriteLine ( $$ """ if ({{ preferredTryParseInvocation ( inputArgument , $ "{ inputArgument } _parsed_non_nullable") }} )""" ) ;
139+ writer . StartBlock ( ) ;
140+ writer . WriteLine ( $$ """ {{ outputArgument }} = {{ $ "{ inputArgument } _parsed_non_nullable"}} ;""" ) ;
141+ writer . EndBlock ( ) ;
142+ writer . WriteLine ( $$ """ else if (string.IsNullOrEmpty({{ inputArgument }} ))""" ) ;
143+ writer . StartBlock ( ) ;
144+ writer . WriteLine ( $$ """ {{ outputArgument }} = null;""" ) ;
145+ writer . EndBlock ( ) ;
146+ writer . WriteLine ( "else" ) ;
147+ writer . StartBlock ( ) ;
148+ writer . WriteLine ( "wasParamCheckFailure = true;" ) ;
149+ writer . EndBlock ( ) ;
150+ } ;
150151 }
151152 else
152153 {
153- parsingBlockEmitter = ( inputArgument , outputArgument ) => $$ """
154- if (!{{ preferredTryParseInvocation ( inputArgument , outputArgument ) }} )
155- {
156- wasParamCheckFailure = true;
157- }
158- """ ;
154+ parsingBlockEmitter = ( writer , inputArgument , outputArgument ) =>
155+ {
156+ writer . WriteLine ( $$ """ if (!{{ preferredTryParseInvocation ( inputArgument , outputArgument ) }} )""" ) ;
157+ writer . StartBlock ( ) ;
158+ writer . WriteLine ( "wasParamCheckFailure = true;" ) ;
159+ writer . EndBlock ( ) ;
160+ } ;
159161 }
160162
161163 // Wrap the TryParse method call in an if-block and if it doesn't work set param check failure.
162164 return true ;
163-
164165 }
165166
166167 public ITypeSymbol Type { get ; }
@@ -173,7 +174,7 @@ private bool TryGetParsability(IParameterSymbol parameter, WellKnownTypes wellKn
173174 public bool IsOptional { get ; }
174175 [ MemberNotNull ( "ParsingBlockEmitter" ) ]
175176 public bool IsParsable { get ; }
176- public Func < string , string , string > ParsingBlockEmitter { get ; }
177+ public Action < CodeWriter , string , string > ParsingBlockEmitter { get ; }
177178
178179 // TODO: Handle special form types like IFormFileCollection that need special body-reading logic.
179180 private static bool TryGetSpecialTypeAssigningCode ( ITypeSymbol type , WellKnownTypes wellKnownTypes , [ NotNullWhen ( true ) ] out string ? callingCode )
0 commit comments