Пример #1
0
            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());
            }
Пример #3
0
        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());
        }
Пример #4
0
            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());
            }