提交 b49a7117 编写于 作者: D David Poeschl

Merge pull request #2361 from dpoeschl/RenameStringsInInterpolations

Rename in interpolated strings
......@@ -313,7 +313,7 @@ public partial class C { }
<Fact>
<Trait(Traits.Feature, Traits.Features.Rename)>
<WorkItem(700923), WorkItem(700925)>
<WorkItem(700923), WorkItem(700925), WorkItem(1486, "https://github.com/dotnet/roslyn/issues/1486")>
Public Sub RenameInCommentsAndStringsCSharp()
Dim workspace = CreateWorkspaceWithWaiter(
<Workspace>
......@@ -330,6 +330,7 @@ class Program
[|foo|]();
var a = "foo";
var b = $"{1}foo{2}";
}
public void foo(int i)
......@@ -358,6 +359,7 @@ class Program
[|foo|]();
var a = "foo";
var b = $"{1}foo{2}";
}
public void [|foo|](int i)
......@@ -386,6 +388,7 @@ class Program
[|foo|]();
var a = "[|foo|]";
var b = $"{1}[|foo|]{2}";
}
public void foo(int i)
......@@ -402,7 +405,7 @@ class Program
<Fact>
<Trait(Traits.Feature, Traits.Features.Rename)>
<WorkItem(700923), WorkItem(700925)>
<WorkItem(700923), WorkItem(700925), WorkItem(1486, "https://github.com/dotnet/roslyn/issues/1486")>
Public Sub RenameInCommentsAndStringsVisualBasic()
Dim workspace = CreateWorkspaceWithWaiter(
<Workspace>
......@@ -417,6 +420,7 @@ Class Program
[|foo|]()
Dim a = "foo"
Dim b = $"{1}foo{2}"
End Sub
Public Sub foo(i As Integer)
......@@ -443,6 +447,7 @@ Class Program
[|foo|]()
Dim a = "foo"
Dim b = $"{1}foo{2}"
End Sub
Public Sub [|foo|](i As Integer)
......@@ -469,6 +474,7 @@ Class Program
[|foo|]()
Dim a = "[|foo|]"
Dim b = $"{1}[|foo|]{2}"
End Sub
Public Sub foo(i As Integer)
......
......@@ -462,7 +462,7 @@ public bool IsLiteral(SyntaxToken token)
public bool IsStringLiteral(SyntaxToken token)
{
return token.IsKind(SyntaxKind.StringLiteralToken);
return token.IsKind(SyntaxKind.StringLiteralToken, SyntaxKind.InterpolatedStringTextToken);
}
public bool IsTypeNamedVarInVariableOrFieldDeclaration(SyntaxToken token, SyntaxNode parent)
......
......@@ -655,9 +655,17 @@ private SyntaxToken RenameWithinToken(SyntaxToken oldToken, SyntaxToken newToken
return newToken;
}
if (_isRenamingInStrings && newToken.IsKind(SyntaxKind.StringLiteralToken))
if (_isRenamingInStrings)
{
newToken = RenameInStringLiteral(oldToken, newToken, SyntaxFactory.Literal);
if (newToken.IsKind(SyntaxKind.StringLiteralToken))
{
newToken = RenameInStringLiteral(oldToken, newToken, SyntaxFactory.Literal);
}
else if (newToken.IsKind(SyntaxKind.InterpolatedStringTextToken))
{
newToken = RenameInStringLiteral(oldToken, newToken, (leadingTrivia, text, value, trailingTrivia) =>
SyntaxFactory.Token(newToken.LeadingTrivia, SyntaxKind.InterpolatedStringTextToken, text, value, newToken.TrailingTrivia));
}
}
if (_isRenamingInComments)
......
......@@ -407,7 +407,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function
Public Function IsStringLiteral(token As SyntaxToken) As Boolean Implements ISyntaxFactsService.IsStringLiteral
Return CType(token.Kind, SyntaxKind) = SyntaxKind.StringLiteralToken
Return token.IsKind(SyntaxKind.StringLiteralToken, SyntaxKind.InterpolatedStringTextToken)
End Function
Public Function IsBindableToken(token As Microsoft.CodeAnalysis.SyntaxToken) As Boolean Implements ISyntaxFactsService.IsBindableToken
......
......@@ -585,8 +585,12 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Rename
Return newToken
End If
If Me._isRenamingInStrings AndAlso newToken.Kind = SyntaxKind.StringLiteralToken Then
newToken = RenameInStringLiteral(oldToken, newToken, AddressOf SyntaxFactory.StringLiteralToken)
If Me._isRenamingInStrings Then
If newToken.Kind = SyntaxKind.StringLiteralToken Then
newToken = RenameInStringLiteral(oldToken, newToken, AddressOf SyntaxFactory.StringLiteralToken)
ElseIf newToken.Kind = SyntaxKind.InterpolatedStringTextToken Then
newToken = RenameInStringLiteral(oldToken, newToken, AddressOf SyntaxFactory.InterpolatedStringTextToken)
End If
End If
If Me._isRenamingInComments Then
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册