Exemplo n.º 1
0
        public static IEnumerable <SyntaxToken> TokensOfTheSameLine(this SyntaxToken token)
        {
            // instead of going through the ALL tokens go only through the tokens from the same parent
            // and within the same line

            var lineNumber = token.GetLineNumber();

            var tokens = token.SyntaxTree.GetRoot().DescendantTokens()
                         .Where(x => x.GetLineNumber() == lineNumber)
                         .ToArray();

            var parent = token.Parent;

            while (parent != null)
            {
                parent = parent.Parent;
                if (parent.GetFirstToken().GetLineNumber() != lineNumber)
                {
                    break;
                }
            }

            return(parent.DescendantTokens()
                   .SkipWhile(x => x.GetLineNumber() != lineNumber)
                   .TakeWhile(x => x.GetLineNumber() == lineNumber)
                   .ToArray());
        }
Exemplo n.º 2
0
 private static bool TryGetPreviousTokenInSameLine(SyntaxToken token, out SyntaxToken previousToken)
 {
     previousToken = token.GetPreviousToken();
     return(previousToken.GetLineNumber() == token.GetLineNumber());
 }