未验证 提交 76bd280f 编写于 作者: S Sam Harwell 提交者: GitHub

Merge pull request #23300 from alrz/arg-escape

Escape keyword argument names in 'add argument name' refactoring
......@@ -417,6 +417,38 @@ class C
void M(int[] arr) => arr.Zip(arr, (p1, p2) => ([||]p1, p2));
}
");
}
}
[WorkItem(23269, "https://github.com/dotnet/roslyn/issues/23269")]
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsUseNamedArguments)]
public async Task TestCharacterEscape1()
{
await TestWithCSharp7(
@"class C
{
void M(int @default, int @params) => M([||]1, 2);
}",
@"class C
{
void M(int @default, int @params) => M(@default: 1, @params: 2);
}");
}
[WorkItem(23269, "https://github.com/dotnet/roslyn/issues/23269")]
[Fact, Trait(Traits.Feature, Traits.Features.CodeActionsUseNamedArguments)]
public async Task TestCharacterEscape2()
{
await TestWithCSharp7(
@"[C([||]1, 2)]
class C : System.Attribute
{
public C(int @default, int @params) {}
}",
@"[C(@default: 1, @params: 2)]
class C : System.Attribute
{
public C(int @default, int @params) {}
}");
}
}
}
......@@ -335,6 +335,22 @@ Class C
Sub M(arr as Integer())
arr.Zip(arr, Function(p1, p2) ([||]p1, p2))
End Sub
End Class")
End Function
<WorkItem(23269, "https://github.com/dotnet/roslyn/issues/23269")>
<Fact, Trait(Traits.Feature, Traits.Features.CodeActionsUseNamedArguments)>
Public Async Function TestCharacterEscape() As Task
Await TestInRegularAndScriptAsync(
"Class C
Sub M([If] As Integer, [For] As Integer)
M([If][||], [For])
End Sub
End Class",
"Class C
Sub M([If] As Integer, [For] As Integer)
M([If]:=[If], [For]:=[For])
End Sub
End Class")
End Function
End Class
......
......@@ -46,7 +46,7 @@ protected override SeparatedSyntaxList<ArgumentSyntax> GetArguments(BaseArgument
=> argumentList.WithArguments(SyntaxFactory.SeparatedList(namedArguments, separators));
protected override ArgumentSyntax WithName(ArgumentSyntax argument, string name)
=> argument.WithNameColon(SyntaxFactory.NameColon(name));
=> argument.WithNameColon(SyntaxFactory.NameColon(name.ToIdentifierName()));
}
private class AttributeArgumentAnalyzer :
......@@ -63,7 +63,7 @@ protected override SeparatedSyntaxList<AttributeArgumentSyntax> GetArguments(Att
=> argumentList.WithArguments(SyntaxFactory.SeparatedList(namedArguments, separators));
protected override AttributeArgumentSyntax WithName(AttributeArgumentSyntax argument, string name)
=> argument.WithNameColon(SyntaxFactory.NameColon(name));
=> argument.WithNameColon(SyntaxFactory.NameColon(name.ToIdentifierName()));
}
public CSharpUseNamedArgumentsCodeRefactoringProvider()
......
......@@ -4,6 +4,7 @@ Imports System.Collections.Immutable
Imports System.Composition
Imports Microsoft.CodeAnalysis.CodeRefactorings
Imports Microsoft.CodeAnalysis.UseNamedArguments
Imports Microsoft.CodeAnalysis.VisualBasic.Extensions
Imports Microsoft.CodeAnalysis.VisualBasic.Syntax
Namespace Microsoft.CodeAnalysis.VisualBasic.UseNamedArguments
......@@ -32,8 +33,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.UseNamedArguments
End Function
Protected Overrides Function WithName(argument As SimpleArgumentSyntax, name As String) As SimpleArgumentSyntax
Return argument.WithNameColonEquals(
SyntaxFactory.NameColonEquals(SyntaxFactory.IdentifierName(name)))
Return argument.WithNameColonEquals(SyntaxFactory.NameColonEquals(name.ToIdentifierName()))
End Function
Protected Overrides Function WithArguments(argumentList As ArgumentListSyntax, namedArguments As IEnumerable(Of ArgumentSyntax), separators As IEnumerable(Of SyntaxToken)) As ArgumentListSyntax
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册