提交 9b9b671b 编写于 作者: I Ivan Basov

existing change signature service tests fixed

上级 9732132a
......@@ -30,14 +30,14 @@ End Class]]></Text>.NormalizedValue()
End Function
<WpfFact, Trait(Traits.Feature, Traits.Features.ChangeSignature)>
Public Async Function TestReorderMethodParameters_InsufficientParameters_None() As Task
Public Async Function TestReorderMethodParameters_NoExistingParameters() As Task
Dim markup = <Text><![CDATA[
Class C
Sub $$M()
End Sub
End Class]]></Text>.NormalizedValue()
Await TestChangeSignatureViaCommandAsync(LanguageNames.VisualBasic, markup, expectedSuccess:=False, expectedErrorText:=FeaturesResources.This_signature_does_not_contain_parameters_that_can_be_changed)
Await TestChangeSignatureViaCommandAsync(LanguageNames.VisualBasic, markup, expectedSuccess:=True)
End Function
<WpfFact, Trait(Traits.Feature, Traits.Features.ChangeSignature)>
......
......@@ -448,9 +448,12 @@ private SyntaxNode GetNodeContainingTargetNode(SyntaxNode matchingNode)
return null;
}
private SeparatedSyntaxList<ArgumentSyntax> AddNewArgumentsToList(SeparatedSyntaxList<ArgumentSyntax> newArguments, SignatureChange signaturePermutation)
private SeparatedSyntaxList<ArgumentSyntax> AddNewArgumentsToList(
SeparatedSyntaxList<ArgumentSyntax> newArguments,
SignatureChange signaturePermutation)
{
List<ArgumentSyntax> fullList = new List<ArgumentSyntax>();
List<SyntaxToken> separators = new List<SyntaxToken>();
var updatedParameters = signaturePermutation.UpdatedConfiguration.ToListOfParameters();
......@@ -468,6 +471,7 @@ private SeparatedSyntaxList<ArgumentSyntax> AddNewArgumentsToList(SeparatedSynta
seenNameEquals ? SyntaxFactory.NameColon(addedParameter.Name) : default,
refKindKeyword: default,
expression: SyntaxFactory.ParseExpression(addedParameter.CallsiteValue)));
separators.Add(SyntaxFactory.Token(SyntaxKind.CommaToken));
}
}
else
......@@ -479,12 +483,28 @@ private SeparatedSyntaxList<ArgumentSyntax> AddNewArgumentsToList(SeparatedSynta
seenNameEquals = true;
}
if (indexInExistingList < newArguments.SeparatorCount)
{
separators.Add(newArguments.GetSeparator(indexInExistingList));
}
fullList.Add(newArguments[indexInExistingList++]);
}
}
}
return SyntaxFactory.SeparatedList(fullList);
// Add the rest of existing parameters, e.g. from the params argument.
while (indexInExistingList < newArguments.Count)
{
if (indexInExistingList < newArguments.SeparatorCount)
{
separators.Add(newArguments.GetSeparator(indexInExistingList));
}
fullList.Add(newArguments[indexInExistingList++]);
}
return SyntaxFactory.SeparatedList(fullList, separators);
}
private SeparatedSyntaxList<T> PermuteDeclaration<T>(SeparatedSyntaxList<T> list, SignatureChange updatedSignature) where T : SyntaxNode
......
......@@ -10,6 +10,7 @@ Imports Microsoft.CodeAnalysis.Formatting
Imports Microsoft.CodeAnalysis.Host.Mef
Imports Microsoft.CodeAnalysis.PooledObjects
Imports System.Composition
Imports Microsoft.CodeAnalysis.Utilities
Namespace Microsoft.CodeAnalysis.VisualBasic.ChangeSignature
<ExportLanguageService(GetType(AbstractChangeSignatureService), LanguageNames.VisualBasic), [Shared]>
......@@ -420,7 +421,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.ChangeSignature
End Function
Private Function PermuteDeclaration(Of T As SyntaxNode)(list As SeparatedSyntaxList(Of T), updatedSignature As SignatureChange) As SeparatedSyntaxList(Of T)
Dim originalParameters = updatedSignature.OriginalConfiguration.ToListOfParameters()
Dim originalParameterSymbols = updatedSignature.OriginalConfiguration.ToListOfParameters().Select(Function(p) p.Symbol).ToArray()
Dim reorderedParameters = updatedSignature.UpdatedConfiguration.ToListOfParameters()
Dim numAddedParameters = 0
......@@ -428,7 +429,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.ChangeSignature
Dim newParameters = New List(Of T)
For index = 0 To reorderedParameters.Count - 1
Dim newParam = reorderedParameters(index)
Dim pos = originalParameters.IndexOf(Function(p) p.Symbol Is newParam.Symbol)
Dim pos = originalParameterSymbols.IndexOf(Function(p) p.Symbol Is newParam.Symbol)
If pos = -1 Then
' Added parameter
......@@ -447,7 +448,6 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.ChangeSignature
' Copy whitespace trivia from original position
param = TransferLeadingWhitespaceTrivia(param, list(index - numAddedParameters))
newParameters.Add(param)
End If
Next
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册