提交 60725ded 编写于 作者: M Martin Strecker

PR feedback: Small refactorings and code formatting.

上级 f86b9dbc
...@@ -200,10 +200,11 @@ private int NonParamsParameterCount(IMethodSymbol method) ...@@ -200,10 +200,11 @@ private int NonParamsParameterCount(IMethodSymbol method)
: NestByCascading(); : NestByCascading();
context.RegisterFixes(fixes, context.Diagnostics); context.RegisterFixes(fixes, context.Diagnostics);
return;
ImmutableArray<CodeAction> NestByOverload() ImmutableArray<CodeAction> NestByOverload()
{ {
var builder = ImmutableArray.CreateBuilder<CodeAction>(codeFixData.Length); var builder = ArrayBuilder<CodeAction>.GetInstance(codeFixData.Length);
foreach (var data in codeFixData) foreach (var data in codeFixData)
{ {
var title = GetCodeFixTitle(FeaturesResources.Add_parameter_to_0, data.Method, includeParameters: true); var title = GetCodeFixTitle(FeaturesResources.Add_parameter_to_0, data.Method, includeParameters: true);
...@@ -213,7 +214,8 @@ ImmutableArray<CodeAction> NestByOverload() ...@@ -213,7 +214,8 @@ ImmutableArray<CodeAction> NestByOverload()
if (data.CreateChangedSolutionCascading != null) if (data.CreateChangedSolutionCascading != null)
{ {
var titleForNesting = GetCodeFixTitle(FeaturesResources.Add_parameter_to_0, data.Method, includeParameters: true); var titleForNesting = GetCodeFixTitle(FeaturesResources.Add_parameter_to_0, data.Method, includeParameters: true);
var titleCascading = GetCodeFixTitle(FeaturesResources.Add_parameter_to_0_and_overrides_implementations, data.Method, includeParameters: true); var titleCascading = GetCodeFixTitle(FeaturesResources.Add_parameter_to_0_and_overrides_implementations, data.Method,
includeParameters: true);
codeAction = new CodeAction.CodeActionWithNestedActions( codeAction = new CodeAction.CodeActionWithNestedActions(
title: titleForNesting, title: titleForNesting,
ImmutableArray.Create( ImmutableArray.Create(
...@@ -227,44 +229,48 @@ ImmutableArray<CodeAction> NestByOverload() ...@@ -227,44 +229,48 @@ ImmutableArray<CodeAction> NestByOverload()
builder.Add(codeAction); builder.Add(codeAction);
} }
return builder.ToImmutable(); return builder.ToImmutableAndFree();
} }
ImmutableArray<CodeAction> NestByCascading() ImmutableArray<CodeAction> NestByCascading()
{ {
var builder = ImmutableArray.CreateBuilder<CodeAction>(2); var builder = ArrayBuilder<CodeAction>.GetInstance(2);
var nonCascadingActions = ImmutableArray.CreateRange<CodeAction>(codeFixData.Select(data => var nonCascadingActions = ImmutableArray.CreateRange<CodeAction>(codeFixData.Select(data =>
{ {
var title = GetCodeFixTitle(FeaturesResources.Add_to_0, data.Method, true); var title = GetCodeFixTitle(FeaturesResources.Add_to_0, data.Method, includeParameters: true);
return new MyCodeAction(title: title, data.CreateChangedSolutionNonCascading); return new MyCodeAction(title: title, data.CreateChangedSolutionNonCascading);
})); }));
var cascading = codeFixData.Where(data => data.CreateChangedSolutionCascading != null); var cascading = codeFixData.Where(data => data.CreateChangedSolutionCascading != null);
var cascadingActions = ImmutableArray.CreateRange<CodeAction>(cascading.Select(data => var cascadingActions = ImmutableArray.CreateRange<CodeAction>(cascading.Select(data =>
{ {
var title = GetCodeFixTitle(FeaturesResources.Add_to_0, data.Method, true); var title = GetCodeFixTitle(FeaturesResources.Add_to_0, data.Method, includeParameters: true);
return new MyCodeAction(title: title, data.CreateChangedSolutionCascading); return new MyCodeAction(title: title, data.CreateChangedSolutionCascading);
})); }));
var aMethod = codeFixData.First().Method; var aMethod = codeFixData.First().Method;
var nestedNonCascadingTitle = GetCodeFixTitle(FeaturesResources.Add_parameter_to_0, aMethod, false); var nestedNonCascadingTitle = GetCodeFixTitle(FeaturesResources.Add_parameter_to_0, aMethod, includeParameters: false);
builder.Add(new CodeAction.CodeActionWithNestedActions(nestedNonCascadingTitle, nonCascadingActions, isInlinable: false)); builder.Add(new CodeAction.CodeActionWithNestedActions(nestedNonCascadingTitle, nonCascadingActions, isInlinable: false));
if (cascadingActions.Length > 0) if (cascadingActions.Length > 0)
{ {
var nestedCascadingTitle = GetCodeFixTitle(FeaturesResources.Add_parameter_to_0_and_overrides_implementations, aMethod, false); var nestedCascadingTitle = GetCodeFixTitle(FeaturesResources.Add_parameter_to_0_and_overrides_implementations,
aMethod, includeParameters: false);
builder.Add(new CodeAction.CodeActionWithNestedActions(nestedCascadingTitle, cascadingActions, isInlinable: false)); builder.Add(new CodeAction.CodeActionWithNestedActions(nestedCascadingTitle, cascadingActions, isInlinable: false));
} }
return builder.ToImmutable(); return builder.ToImmutableAndFree();
} }
} }
private ImmutableArray<CodeFixData> PrepareCreationOfCodeActions(Document document, SeparatedSyntaxList<TArgumentSyntax> arguments, ImmutableArray<ArgumentInsertPositionData<TArgumentSyntax>> methodsAndArgumentsToAdd) private ImmutableArray<CodeFixData> PrepareCreationOfCodeActions(
Document document,
SeparatedSyntaxList<TArgumentSyntax> arguments,
ImmutableArray<ArgumentInsertPositionData<TArgumentSyntax>> methodsAndArgumentsToAdd)
{ {
var builder = ImmutableArray.CreateBuilder<CodeFixData>(methodsAndArgumentsToAdd.Length); var builder = ArrayBuilder<CodeFixData>.GetInstance(methodsAndArgumentsToAdd.Length);
// Order by the furthest argument index to the nearest argument index. The ones with // Order by the furthest argument index to the nearest argument index. The ones with
// larger argument indexes mean that we matched more earlier arguments (and thus are // larger argument indexes mean that we matched more earlier arguments (and thus are
...@@ -286,7 +292,7 @@ private ImmutableArray<CodeFixData> PrepareCreationOfCodeActions(Document docume ...@@ -286,7 +292,7 @@ private ImmutableArray<CodeFixData> PrepareCreationOfCodeActions(Document docume
builder.Add(codeFixData); builder.Add(codeFixData);
} }
return builder.ToImmutable(); return builder.ToImmutableAndFree();
} }
/// <summary> /// <summary>
...@@ -422,8 +428,8 @@ private static string GetCodeFixTitle(string resourceString, IMethodSymbol metho ...@@ -422,8 +428,8 @@ private static string GetCodeFixTitle(string resourceString, IMethodSymbol metho
AddParameter( AddParameter(
syntaxFacts, editor, methodNode, argument, syntaxFacts, editor, methodNode, argument,
insertionIndex, parameterDeclaration, cancellationToken); insertionIndex, parameterDeclaration, cancellationToken);
} }
var newRoot = editor.GetChangedRoot(); var newRoot = editor.GetChangedRoot();
solution = solution.WithDocumentSyntaxRoot(document.Id, newRoot); solution = solution.WithDocumentSyntaxRoot(document.Id, newRoot);
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册