Skip to content

Commit 131882e

Browse files
Tweak
1 parent 6bdc615 commit 131882e

File tree

1 file changed

+21
-7
lines changed

1 file changed

+21
-7
lines changed

src/Features/Core/Portable/ExtractMethod/MethodExtractor.CodeGenerator.cs

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -224,15 +224,25 @@ protected ImmutableArray<TStatementSyntax> AddReturnIfUnreachable(
224224
return statements.Concat(CreateReturnStatement([]));
225225
}
226226

227-
private TExecutableStatementSyntax CreateReturnStatement(ImmutableArray<VariableInfo> variables)
227+
//private TExecutableStatementSyntax CreateReturnStatement(ImmutableArray<VariableInfo> variables)
228+
//{
229+
// var generator = this.SemanticDocument.GetRequiredLanguageService<SyntaxGenerator>();
230+
// return CreateReturnStatement(variables.SelectAsArray(v => (TExpressionSyntax)generator.IdentifierName(v.Name)));
231+
//}
232+
233+
private TExecutableStatementSyntax CreateReturnStatement(ImmutableArray<TExpressionSyntax> expressions)
228234
{
229235
var generator = this.SemanticDocument.GetRequiredLanguageService<SyntaxGenerator>();
230-
var returnStatement =
231-
variables.Length == 0 ? generator.ReturnStatement() :
232-
variables.Length == 1 ? generator.ReturnStatement(generator.IdentifierName(variables[0].Name)) :
233-
generator.ReturnStatement(generator.TupleExpression(variables.SelectAsArray(v => generator.IdentifierName(v.Name))));
236+
return (TExecutableStatementSyntax)generator.ReturnStatement(CreateReturnExpression(expressions));
237+
}
234238

235-
return (TExecutableStatementSyntax)returnStatement;
239+
private TExpressionSyntax CreateReturnExpression(ImmutableArray<TExpressionSyntax> expressions)
240+
{
241+
var generator = this.SemanticDocument.GetRequiredLanguageService<SyntaxGenerator>();
242+
return
243+
expressions.Length == 0 ? null :
244+
expressions.Length == 1 ? expressions[0] :
245+
(TExpressionSyntax)generator.TupleExpression(expressions.Select(generator.Argument));
236246
}
237247

238248
protected async Task<ImmutableArray<TStatementSyntax>> AddInvocationAtCallSiteAsync(
@@ -297,7 +307,11 @@ protected ImmutableArray<TStatementSyntax> AppendReturnStatementIfNeeded(Immutab
297307
if (AnalyzerResult.VariablesToUseAsReturnValue.IsEmpty)
298308
return statements;
299309

300-
return statements.Concat(CreateReturnStatement(AnalyzerResult.VariablesToUseAsReturnValue));
310+
var generator = this.SemanticDocument.GetRequiredLanguageService<SyntaxGenerator>();
311+
return statements.Concat(CreateReturnStatement(
312+
AnalyzerResult.VariablesToUseAsReturnValue.SelectAsArray(
313+
static (v, generator) => (TExpressionSyntax)generator.IdentifierName(v.Name),
314+
generator)));
301315
}
302316

303317
protected static HashSet<SyntaxAnnotation> CreateVariableDeclarationToRemoveMap(

0 commit comments

Comments
 (0)