@@ -76,7 +76,7 @@ public EndpointParameter(IParameterSymbol parameter, WellKnownTypes wellKnownTyp
76
76
}
77
77
}
78
78
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 )
80
80
{
81
81
var parameterType = parameter . Type . UnwrapTypeSymbol ( ) ;
82
82
@@ -132,35 +132,36 @@ private bool TryGetParsability(IParameterSymbol parameter, WellKnownTypes wellKn
132
132
133
133
if ( IsOptional )
134
134
{
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
+ } ;
150
151
}
151
152
else
152
153
{
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
+ } ;
159
161
}
160
162
161
163
// Wrap the TryParse method call in an if-block and if it doesn't work set param check failure.
162
164
return true ;
163
-
164
165
}
165
166
166
167
public ITypeSymbol Type { get ; }
@@ -173,7 +174,7 @@ private bool TryGetParsability(IParameterSymbol parameter, WellKnownTypes wellKn
173
174
public bool IsOptional { get ; }
174
175
[ MemberNotNull ( "ParsingBlockEmitter" ) ]
175
176
public bool IsParsable { get ; }
176
- public Func < string , string , string > ParsingBlockEmitter { get ; }
177
+ public Action < CodeWriter , string , string > ParsingBlockEmitter { get ; }
177
178
178
179
// TODO: Handle special form types like IFormFileCollection that need special body-reading logic.
179
180
private static bool TryGetSpecialTypeAssigningCode ( ITypeSymbol type , WellKnownTypes wellKnownTypes , [ NotNullWhen ( true ) ] out string ? callingCode )
0 commit comments