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;
            }
        }
示例#5
0
        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()));
 }
示例#7
0
 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());
            }
        }
 /// <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());
 }