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.FindBestMatch <MethodDeclarationSyntax>("internal void Meh(int v1, int v2, int v3)");

                Assert.AreEqual(
                    true,
                    BaseMethodDeclarationSyntaxExt.TryGetMatchingParameter(
                        method,
                        argument,
                        out var parameter));
                Assert.AreEqual(expected, parameter.ToString());
            }
Пример #2
0
            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.FindMethodDeclaration("internal void Meh(params int[] values)");

                Assert.AreEqual(
                    true,
                    BaseMethodDeclarationSyntaxExt.TryGetMatchingParameter(
                        method,
                        argument,
                        out var parameter));
                Assert.AreEqual(expected, parameter.ToString());
            }