/// <summary> /// Gets a value indicating whether the <paramref name="token"/> is last in line. /// </summary> /// <param name="token">The token to process.</param> /// <returns>true if token is last in line, otherwise false.</returns> internal static bool IsLastInLine(this SyntaxToken token) { var fullLineSpan = token.SyntaxTree.GetLineSpan(token.FullSpan); if (token.SyntaxTree == null || fullLineSpan.EndLinePosition.Character == 0) { return(true); } var tokenLineSpan = token.SyntaxTree.GetLineSpan(token.Span); if (tokenLineSpan.EndLinePosition.Line != fullLineSpan.EndLinePosition.Line || token.SyntaxTree.Length == token.FullSpan.End) { return(true); } // Use the slow path because we cant be sure if a multi line trivia is following this // token. var nextToken = token.GetNextToken(); return(nextToken.IsKind(SyntaxKind.None) || token.GetEndLine() < nextToken.GetLine()); }
/// <summary> /// Gets a value indicating whether the <paramref name="token"/> is last in line. /// </summary> /// <param name="token">The token to process.</param> /// <returns>true if token is last in line, otherwise false.</returns> internal static bool IsLastInLine(this SyntaxToken token) { SyntaxToken nextToken = token.GetNextToken(); return(nextToken.IsKind(SyntaxKind.None) || token.GetEndLine() < nextToken.GetLine()); }
/// <summary> /// Gets a value indicating whether the <paramref name="token"/> is first in line. /// </summary> /// <param name="token">The token to process.</param> /// <returns>true if token is first in line, otherwise false.</returns> internal static bool IsFirstInLine(this SyntaxToken token) { SyntaxToken previousToken = token.GetPreviousToken(); return(previousToken.IsKind(SyntaxKind.None) || previousToken.GetEndLine() < token.GetLine()); }