提交 42da9bd8 编写于 作者: D Dustin Campbell

Merge pull request #6016 from DustinCampbell/issue-6002

Fix issue with code model eventing and VB type characters on parameter names
......@@ -816,7 +816,7 @@ public override string GetName(SyntaxNode node)
return ((EventDeclarationSyntax)node).ExplicitInterfaceSpecifier?.ToString() +
((EventDeclarationSyntax)node).Identifier.ToString();
case SyntaxKind.Parameter:
return ((ParameterSyntax)node).Identifier.ToString();
return GetParameterName(node);
case SyntaxKind.NamespaceDeclaration:
return ((NamespaceDeclarationSyntax)node).Name.ToString();
case SyntaxKind.OperatorDeclaration:
......
......@@ -1817,6 +1817,50 @@ End Class
Unknown("i"))
End Sub
<ConditionalWpfFact(GetType(x86)), Trait(Traits.Feature, Traits.Features.CodeModelEvents)>
Public Sub TestParameter_ChangeTypeToTypeCharacter()
Dim code =
<Code>
Class C
Sub M(b As Boolean)
End Sub
End Class
</Code>
Dim changedCode =
<Code>
Class C
Sub M(b%)
End Sub
End Class
</Code>
Test(code, changedCode,
TypeRefChange("b"))
End Sub
<ConditionalWpfFact(GetType(x86)), Trait(Traits.Feature, Traits.Features.CodeModelEvents)>
Public Sub TestParameter_ChangeTypeFromTypeCharacter()
Dim code =
<Code>
Class C
Sub M(b%)
End Sub
End Class
</Code>
Dim changedCode =
<Code>
Class C
Sub M(b As Boolean)
End Sub
End Class
</Code>
Test(code, changedCode,
TypeRefChange("b"))
End Sub
#End Region
#Region "Attribute Arguments"
......
......@@ -894,7 +894,7 @@ Namespace Microsoft.VisualStudio.LanguageServices.VisualBasic.CodeModel
Dim typesChange As CodeModelEventType = 0
Dim valuesChange As CodeModelEventType = 0
If Not StringComparer.OrdinalIgnoreCase.Equals(oldParameter.Identifier.ToString(), newParameter.Identifier.ToString()) Then
If Not StringComparer.OrdinalIgnoreCase.Equals(Me.CodeModelService.GetParameterName(oldParameter), Me.CodeModelService.GetParameterName(newParameter)) Then
namesChange = CodeModelEventType.Rename
hasChanges = True
End If
......
......@@ -899,7 +899,7 @@ Namespace Microsoft.VisualStudio.LanguageServices.VisualBasic.CodeModel
Case SyntaxKind.OmittedArgument
Return String.Empty
Case SyntaxKind.Parameter
Return DirectCast(node, ParameterSyntax).Identifier.Identifier.ToString()
Return GetParameterName(node)
Case SyntaxKind.OptionStatement
Return GetNormalizedName(node)
Case SyntaxKind.SimpleImportsClause
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册