public void Named(int index, string expected) { var syntaxTree = CSharpSyntaxTree.ParseText( @" namespace RoslynSandbox { namespace RoslynSandbox { internal class Foo { public void Bar() { Meh(v2: 2, v1: 1, v3: 3); } internal void Meh(int v1, int v2, int v3) { } } } }"); var argument = syntaxTree.FindInvocation("Meh(v2: 2, v1: 1, v3: 3)") .ArgumentList.Arguments[index]; var method = syntaxTree.FindMethodDeclaration("internal void Meh(int v1, int v2, int v3)"); Assert.AreEqual(true, BaseMethodDeclarationSyntaxExt.TryFindParameter(method, argument, out var parameter)); Assert.AreEqual(expected, parameter.ToString()); }
public void Params(int index, string expected) { var syntaxTree = CSharpSyntaxTree.ParseText( @" namespace RoslynSandbox { namespace RoslynSandbox { internal class Foo { public void Bar() { Meh(1, 2, 3); } internal void Meh(params int[] values) { } } } }"); var argument = syntaxTree.FindInvocation("Meh(1, 2, 3)") .ArgumentList.Arguments[index]; var method = syntaxTree.FindBestMatch <MethodDeclarationSyntax>("internal void Meh(params int[] values)"); Assert.AreEqual( true, BaseMethodDeclarationSyntaxExt.TryGetMatchingParameter( method, argument, out var parameter)); Assert.AreEqual(expected, parameter.ToString()); }
public static void Ordinal(int index, string expected) { var syntaxTree = CSharpSyntaxTree.ParseText( @" namespace N { namespace N { internal class C { public void M() { Meh(1, 2, 3); } internal void Meh(int v1, int v2, int v3) { } } } }"); var argument = syntaxTree.FindInvocation("Meh(1, 2, 3)") .ArgumentList.Arguments[index]; var method = syntaxTree.FindMethodDeclaration("internal void Meh(int v1, int v2, int v3)"); Assert.AreEqual(true, BaseMethodDeclarationSyntaxExt.TryFindParameter(method, argument, out var parameter)); Assert.AreEqual(expected, parameter.ToString()); }
public void NamedAtOrdinalPositions(int index, string expected) { var syntaxTree = CSharpSyntaxTree.ParseText( @" namespace RoslynSandbox { namespace RoslynSandbox { internal class Foo { public void Bar() { Meh(v1: 1, v2: 2, v3: 3); } internal void Meh(int v1, int v2, int v3) { } } } }"); var argument = syntaxTree.BestMatch <InvocationExpressionSyntax>("Meh(v1: 1, v2: 2, v3: 3)") .ArgumentList.Arguments[index]; var method = syntaxTree.BestMatch <MethodDeclarationSyntax>("internal void Meh(int v1, int v2, int v3)"); Assert.AreEqual( true, BaseMethodDeclarationSyntaxExt.TryGetMatchingParameter( method, argument, out ParameterSyntax parameter)); Assert.AreEqual(expected, parameter.ToString()); }