예제 #1
0
        public ImmutableArray <int> GetMethodParameterLines(IWorkSession session, int lineInMethod, int columnInMethod)
        {
            var declaration = RoslynAdapterHelper.FindSyntaxNodeInSession(session, lineInMethod, columnInMethod)
                              ?.AncestorsAndSelf()
                              .OfType <MemberDeclarationSyntax>()
                              .FirstOrDefault();

            if (!(declaration is BaseMethodDeclarationSyntax method))
            {
                return(ImmutableArray <int> .Empty);
            }

            var parameters = method.ParameterList.Parameters;
            var results    = new int[parameters.Count];

            for (int i = 0; i < parameters.Count; i++)
            {
                results[i] = parameters[i].GetLocation().GetLineSpan().StartLinePosition.Line + 1;
            }
            return(ImmutableArray.Create(results));
        }
예제 #2
0
        public ImmutableArray <string?> GetCallArgumentIdentifiers(IWorkSession session, int callStartLine, int callStartColumn)
        {
            var call = RoslynAdapterHelper.FindSyntaxNodeInSession(session, callStartLine, callStartColumn) as InvocationExpressionSyntax;

            if (call == null)
            {
                return(ImmutableArray <string?> .Empty);
            }

            var arguments = call.ArgumentList.Arguments;

            if (arguments.Count == 0)
            {
                return(ImmutableArray <string?> .Empty);
            }

            var results = new string?[arguments.Count];

            for (var i = 0; i < arguments.Count; i++)
            {
                results[i] = (arguments[i].GetExpression() is IdentifierNameSyntax n) ? n.Identifier.ValueText : null;
            }
            return(ImmutableArray.Create(results));
        }