private CommonSyntaxNode GetRootNode(CommonSyntaxNodeOrToken nodeOrToken) { if (nodeOrToken.IsNode) { return(GetRootNode(nodeOrToken.AsNode())); } else { return(GetRootNode(nodeOrToken.AsToken())); } }
// Helpers for populating the treeview. private void AddNodeOrToken(TreeViewItem parentItem, CommonSyntaxNodeOrToken nodeOrToken) { if (nodeOrToken.IsNode) { AddNode(parentItem, nodeOrToken.AsNode()); } else { AddToken(parentItem, nodeOrToken.AsToken()); } }
// Helpers that return the language-sepcific (C# / VB) SyntaxKind of a language-agnostic // CommonSyntaxNode / CommonSyntaxToken / CommonSyntaxTrivia. public static string GetKind(this CommonSyntaxNodeOrToken nodeOrToken, string language) { var kind = string.Empty; if (nodeOrToken.IsNode) { kind = nodeOrToken.AsNode().GetKind(language); } else { kind = nodeOrToken.AsToken().GetKind(language); } return(kind); }
internal SyntaxTransporter(CommonSyntaxNodeOrToken nodeOrToken) { try { var t = (CSharp.SyntaxNodeOrToken)nodeOrToken; SourceLanguage = LanguageNames.CSharp; } catch { var t = (VisualBasic.SyntaxNodeOrToken)nodeOrToken; SourceLanguage = LanguageNames.VisualBasic; } SyntaxStream = new MemoryStream(); var rootNode = GetRootNode(nodeOrToken); if (rootNode != null) { if (SourceLanguage == LanguageNames.CSharp) { var csharpRootNode = (CSharp.SyntaxNode)rootNode; csharpRootNode.SerializeTo(SyntaxStream); } else { var vbRootNode = (VisualBasic.SyntaxNode)rootNode; vbRootNode.SerializeTo(SyntaxStream); } } ItemSpan = nodeOrToken.Span; ItemKind = nodeOrToken.GetKind(SourceLanguage); if (nodeOrToken.IsNode) { ItemCategory = SyntaxCategory.SyntaxNode; } else { ItemCategory = SyntaxCategory.SyntaxToken; } }
/// <summary> /// Gets semantic information, such as type, symbols, and diagnostics, about a node or /// token. /// </summary> /// <param name="semanticModel">The SemanticModel object to get semantic information /// from.</param> /// <param name="nodeOrToken">The node or token to inquire about. If this a token, the parent of the token is /// queried.</param> public static ISemanticInfo GetSemanticInfoInParent(this ISemanticModel semanticModel, CommonSyntaxNodeOrToken nodeOrToken) { return(nodeOrToken.IsToken ? semanticModel.GetSemanticInfoInParent(nodeOrToken.AsToken()) : semanticModel.GetSemanticInfoInParent(nodeOrToken.AsNode())); }
private CommonSyntaxNode GetRootNode(CommonSyntaxNodeOrToken nodeOrToken) { if (nodeOrToken.IsNode) { return GetRootNode(nodeOrToken.AsNode()); } else { return GetRootNode(nodeOrToken.AsToken()); } }
/// <summary> /// Gets semantic information, such as type, symbols, and diagnostics, about a node or /// token. /// </summary> /// <param name="semanticModel">The SemanticModel object to get semantic information /// from.</param> /// <param name="nodeOrToken">The node or token to inquire about. If this a token, the parent of the token is /// queried.</param> public static ISemanticInfo GetSemanticInfoInParent(this ISemanticModel semanticModel, CommonSyntaxNodeOrToken nodeOrToken) { return nodeOrToken.IsToken ? semanticModel.GetSemanticInfoInParent(nodeOrToken.AsToken()) : semanticModel.GetSemanticInfoInParent(nodeOrToken.AsNode()); }