提交 7e46750f 编写于 作者: A Amaury Levé

Add xml documentation for IsKind and Kind extension methods

上级 bbe84f5b
...@@ -6,29 +6,52 @@ ...@@ -6,29 +6,52 @@
using System.Threading; using System.Threading;
using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.CSharp;
using Microsoft.CodeAnalysis.CSharp.Syntax; using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.CodeAnalysis.CSharp.Symbols;
using Microsoft.CodeAnalysis.Syntax;
using Microsoft.CodeAnalysis.Operations; using Microsoft.CodeAnalysis.Operations;
using Microsoft.CodeAnalysis.Syntax;
namespace Microsoft.CodeAnalysis namespace Microsoft.CodeAnalysis
{ {
public static class CSharpExtensions public static class CSharpExtensions
{ {
/// <summary>
/// Determines if <see cref="SyntaxToken"/> is of a specified kind.
/// </summary>
/// <param name="token">The source token.</param>
/// <param name="kind">The syntax kind to test for.</param>
/// <returns><c>true</c> if token is of specified kind; <c>false</c> otherwise.</returns>
public static bool IsKind(this SyntaxToken token, SyntaxKind kind) public static bool IsKind(this SyntaxToken token, SyntaxKind kind)
{ {
return token.RawKind == (int)kind; return token.RawKind == (int)kind;
} }
/// <summary>
/// Determines if <see cref="SyntaxTrivia"/> is of a specified kind.
/// </summary>
/// <param name="trivia">The source trivia.</param>
/// <param name="kind">The syntax kind to test for.</param>
/// <returns><c>true</c> if trivia is of specified kind; <c>false</c> otherwise.</returns>
public static bool IsKind(this SyntaxTrivia trivia, SyntaxKind kind) public static bool IsKind(this SyntaxTrivia trivia, SyntaxKind kind)
{ {
return trivia.RawKind == (int)kind; return trivia.RawKind == (int)kind;
} }
/// <summary>
/// Determines if <see cref="SyntaxNode"/> is of a specified kind.
/// </summary>
/// <param name="node">The source node.</param>
/// <param name="kind">The syntax kind to test for.</param>
/// <returns><c>true</c> if node is of specified kind; <c>false</c> otherwise.</returns>
public static bool IsKind(this SyntaxNode node, SyntaxKind kind) public static bool IsKind(this SyntaxNode node, SyntaxKind kind)
{ {
return node?.RawKind == (int)kind; return node?.RawKind == (int)kind;
} }
/// <summary>
/// Determines if <see cref="SyntaxNodeOrToken"/> is of a specified kind.
/// </summary>
/// <param name="nodeOrToken">The source node or token.</param>
/// <param name="kind">The syntax kind to test for.</param>
/// <returns><c>true</c> if node or token is of specified kind; <c>false</c> otherwise.</returns>
public static bool IsKind(this SyntaxNodeOrToken nodeOrToken, SyntaxKind kind) public static bool IsKind(this SyntaxNodeOrToken nodeOrToken, SyntaxKind kind)
{ {
return nodeOrToken.RawKind == (int)kind; return nodeOrToken.RawKind == (int)kind;
...@@ -139,6 +162,11 @@ namespace Microsoft.CodeAnalysis.CSharp ...@@ -139,6 +162,11 @@ namespace Microsoft.CodeAnalysis.CSharp
{ {
public static class CSharpExtensions public static class CSharpExtensions
{ {
/// <summary>
/// Determines if the given raw kind value belongs to the C# <see cref="SyntaxKind"/> enumeration.
/// </summary>
/// <param name="rawKind">The raw value to test.</param>
/// <returns><c>true</c> when the raw value belongs to the C# syntax kind; <c>false</c> otherwise.</returns>
internal static bool IsCSharpKind(int rawKind) internal static bool IsCSharpKind(int rawKind)
{ {
const int FirstVisualBasicKind = (int)SyntaxKind.List + 1; const int FirstVisualBasicKind = (int)SyntaxKind.List + 1;
...@@ -148,24 +176,36 @@ internal static bool IsCSharpKind(int rawKind) ...@@ -148,24 +176,36 @@ internal static bool IsCSharpKind(int rawKind)
return unchecked((uint)(rawKind - FirstVisualBasicKind)) > (FirstCSharpKind - 1 - FirstVisualBasicKind); return unchecked((uint)(rawKind - FirstVisualBasicKind)) > (FirstCSharpKind - 1 - FirstVisualBasicKind);
} }
/// <summary>
/// Returns <see cref="SyntaxKind"/> for <see cref="SyntaxToken"/> from <see cref="SyntaxToken.RawKind"/> property.
/// </summary>
public static SyntaxKind Kind(this SyntaxToken token) public static SyntaxKind Kind(this SyntaxToken token)
{ {
var rawKind = token.RawKind; var rawKind = token.RawKind;
return IsCSharpKind(rawKind) ? (SyntaxKind)rawKind : SyntaxKind.None; return IsCSharpKind(rawKind) ? (SyntaxKind)rawKind : SyntaxKind.None;
} }
/// <summary>
/// Returns <see cref="SyntaxKind"/> for <see cref="SyntaxTrivia"/> from <see cref="SyntaxTrivia.RawKind"/> property.
/// </summary>
public static SyntaxKind Kind(this SyntaxTrivia trivia) public static SyntaxKind Kind(this SyntaxTrivia trivia)
{ {
var rawKind = trivia.RawKind; var rawKind = trivia.RawKind;
return IsCSharpKind(rawKind) ? (SyntaxKind)rawKind : SyntaxKind.None; return IsCSharpKind(rawKind) ? (SyntaxKind)rawKind : SyntaxKind.None;
} }
/// <summary>
/// Returns <see cref="SyntaxKind"/> for <see cref="SyntaxNode"/> from <see cref="SyntaxNode.RawKind"/> property.
/// </summary>
public static SyntaxKind Kind(this SyntaxNode node) public static SyntaxKind Kind(this SyntaxNode node)
{ {
var rawKind = node.RawKind; var rawKind = node.RawKind;
return IsCSharpKind(rawKind) ? (SyntaxKind)rawKind : SyntaxKind.None; return IsCSharpKind(rawKind) ? (SyntaxKind)rawKind : SyntaxKind.None;
} }
/// <summary>
/// Returns <see cref="SyntaxKind"/> for <see cref="SyntaxNode"/> from <see cref="SyntaxNodeOrToken.RawKind"/> property.
/// </summary>
public static SyntaxKind Kind(this SyntaxNodeOrToken nodeOrToken) public static SyntaxKind Kind(this SyntaxNodeOrToken nodeOrToken)
{ {
var rawKind = nodeOrToken.RawKind; var rawKind = nodeOrToken.RawKind;
......
...@@ -2,8 +2,6 @@ ...@@ -2,8 +2,6 @@
Imports System.Collections.Immutable Imports System.Collections.Immutable
Imports System.Collections.ObjectModel Imports System.Collections.ObjectModel
Imports System.ComponentModel
Imports System.IO
Imports System.Runtime.CompilerServices Imports System.Runtime.CompilerServices
Imports System.Runtime.InteropServices Imports System.Runtime.InteropServices
Imports System.Threading Imports System.Threading
...@@ -20,42 +18,44 @@ Namespace Microsoft.CodeAnalysis ...@@ -20,42 +18,44 @@ Namespace Microsoft.CodeAnalysis
Public Module VisualBasicExtensions Public Module VisualBasicExtensions
''' <summary> ''' <summary>
''' Determines if SyntaxTrivia is a specified kind. ''' Determines if <see cref="SyntaxTrivia"/> is of a specified kind.
''' </summary> ''' </summary>
'''<param name="trivia">The Source SyntaxTrivia.</param> ''' <param name="trivia">The source trivia.</param>
''' <param name="kind">The SyntaxKind to test for.</param> ''' <param name="kind">The syntax kind to test for.</param>
''' <returns><c>true</c> if triviq is of specified kind; <c>false</c> otherwise.</returns>
<Extension> <Extension>
Public Function IsKind(trivia As SyntaxTrivia, kind As SyntaxKind) As Boolean Public Function IsKind(trivia As SyntaxTrivia, kind As SyntaxKind) As Boolean
Return trivia.RawKind = kind Return trivia.RawKind = kind
End Function End Function
''' <summary> ''' <summary>
''' Determines if SyntaxToken is a specified kind. ''' Determines if <see cref="SyntaxToken"/> is of a specified kind.
''' </summary> ''' </summary>
'''<param name="token">The Source SyntaxToken.</param> ''' <param name="token">The source token.</param>
''' <param name="kind">The SyntaxKind to test for.</param> ''' <param name="kind">The syntax kind to test for.</param>
''' <returns><c>true</c> if token is of specified kind; <c>false</c> otherwise.</returns>
<Extension> <Extension>
Public Function IsKind(token As SyntaxToken, kind As SyntaxKind) As Boolean Public Function IsKind(token As SyntaxToken, kind As SyntaxKind) As Boolean
Return token.RawKind = kind Return token.RawKind = kind
End Function End Function
''' <summary> ''' <summary>
''' Determines if SyntaxNode is a specified kind. ''' Determines if <see cref="SyntaxNode"/> is of a specified kind.
''' </summary> ''' </summary>
''' <param name="node">The Source SyntaxNode.</param> ''' <param name="node">The Source node.</param>
''' <param name="kind">The SyntaxKind to test for.</param> ''' <param name="kind">The syntax kind to test for.</param>
''' <returns>A boolean value if node is of specified kind; otherwise false.</returns> ''' <returns><c>true</c> if node is of specified kind; <c>false</c> otherwise.</returns>
<Extension> <Extension>
Public Function IsKind(node As SyntaxNode, kind As SyntaxKind) As Boolean Public Function IsKind(node As SyntaxNode, kind As SyntaxKind) As Boolean
Return node IsNot Nothing AndAlso node.RawKind = kind Return node IsNot Nothing AndAlso node.RawKind = kind
End Function End Function
''' <summary> ''' <summary>
''' Determines if a SyntaxNodeOrToken is a specified kind. ''' Determines if <see cref="SyntaxNodeOrToken"/> is of a specified kind.
''' </summary> ''' </summary>
''' <param name="nodeOrToken">The source SyntaxNodeOrToken.</param> ''' <param name="nodeOrToken">The source node or token.</param>
''' <param name="kind">The SyntaxKind to test for.</param> ''' <param name="kind">The syntax kind to test for.</param>
''' <returns>A boolean value if nodeOrToken is of specified kind; otherwise false.</returns> ''' <returns><c>true</c> if node or token is of specified kind; <c>false</c> otherwise.</returns>
<Extension> <Extension>
Public Function IsKind(nodeOrToken As SyntaxNodeOrToken, kind As SyntaxKind) As Boolean Public Function IsKind(nodeOrToken As SyntaxNodeOrToken, kind As SyntaxKind) As Boolean
Return nodeOrToken.RawKind = kind Return nodeOrToken.RawKind = kind
...@@ -164,6 +164,11 @@ End Namespace ...@@ -164,6 +164,11 @@ End Namespace
Namespace Microsoft.CodeAnalysis.VisualBasic Namespace Microsoft.CodeAnalysis.VisualBasic
Public Module VisualBasicExtensions Public Module VisualBasicExtensions
''' <summary>
''' Determines if the given raw kind value belongs to the Visual Basic <see cref="SyntaxKind"/> enumeration.
''' </summary>
''' <param name="rawKind">The raw value to test.</param>
''' <returns><c>true</c> when the raw value belongs to the Visual Basic syntax kind; <c>false</c> otherwise.</returns>
Friend Function IsVisualBasicKind(rawKind As Integer) As Boolean Friend Function IsVisualBasicKind(rawKind As Integer) As Boolean
Const LastPossibleVisualBasicKind As Integer = 8192 Const LastPossibleVisualBasicKind As Integer = 8192
...@@ -171,7 +176,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic ...@@ -171,7 +176,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function End Function
''' <summary> ''' <summary>
''' Returns <see cref="SyntaxKind"/> for <see cref="SyntaxTrivia"/> nodes. ''' Returns <see cref="SyntaxKind"/> for <see cref="SyntaxTrivia"/> from <see cref="SyntaxTrivia.RawKind"/> property.
''' </summary> ''' </summary>
<Extension> <Extension>
Public Function Kind(trivia As SyntaxTrivia) As SyntaxKind Public Function Kind(trivia As SyntaxTrivia) As SyntaxKind
...@@ -189,7 +194,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic ...@@ -189,7 +194,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function End Function
''' <summary> ''' <summary>
''' Returns <see cref="SyntaxKind"/> for <see cref="SyntaxNode"/> from <see cref="SyntaxToken.RawKind"/> property. ''' Returns <see cref="SyntaxKind"/> for <see cref="SyntaxNode"/> from <see cref="SyntaxNode.RawKind"/> property.
''' </summary> ''' </summary>
<Extension> <Extension>
Public Function Kind(node As SyntaxNode) As SyntaxKind Public Function Kind(node As SyntaxNode) As SyntaxKind
...@@ -198,7 +203,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic ...@@ -198,7 +203,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Function End Function
''' <summary> ''' <summary>
''' Returns <see cref="SyntaxKind"/> for <see cref="SyntaxNodeOrToken"/> from <see cref="SyntaxToken.RawKind"/> property. ''' Returns <see cref="SyntaxKind"/> for <see cref="SyntaxNodeOrToken"/> from <see cref="SyntaxNodeOrToken.RawKind"/> property.
''' </summary> ''' </summary>
<Extension> <Extension>
Public Function Kind(nodeOrToken As SyntaxNodeOrToken) As SyntaxKind Public Function Kind(nodeOrToken As SyntaxNodeOrToken) As SyntaxKind
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册