Browse Source

Object graph visualizer - temporarily disable

collection support to make porting the code
to new NRefactory more feasible.
newNRvisualizers
Martin Konicek 13 years ago
parent
commit
e858b57dd8
  1. 111
      src/AddIns/Debugger/Debugger.AddIn/Debugger.AddIn.csproj
  2. 72
      src/AddIns/Debugger/Debugger.AddIn/Visualizers/Graph/ObjectGraph/ObjectGraphBuilder.cs
  3. 9
      src/AddIns/Debugger/Debugger.AddIn/Visualizers/Graph/ObjectGraph/ObjectGraphNode.cs
  4. 2
      src/AddIns/Debugger/Debugger.AddIn/Visualizers/Utils/AtomicType.cs
  5. 17
      src/AddIns/Debugger/Debugger.AddIn/Visualizers/Utils/DebuggerHelpers.cs

111
src/AddIns/Debugger/Debugger.AddIn/Debugger.AddIn.csproj

@ -142,6 +142,92 @@ @@ -142,6 +142,92 @@
<Compile Include="Tooltips\VisualizerPicker.cs" />
<Compile Include="TreeModel\SharpTreeNodeAdapter.cs" />
<Compile Include="TreeModel\TreeNode.cs" />
<Compile Include="Visualizers\Commands\ExpressionVisualizerCommand.cs" />
<Compile Include="Visualizers\Commands\GridVisualizerCommand.cs" />
<Compile Include="Visualizers\Commands\GridVisualizerMenuCommand.cs" />
<Compile Include="Visualizers\Commands\IVisualizerDescriptor.cs" />
<Compile Include="Visualizers\Commands\ObjectGraphVisualizerCommand.cs" />
<Compile Include="Visualizers\Commands\ObjectGraphVisualizerMenuCommand.cs" />
<Compile Include="Visualizers\Commands\TextVisualizerCommand.cs" />
<Compile Include="Visualizers\Commands\VisualizerDescriptors.cs" />
<Compile Include="Visualizers\Commands\XmlVisualizerCommand.cs" />
<Compile Include="Visualizers\Common\DebuggerVisualizerException.cs" />
<Compile Include="Visualizers\Common\IEvaluate.cs" />
<Compile Include="Visualizers\Common\IVisualizerCommand.cs" />
<Compile Include="Visualizers\Common\ObjectProperty.cs" />
<Compile Include="Visualizers\Common\ObjectPropertyComparer.cs" />
<Compile Include="Visualizers\Common\VirtualizingCollection.cs" />
<Compile Include="Visualizers\Common\VirtualizingObservableCollection.cs" />
<Compile Include="Visualizers\Graph\Drawing\BoolToBoldConverter.cs" />
<Compile Include="Visualizers\Graph\Drawing\CanvasLocationAdapter.cs" />
<Compile Include="Visualizers\Graph\Drawing\GraphDrawer.cs" />
<Compile Include="Visualizers\Graph\Drawing\PositionedGraphNodeControl.xaml.cs" />
<Compile Include="Visualizers\Graph\ExpandedPaths\Expanded.cs" />
<Compile Include="Visualizers\Graph\ExpandedPaths\ExpandedContentNodes.cs" />
<Compile Include="Visualizers\Graph\ExpandedPaths\ExpandedExpressions.cs" />
<Compile Include="Visualizers\Graph\ExpandedPaths\ExpandedPaths.cs" />
<Compile Include="Visualizers\Graph\GraphExpression.cs" />
<Compile Include="Visualizers\Graph\Layout\GraphDiff.cs" />
<Compile Include="Visualizers\Graph\Layout\GraphEdgeRouter.cs" />
<Compile Include="Visualizers\Graph\Layout\GraphMatcher.cs" />
<Compile Include="Visualizers\Graph\Layout\PositionedEdge.cs" />
<Compile Include="Visualizers\Graph\Layout\PositionedGraph.cs" />
<Compile Include="Visualizers\Graph\Layout\PositionedNode.cs" />
<Compile Include="Visualizers\Graph\Layout\PositionedNodeProperty.cs" />
<Compile Include="Visualizers\Graph\Layout\PositionedPropertyEventArgs.cs" />
<Compile Include="Visualizers\Graph\Layout\SplineRouting\Box.cs" />
<Compile Include="Visualizers\Graph\Layout\SplineRouting\Edge.cs" />
<Compile Include="Visualizers\Graph\Layout\SplineRouting\EdgeRouter.cs" />
<Compile Include="Visualizers\Graph\Layout\SplineRouting\GeomUtils.cs" />
<Compile Include="Visualizers\Graph\Layout\SplineRouting\IEdge.cs" />
<Compile Include="Visualizers\Graph\Layout\SplineRouting\IPoint.cs" />
<Compile Include="Visualizers\Graph\Layout\SplineRouting\IRect.cs" />
<Compile Include="Visualizers\Graph\Layout\SplineRouting\Point2D.cs" />
<Compile Include="Visualizers\Graph\Layout\SplineRouting\RouteGraph\EdgeStartEnd.cs" />
<Compile Include="Visualizers\Graph\Layout\SplineRouting\RouteGraph\RoutedEdge.cs" />
<Compile Include="Visualizers\Graph\Layout\SplineRouting\RouteGraph\RouteGraph.cs" />
<Compile Include="Visualizers\Graph\Layout\SplineRouting\RouteGraph\RouteGraphEdge.cs" />
<Compile Include="Visualizers\Graph\Layout\SplineRouting\RouteGraph\RouteVertex.cs" />
<Compile Include="Visualizers\Graph\Layout\SplineRouting\ShortestPath\DijkstraShortestPathFinder.cs" />
<Compile Include="Visualizers\Graph\Layout\TreeModel\ContentNode.cs" />
<Compile Include="Visualizers\Graph\Layout\TreeModel\ContentNodeEventArgs.cs" />
<Compile Include="Visualizers\Graph\Layout\TreeModel\ContentPropertyNode.cs" />
<Compile Include="Visualizers\Graph\Layout\Tree\LayoutDirection.cs" />
<Compile Include="Visualizers\Graph\Layout\Tree\TreeLayout.cs" />
<Compile Include="Visualizers\Graph\ObjectGraphControl.xaml.cs" />
<Compile Include="Visualizers\Graph\ObjectGraphWindow.xaml.cs" />
<Compile Include="Visualizers\Graph\ObjectGraph\NamedEdge.cs" />
<Compile Include="Visualizers\Graph\ObjectGraph\ObjectGraph.cs" />
<Compile Include="Visualizers\Graph\ObjectGraph\ObjectGraphBuilder.cs" />
<Compile Include="Visualizers\Graph\ObjectGraph\ObjectGraphNode.cs" />
<Compile Include="Visualizers\Graph\ObjectGraph\ObjectGraphProperty.cs" />
<Compile Include="Visualizers\Graph\ObjectGraph\PropertiesFirstComparer.cs" />
<Compile Include="Visualizers\Graph\ObjectGraph\TreeModel\AbstractNode.cs" />
<Compile Include="Visualizers\Graph\ObjectGraph\TreeModel\BaseClassNode.cs" />
<Compile Include="Visualizers\Graph\ObjectGraph\TreeModel\NonPublicMembersNode.cs" />
<Compile Include="Visualizers\Graph\ObjectGraph\TreeModel\PropertyNode.cs" />
<Compile Include="Visualizers\Graph\ObjectGraph\TreeModel\RawViewNode.cs" />
<Compile Include="Visualizers\Graph\ObjectGraph\TreeModel\ThisNode.cs" />
<Compile Include="Visualizers\GridVisualizer\GridVisualizerWindow.xaml.cs" />
<Compile Include="Visualizers\PresentationBindings\DisplayAttribute.cs" />
<Compile Include="Visualizers\PresentationBindings\DragScrollViewer.cs" />
<Compile Include="Visualizers\PresentationBindings\EnumViewModel.cs" />
<Compile Include="Visualizers\PresentationBindings\GridViewColumnHider.cs" />
<Compile Include="Visualizers\PresentationBindings\GridViewHideableColumn.cs" />
<Compile Include="Visualizers\PresentationBindings\TooltipVisibilityConverter.cs" />
<Compile Include="Visualizers\TextVisualizer\TextVisualizerWindow.xaml.cs" />
<Compile Include="Visualizers\Utils\AtomicType.cs" />
<Compile Include="Visualizers\Utils\DebuggerHelpers.cs" />
<Compile Include="Visualizers\Utils\DictionaryExtensions.cs" />
<Compile Include="Visualizers\Utils\IEnumerableExtensions.cs" />
<Compile Include="Visualizers\Utils\ITreeNode.cs" />
<Compile Include="Visualizers\Utils\LinqUtils.cs" />
<Compile Include="Visualizers\Utils\ListHelper.cs" />
<Compile Include="Visualizers\Utils\Lookup.cs" />
<Compile Include="Visualizers\Utils\LookupValueCollection.cs" />
<Compile Include="Visualizers\Utils\StringHelper.cs" />
<Compile Include="Visualizers\Utils\TreeFlattener.cs" />
<Compile Include="Visualizers\Utils\TypeResolver.cs" />
<EmbeddedResource Include="Service\DebuggeeExceptionForm.resx">
<DependentUpon>DebuggeeExceptionForm.cs</DependentUpon>
</EmbeddedResource>
@ -211,12 +297,37 @@ @@ -211,12 +297,37 @@
</ItemGroup>
<ItemGroup>
<Folder Include="Tooltips" />
<Folder Include="Visualizers" />
<Folder Include="Visualizers\Commands" />
<Folder Include="Visualizers\Common" />
<Folder Include="Visualizers\Graph" />
<Folder Include="Visualizers\Graph\Drawing" />
<Folder Include="Visualizers\Graph\ExpandedPaths" />
<Folder Include="Visualizers\Graph\Layout" />
<Folder Include="Visualizers\Graph\Layout\SplineRouting" />
<Folder Include="Visualizers\Graph\Layout\SplineRouting\RouteGraph" />
<Folder Include="Visualizers\Graph\Layout\SplineRouting\ShortestPath" />
<Folder Include="Visualizers\Graph\Layout\Tree" />
<Folder Include="Visualizers\Graph\Layout\TreeModel" />
<Folder Include="Visualizers\Graph\ObjectGraph" />
<Folder Include="Visualizers\Graph\ObjectGraph\TreeModel" />
<Folder Include="Visualizers\GridVisualizer" />
<Folder Include="Visualizers\PresentationBindings" />
<Folder Include="Visualizers\TextVisualizer" />
<Folder Include="Visualizers\Utils" />
<Page Include="Options\DebuggingOptionsPanel.xaml" />
<Page Include="Options\DebuggingSymbolsPanel.xaml" />
<Page Include="Pads\CommonResources.xaml" />
<Page Include="Service\EditBreakpointScriptWindow.xaml" />
<Page Include="Tooltips\DebuggerTooltipControl.xaml" />
<Page Include="Tooltips\VisualizerPicker.xaml" />
<Page Include="Visualizers\Graph\Drawing\NodeControlResources.xaml" />
<Page Include="Visualizers\Graph\Drawing\PositionedGraphNodeControl.xaml" />
<Page Include="Visualizers\Graph\ObjectGraphControl.xaml" />
<Page Include="Visualizers\Graph\ObjectGraphWindow.xaml" />
<Page Include="Visualizers\GridVisualizer\ColumnPicker.xaml" />
<Page Include="Visualizers\GridVisualizer\GridVisualizerWindow.xaml" />
<Page Include="Visualizers\TextVisualizer\TextVisualizerWindow.xaml" />
<ProjectReference Include="..\..\..\Main\ICSharpCode.Core.WinForms\ICSharpCode.Core.WinForms.csproj">
<Project>{857CA1A3-FC88-4BE0-AB6A-D1EE772AB288}</Project>
<Name>ICSharpCode.Core.WinForms</Name>

72
src/AddIns/Debugger/Debugger.AddIn/Visualizers/Graph/ObjectGraph/ObjectGraphBuilder.cs

@ -10,7 +10,6 @@ using Debugger.AddIn.Visualizers.Utils; @@ -10,7 +10,6 @@ using Debugger.AddIn.Visualizers.Utils;
using Debugger.MetaData;
using ICSharpCode.NRefactory;
using ICSharpCode.NRefactory.Ast;
using ICSharpCode.NRefactory.Visitors;
using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.SharpDevelop.Services;
@ -86,7 +85,7 @@ namespace Debugger.AddIn.Visualizers.Graph @@ -86,7 +85,7 @@ namespace Debugger.AddIn.Visualizers.Graph
}
Value rootValue = expression.GetValue();
if (rootValue.IsNull) {
if (rootValue.IsNull) {
throw new DebuggerVisualizerException(expression + " is null.");
}
return buildGraphForValue(rootValue.GetPermanentReference(WindowsDebugger.EvalThread), expression, expandedNodes);
@ -122,8 +121,7 @@ namespace Debugger.AddIn.Visualizers.Graph @@ -122,8 +121,7 @@ namespace Debugger.AddIn.Visualizers.Graph
{
createdNew = false;
ObjectGraphNode nodeForValue = getExistingNodeForValue(value);
if (nodeForValue == null)
{
if (nodeForValue == null) {
// if no node for memberValue exists, create it
nodeForValue = createNewNode(value, expression);
loadContent(nodeForValue);
@ -135,13 +133,13 @@ namespace Debugger.AddIn.Visualizers.Graph @@ -135,13 +133,13 @@ namespace Debugger.AddIn.Visualizers.Graph
/// <summary>
/// Fills node Content property tree.
/// </summary>
/// <param name="thisNode"></param>
private void loadContent(ObjectGraphNode thisNode)
{
var contentRoot = new ThisNode();
thisNode.Content = contentRoot;
DebugType collectionType;
// Object graph visualizer: collection support temp disabled (porting to new NRefactory).
/*DebugType collectionType;
DebugType itemType;
if (thisNode.PermanentReference.Type.ResolveIListImplementation(out collectionType, out itemType))
{
@ -157,20 +155,20 @@ namespace Debugger.AddIn.Visualizers.Graph @@ -157,20 +155,20 @@ namespace Debugger.AddIn.Visualizers.Graph
() => DebuggerHelpers.CreateListFromIEnumerable(thisNode.Expression.GetValue())
);
LoadNodeCollectionContent(contentRoot, debugListExpression, debugListType);
} else {
} else*/ {
// it is an object
LoadNodeObjectContent(contentRoot, thisNode.Expression, thisNode.PermanentReference.Type);
}
}
void AddRawViewNode(AbstractNode contentRoot, ObjectGraphNode thisNode)
{
void AddRawViewNode(AbstractNode contentRoot, ObjectGraphNode thisNode) {
var rawViewNode = new RawViewNode();
contentRoot.AddChild(rawViewNode);
LoadNodeObjectContent(rawViewNode, thisNode.Expression, thisNode.PermanentReference.Type);
}
void LoadNodeCollectionContent(AbstractNode node, GraphExpression thisObject, DebugType iListType)
// Object graph visualizer: collection support temp disabled (porting to new NRefactory).
/*void LoadNodeCollectionContent(AbstractNode node, GraphExpression thisObject, DebugType iListType)
{
var thisObjectAsIList = new GraphExpression(thisObject.Expr.CastToIList(), thisObject.GetValue);
int listCount = thisObjectAsIList.GetValue().GetIListCount();
@ -187,13 +185,12 @@ namespace Debugger.AddIn.Visualizers.Graph @@ -187,13 +185,12 @@ namespace Debugger.AddIn.Visualizers.Graph
new ObjectGraphProperty { Name = "[" + i + "]", MemberInfo = indexerProp, Expression = itemExpr, Value = "", IsAtomic = true, TargetNode = null });
node.AddChild(itemNode);
}
}
}*/
void LoadNodeObjectContent(AbstractNode node, GraphExpression expression, DebugType type)
{
// base
if (type.BaseType != null && type.BaseType.FullName != "System.Object")
{
if (type.BaseType != null && type.BaseType.FullName != "System.Object") {
var baseClassNode = new BaseClassNode(type.BaseType.FullName, type.BaseType.Name);
node.AddChild(baseClassNode);
LoadNodeObjectContent(baseClassNode, expression, (DebugType)type.BaseType);
@ -201,19 +198,16 @@ namespace Debugger.AddIn.Visualizers.Graph @@ -201,19 +198,16 @@ namespace Debugger.AddIn.Visualizers.Graph
// non-public members
var nonPublicProperties = getProperties(expression, type, this.nonPublicInstanceMemberFlags);
if (nonPublicProperties.Count > 0)
{
if (nonPublicProperties.Count > 0) {
var nonPublicMembersNode = new NonPublicMembersNode();
node.AddChild(nonPublicMembersNode);
foreach (var nonPublicProperty in nonPublicProperties)
{
foreach (var nonPublicProperty in nonPublicProperties) {
nonPublicMembersNode.AddChild(new PropertyNode(nonPublicProperty));
}
}
// public members
foreach (var property in getProperties(expression, type, this.publicInstanceMemberFlags))
{
foreach (var property in getProperties(expression, type, this.publicInstanceMemberFlags)) {
node.AddChild(new PropertyNode(property));
}
}
@ -222,8 +216,7 @@ namespace Debugger.AddIn.Visualizers.Graph @@ -222,8 +216,7 @@ namespace Debugger.AddIn.Visualizers.Graph
{
List<ObjectGraphProperty> propertyList = new List<ObjectGraphProperty>();
foreach (MemberInfo memberProp in shownType.GetFieldsAndNonIndexedProperties(flags))
{
foreach (MemberInfo memberProp in shownType.GetFieldsAndNonIndexedProperties(flags)) {
if (memberProp.Name.Contains("<")) {
// skip backing fields
continue;
@ -237,7 +230,7 @@ namespace Debugger.AddIn.Visualizers.Graph @@ -237,7 +230,7 @@ namespace Debugger.AddIn.Visualizers.Graph
// to know whether it is expanded, and to evaluate
var propExpression = new GraphExpression(
expression.Expr.AppendMemberReference((IDebugMemberInfo)memberProp),
() => expression.GetValue().GetMemberValue(WindowsDebugger.EvalThread, memberProp) // EXPR-EVAL
() => expression.GetValue().GetMemberValue(WindowsDebugger.EvalThread, memberProp)
);
// Value, IsAtomic are lazy evaluated
propertyList.Add(new ObjectGraphProperty
@ -250,46 +243,35 @@ namespace Debugger.AddIn.Visualizers.Graph @@ -250,46 +243,35 @@ namespace Debugger.AddIn.Visualizers.Graph
}
/// <summary>
/// For each complex property of this node, create s neighbor graph node if needed and connects the neighbor to ObjectProperty.TargetNode.
/// For each complex property of this node, creates a neighbor graph node if needed and connects
/// it using to ObjectProperty.TargetNode.
/// </summary>
/// <param name="thisNode"></param>
/// <param name="expandedNodes"></param>
private void loadNeighborsRecursive(ObjectGraphNode thisNode, ExpandedExpressions expandedNodes)
{
// evaluate properties first in case property getters are changing some fields - the fields will then have correct values
foreach(ObjectGraphProperty complexProperty in thisNode.PropertiesFirstThenFields)
{
foreach(ObjectGraphProperty complexProperty in thisNode.PropertiesFirstThenFields) {
ObjectGraphNode targetNode = null;
// We are only evaluating expanded nodes here.
// We have to do this to know the "shape" of the graph.
// We do not evaluate atomic and non-expanded properties, those will be lazy evaluated when drawn.
if (expandedNodes.IsExpanded(complexProperty.Expression.Expr))
{
if (expandedNodes.IsExpanded(complexProperty.Expression.Expr)) {
// if expanded, evaluate this property
Value memberValue = complexProperty.Expression.GetValue();
if (memberValue.IsNull)
{
if (memberValue.IsNull) {
continue;
}
else
{
} else {
// if property value is not null, create neighbor
memberValue = memberValue.GetPermanentReference(WindowsDebugger.EvalThread);
bool createdNew;
// get existing node (loop) or create new
targetNode = ObtainNodeForValue(memberValue, complexProperty.Expression, out createdNew);
if (createdNew)
{
if (createdNew) {
// if member node is new, recursively build its subtree
loadNeighborsRecursive(targetNode, expandedNodes);
}
}
}
else
{
targetNode = null;
}
// connect property to target ObjectGraphNode
complexProperty.TargetNode = targetNode;
}
@ -326,18 +308,14 @@ namespace Debugger.AddIn.Visualizers.Graph @@ -326,18 +308,14 @@ namespace Debugger.AddIn.Visualizers.Graph
/// Finds node that represents the same instance as given value.
/// </summary>
/// <param name="value">Valid value representing an instance.</param>
/// <returns></returns>
private ObjectGraphNode getExistingNodeForValue(Value value)
private ObjectGraphNode getExistingNodeForValue(Value value)
{
int objectHashCode = value.InvokeDefaultGetHashCode();
// are there any nodes with the same hash code?
LookupValueCollection<ObjectGraphNode> nodesWithSameHashCode = objectNodesForHashCode[objectHashCode];
if (nodesWithSameHashCode == null)
{
if (nodesWithSameHashCode == null) {
return null;
}
else
{
} else {
// if there is a node with same hash code, check if it has also the same address
// (hash codes are not uniqe - http://stackoverflow.com/questions/750947/-net-unique-object-identifier)
ulong objectAddress = value.GetObjectAddress();

9
src/AddIns/Debugger/Debugger.AddIn/Visualizers/Graph/ObjectGraph/ObjectGraphNode.cs

@ -1,7 +1,6 @@ @@ -1,7 +1,6 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the BSD license (for details please see \src\AddIns\Debugger\Debugger.AddIn\license.txt)
using Expression = ICSharpCode.NRefactory.Ast.Expression;
using System;
using System.Collections.Generic;
using System.Linq;
@ -44,7 +43,9 @@ namespace Debugger.AddIn.Visualizers.Graph @@ -44,7 +43,9 @@ namespace Debugger.AddIn.Visualizers.Graph
/// </summary>
public IEnumerable<ObjectGraphProperty> Properties
{
get { return this.Content.FlattenPropertyNodes().Select(node => {return node.Property; }); }
get {
return this.Content.FlattenPropertyNodes().Select(node => node.Property);
}
}
/// <summary>
@ -52,7 +53,9 @@ namespace Debugger.AddIn.Visualizers.Graph @@ -52,7 +53,9 @@ namespace Debugger.AddIn.Visualizers.Graph
/// </summary>
public IEnumerable<ObjectGraphProperty> PropertiesFirstThenFields
{
get { return this.Properties.OrderBy(prop => prop.MemberInfo, PropertiesFirstComparer.Instance); }
get {
return this.Properties.OrderBy(prop => prop.MemberInfo, PropertiesFirstComparer.Instance);
}
}
}
}

2
src/AddIns/Debugger/Debugger.AddIn/Visualizers/Utils/AtomicType.cs

@ -17,7 +17,7 @@ namespace Debugger.AddIn.Visualizers.Utils @@ -17,7 +17,7 @@ namespace Debugger.AddIn.Visualizers.Utils
/// Checks whether given expression's type is atomic.
/// </summary>
/// <param name="expr">Expression.</param>
/// <returns>True if expression's type is atomic, False otherwise.</returns>
/// <returns>True if expression's type is atomic, false otherwise.</returns>
public static bool IsAtomic(this DebugType type)
{
return type.IsPrimitive || type.FullName == "System.String" || type.IsEnum();

17
src/AddIns/Debugger/Debugger.AddIn/Visualizers/Utils/DebuggerHelpers.cs

@ -17,6 +17,8 @@ namespace Debugger.AddIn.Visualizers.Utils @@ -17,6 +17,8 @@ namespace Debugger.AddIn.Visualizers.Utils
{
public static class DebuggerHelpers
{
// Object graph visualizer: collection support temp disabled (porting to new NRefactory).
/*
/// <summary>
/// Creates an expression which, when evaluated, creates a List&lt;T&gt; in the debugee
/// filled with contents of IEnumerable&lt;T&gt; from the debugee.
@ -32,7 +34,7 @@ namespace Debugger.AddIn.Visualizers.Utils @@ -32,7 +34,7 @@ namespace Debugger.AddIn.Visualizers.Utils
// explicitely cast the variable to IEnumerable<T>, where T is itemType
Expression iEnumerableVariableExplicitCast = new CastExpression(iEnumerableType.GetTypeReference() , iEnumerableVariable, CastType.Cast);
return new ObjectCreateExpression(listType.GetTypeReference(), iEnumerableVariableExplicitCast.SingleItemList());
}
}*/
/// <summary>
/// Evaluates 'new List&lt;T&gt;(iEnumerableValue)' in the debuggee.
@ -82,7 +84,6 @@ namespace Debugger.AddIn.Visualizers.Utils @@ -82,7 +84,6 @@ namespace Debugger.AddIn.Visualizers.Utils
/// System.Runtime.CompilerServices.GetHashCode method, for obtaining non-overriden hash codes from debuggee.
/// </summary>
private static DebugMethodInfo hashCodeMethod;
/// <summary>
/// Invokes RuntimeHelpers.GetHashCode on given value, that is a default hashCode ignoring user overrides.
/// </summary>
@ -117,6 +118,8 @@ namespace Debugger.AddIn.Visualizers.Utils @@ -117,6 +118,8 @@ namespace Debugger.AddIn.Visualizers.Utils
}
}
// Object graph visualizer: collection support temp disabled (porting to new NRefactory).
/*
/// <summary>
/// Evaluates 'System.Collections.ICollection.Count' on given Value.
/// </summary>
@ -128,8 +131,10 @@ namespace Debugger.AddIn.Visualizers.Utils @@ -128,8 +131,10 @@ namespace Debugger.AddIn.Visualizers.Utils
throw new GetValueException("Object does not implement System.Collections.ICollection");
// Do not get string representation since it can be printed in hex
return (int)list.GetPropertyValue(WindowsDebugger.EvalThread, iCollectionType.GetProperty("Count")).PrimitiveValue;
}
}*/
// Object graph visualizer: collection support temp disabled (porting to new NRefactory).
/*
/// <summary>
/// Evaluates 'System.Collection.IList.Item(i)' on given Value.
/// </summary>
@ -145,8 +150,10 @@ namespace Debugger.AddIn.Visualizers.Utils @@ -145,8 +150,10 @@ namespace Debugger.AddIn.Visualizers.Utils
if (indexerProperty == null)
throw new GetValueException("The object does not have an indexer property");
return target.GetPropertyValue(WindowsDebugger.EvalThread, indexerProperty, Eval.CreateValue(WindowsDebugger.EvalThread, index));
}
}*/
// Object graph visualizer: collection support temp disabled (porting to new NRefactory).
/*
/// <summary>
/// Prepends a cast to IList before the given Expression.
/// </summary>
@ -157,6 +164,6 @@ namespace Debugger.AddIn.Visualizers.Utils @@ -157,6 +164,6 @@ namespace Debugger.AddIn.Visualizers.Utils
expr.Parenthesize(),
CastType.Cast
);
}
}*/
}
}

Loading…
Cancel
Save