[svn] r6425: nemerle/trunk/ncc/hierarchy/NamespaceTree.n

VladD2 svnadmin at nemerle.org
Mon Jul 3 08:20:16 CEST 2006


Log:
Add Add debugging display (in VS) to NamespaceTree.Node.


Author: VladD2
Date: Mon Jul  3 08:20:14 2006
New Revision: 6425

Modified:
   nemerle/trunk/ncc/hierarchy/NamespaceTree.n

Modified: nemerle/trunk/ncc/hierarchy/NamespaceTree.n
==============================================================================
--- nemerle/trunk/ncc/hierarchy/NamespaceTree.n	(original)
+++ nemerle/trunk/ncc/hierarchy/NamespaceTree.n	Mon Jul  3 08:20:14 2006
@@ -53,12 +53,18 @@
     [DebuggerDisplay("NamespaceTree.Node: '{GetDisplayName()}'")]
     public class Node {
       public Parent : Node;
+      
+      [DebuggerBrowsable(DebuggerBrowsableState.Never)]
       name : string; // the same as edge from parent to this
+      
       public mutable Value : TypeInfoCache;
       
-      [Accessor]
+      [DebuggerBrowsable(DebuggerBrowsableState.Never)]
       internal mutable children : Hashtable [string, Node];
       
+      [DebuggerBrowsable(DebuggerBrowsableState.Never)]
+      public Children : Hashtable [string, Node] { get { children } }
+      
       public this (parent : Node, n : string, v : TypeInfoCache) {
         Parent = parent;
         name = n;
@@ -94,6 +100,7 @@
         Name.ToString(".")
       }
             
+      [DebuggerBrowsable(DebuggerBrowsableState.Never)]
       public Name : list [string]
       {
         get {
@@ -114,9 +121,7 @@
       }
 
       // some namespace nodes are faked for the need of namespace aliases
-      internal IsFromAlias : bool {
-        get { name == null }
-      }
+      public IsFromAlias : bool { get { name == null } }
       
       public Clear () : void
       {
@@ -369,6 +374,41 @@
         _ = s.Append (")\n");
         s.ToString ();
       }
+
+      // Debuging support.
+      #pragma warning disable 10003
+
+      [System.Runtime.InteropServices.ComVisible(false)]
+      [DebuggerDisplay("NamespaceTree.Node: '{Name}'")]
+      private class NodeDebugDisplayHelper
+      {
+        public this (node : NamespaceTree.Node) { _node = node; }
+
+        [DebuggerBrowsable(DebuggerBrowsableState.Never)]
+        _node : NamespaceTree.Node;
+
+        public Name : string { get { _node.Name.ToString(".") } }
+
+        public Children : array [NamespaceTree.Node]
+        {
+          get
+          {
+            if (_node.Children is null)
+              array (0)
+            else
+              _node.Children.Values.ToArray().SortInplace((x, y) =>
+              x.Name.ToString(".").CompareTo(y.Name.ToString(".")))
+          }
+        }
+      }
+
+      [DebuggerBrowsable(DebuggerBrowsableState.RootHidden)]
+      private NodeDebugDisplay : NodeDebugDisplayHelper
+      {
+        get { NodeDebugDisplayHelper (this) }
+      }
+      
+      #pragma warning restore 10003
     }
     
     internal mutable macro_context : int;



More information about the svn mailing list