From 9218a36d0b8ca3477aa1fff9c52406e446c91350 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Srbeck=C3=BD?= Date: Thu, 17 Jul 2008 23:20:21 +0000 Subject: [PATCH] The console is able to box values; Added Value.IsReference property git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@3237 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61 --- .../Src/Expressions/EvaluateAstVisitor.cs | 3 + .../Project/Src/Pads/ConsolePad.cs | 2 +- .../Project/Src/Values/Value.Array.cs | 2 +- .../Project/Src/Values/Value.Object.cs | 5 +- .../Project/Src/Values/Value.Primitive.cs | 4 +- .../Debugger.Core/Project/Src/Values/Value.cs | 62 ++++++++++++------- .../Project/Src/TestPrograms/ArrayValue.cs | 7 +++ .../Project/Src/TestPrograms/DebugTypes.cs | 34 ++++++++++ .../Project/Src/TestPrograms/Expressions.cs | 12 ++++ .../TestPrograms/FunctionArgumentVariables.cs | 14 +++++ .../TestPrograms/FunctionLocalVariables.cs | 5 ++ .../TestPrograms/FunctionVariablesLifetime.cs | 20 ++++++ .../Project/Src/TestPrograms/Generics.cs | 18 ++++++ .../Src/TestPrograms/PrimitiveValue.cs | 4 ++ .../Project/Src/TestPrograms/ValueType.cs | 1 + 15 files changed, 166 insertions(+), 27 deletions(-) diff --git a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Expressions/EvaluateAstVisitor.cs b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Expressions/EvaluateAstVisitor.cs index f9844ba140..86d71068f4 100644 --- a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Expressions/EvaluateAstVisitor.cs +++ b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Expressions/EvaluateAstVisitor.cs @@ -28,6 +28,9 @@ namespace Debugger.AddIn // Calculate right first so that left does not get invalidated by its calculation Value right = ((Value)assignmentExpression.Right.AcceptVisitor(this, null)).GetPermanentReference(); Value left = (Value)assignmentExpression.Left.AcceptVisitor(this, null); + if (!left.IsReference && left.Type.FullName != right.Type.FullName) { + throw new GetValueException(string.Format("Type {0} expected, {1} seen", left.Type.FullName, right.Type.FullName)); + } left.SetValue(right); return right; } diff --git a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/ConsolePad.cs b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/ConsolePad.cs index cdd5a94f95..cab3640f10 100644 --- a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/ConsolePad.cs +++ b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/ConsolePad.cs @@ -80,7 +80,7 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads try { Value val = AstEvaluator.Evaluate(code, SupportedLanguage.CSharp, process.SelectedStackFrame); if (val != null) { - return string.Format("{0} ({1})", val.AsString, val.Type.FullName); + return val.InvokeToString(); } else { return string.Empty; } diff --git a/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Values/Value.Array.cs b/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Values/Value.Array.cs index 5d99a2f5d6..cb4a2741c0 100644 --- a/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Values/Value.Array.cs +++ b/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Values/Value.Array.cs @@ -24,7 +24,7 @@ namespace Debugger if (IsNull) throw new GetValueException("Value is null"); if (!this.Type.IsArray) throw new DebuggerException("Value is not an array"); - return this.CorValue.CastTo().Dereference().CastTo(); + return this.CorReferenceValue.Dereference().CastTo(); } } diff --git a/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Values/Value.Object.cs b/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Values/Value.Object.cs index 43be8a8f62..400affd614 100644 --- a/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Values/Value.Object.cs +++ b/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Values/Value.Object.cs @@ -22,12 +22,12 @@ namespace Debugger if (IsNull) throw new GetValueException("Value is null"); if (this.Type.IsClass) { - return this.CorValue.CastTo().Dereference().CastTo(); + return this.CorReferenceValue.Dereference().CastTo(); } if (this.Type.IsValueType) { if (this.CorValue.Is()) { // Dereference and unbox - return this.CorValue.CastTo().Dereference().CastTo().Object; + return this.CorReferenceValue.Dereference().CastTo().Object; } else { return this.CorValue.CastTo(); } @@ -240,6 +240,7 @@ namespace Debugger public string InvokeToString() { if (this.Type.IsPrimitive) return AsString; + if (this.Type.IsPointer) return "0x" + this.PointerAddress.ToString("X"); // if (!IsObject) // Can invoke on primitives return Eval.InvokeMethod(Process, this.Type.AppDomainID, typeof(object), "ToString", this, new Value[] {}).AsString; } diff --git a/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Values/Value.Primitive.cs b/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Values/Value.Primitive.cs index 69f0e00fc4..a984f79c9c 100644 --- a/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Values/Value.Primitive.cs +++ b/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Values/Value.Primitive.cs @@ -21,7 +21,7 @@ namespace Debugger // Dereference and unbox if (this.CorValue.Is()) { - return this.CorValue.CastTo().Dereference().CastTo().Object.CastTo(); + return this.CorReferenceValue.Dereference().CastTo().Object.CastTo(); } else { return this.CorValue.CastTo(); } @@ -38,7 +38,7 @@ namespace Debugger if (!this.Type.IsPrimitive) throw new DebuggerException("Value is not a primitive type"); if (this.Type.IsString) { if (this.IsNull) return null; - return this.CorValue.CastTo().Dereference().CastTo().String; + return this.CorReferenceValue.Dereference().CastTo().String; } else { return CorGenericValue.Value; } diff --git a/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Values/Value.cs b/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Values/Value.cs index 127608510e..ee64abce02 100644 --- a/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Values/Value.cs +++ b/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Values/Value.cs @@ -83,6 +83,42 @@ namespace Debugger } } + ICorDebugReferenceValue CorReferenceValue { + get { + if (!this.IsReference) throw new DebuggerException("Reference value expected"); + + return this.CorValue.CastTo(); + } + } + + /// Gets value indication whether the value is a reference + /// Value types also return true if they are boxed + public bool IsReference { + get { + return this.CorValue.Is(); + } + } + + Value Box() + { + byte[] rawValue = this.CorGenericValue.RawValue; + // Box the value type + ICorDebugValue corValue; + if (this.Type.IsPrimitive) { + // Get value type for the primive type + corValue = Eval.NewObjectNoConstructor(DebugType.Create(process, null, this.Type.FullName)).CorValue; + } else { + corValue = Eval.NewObjectNoConstructor(this.Type).CorValue; + } + // Make the reference to box permanent + corValue = corValue.CastTo().Dereference().CastTo().CreateHandle(CorDebugHandleType.HANDLE_STRONG).CastTo(); + // Create new value + Value newValue = new Value(process, expression, corValue); + // Copy the data inside the box + newValue.CorGenericValue.RawValue = rawValue; + return newValue; + } + public Value GetPermanentReference() { ICorDebugValue corValue = this.CorValue; @@ -91,20 +127,7 @@ namespace Debugger } if (this.Type.IsValueType || this.Type.IsPrimitive) { if (!corValue.Is()) { - // Box the value type - if (this.Type.IsPrimitive) { - // Get value type for the primive type - corValue = Eval.NewObjectNoConstructor(DebugType.Create(process, null, this.Type.FullName)).CorValue; - } else { - corValue = Eval.NewObjectNoConstructor(this.Type).CorValue; - } - // Make the reference to box permanent - corValue = corValue.CastTo().Dereference().CastTo().CreateHandle(CorDebugHandleType.HANDLE_STRONG).CastTo(); - // Create new value - Value newValue = new Value(process, expression, corValue); - // Copy the data inside the box - newValue.CorGenericValue.RawValue = this.CorGenericValue.RawValue; - return newValue; + return this.Box(); } else { // Make the reference to box permanent corValue = corValue.CastTo().Dereference().CastTo().CreateHandle(CorDebugHandleType.HANDLE_STRONG).CastTo(); @@ -167,18 +190,15 @@ namespace Debugger /// Copy the acutal value from some other Value object public void SetValue(Value newValue) { - ICorDebugValue corValue = this.CorValue; ICorDebugValue newCorValue = newValue.CorValue; - if (corValue.Is()) { - if (newCorValue.Is()) { - ICorDebugValue box = Eval.NewObjectNoConstructor(newValue.Type).CorValue; - newCorValue = box; + if (this.IsReference) { + if (!newCorValue.Is()) { + newCorValue = newValue.Box().CorValue; } corValue.CastTo().SetValue(newCorValue.CastTo().Value); } else { - corValue.CastTo().RawValue = - newCorValue.CastTo().RawValue; + corValue.CastTo().RawValue = newValue.CorGenericValue.RawValue; } } diff --git a/src/AddIns/Misc/Debugger/Debugger.Tests/Project/Src/TestPrograms/ArrayValue.cs b/src/AddIns/Misc/Debugger/Debugger.Tests/Project/Src/TestPrograms/ArrayValue.cs index 7f165ff62f..01ea86f3ec 100644 --- a/src/AddIns/Misc/Debugger/Debugger.Tests/Project/Src/TestPrograms/ArrayValue.cs +++ b/src/AddIns/Misc/Debugger/Debugger.Tests/Project/Src/TestPrograms/ArrayValue.cs @@ -64,6 +64,7 @@ namespace Debugger.Tests { Expression="array" IsInvalid="False" IsNull="False" + IsReference="True" PrimitiveValue="{Exception: Value is not a primitive type}" Type="System.Int32[]" /> @@ -77,6 +78,7 @@ namespace Debugger.Tests { Expression="array[0]" IsInvalid="False" IsNull="False" + IsReference="False" PrimitiveValue="0" Type="System.Int32" /> @@ -89,6 +91,7 @@ namespace Debugger.Tests { Expression="array[1]" IsInvalid="False" IsNull="False" + IsReference="False" PrimitiveValue="1" Type="System.Int32" /> @@ -101,6 +104,7 @@ namespace Debugger.Tests { Expression="array[2]" IsInvalid="False" IsNull="False" + IsReference="False" PrimitiveValue="2" Type="System.Int32" /> @@ -113,6 +117,7 @@ namespace Debugger.Tests { Expression="array[3]" IsInvalid="False" IsNull="False" + IsReference="False" PrimitiveValue="3" Type="System.Int32" /> @@ -125,6 +130,7 @@ namespace Debugger.Tests { Expression="array[4]" IsInvalid="False" IsNull="False" + IsReference="False" PrimitiveValue="4" Type="System.Int32" /> @@ -172,6 +178,7 @@ namespace Debugger.Tests { Expression="array.Length" IsInvalid="False" IsNull="False" + IsReference="False" PrimitiveValue="5" Type="System.Int32" /> diff --git a/src/AddIns/Misc/Debugger/Debugger.Tests/Project/Src/TestPrograms/DebugTypes.cs b/src/AddIns/Misc/Debugger/Debugger.Tests/Project/Src/TestPrograms/DebugTypes.cs index c1f6c015dd..5d39564c40 100644 --- a/src/AddIns/Misc/Debugger/Debugger.Tests/Project/Src/TestPrograms/DebugTypes.cs +++ b/src/AddIns/Misc/Debugger/Debugger.Tests/Project/Src/TestPrograms/DebugTypes.cs @@ -118,6 +118,7 @@ namespace Debugger.Tests { Expression="nullMyClass" IsInvalid="False" IsNull="True" + IsReference="True" PrimitiveValue="{Exception: Value is not a primitive type}" Type="MyClass"> @@ -143,6 +144,7 @@ namespace Debugger.Tests { Expression="nullObject" IsInvalid="False" IsNull="True" + IsReference="True" PrimitiveValue="{Exception: Value is not a primitive type}" Type="System.Object"> @@ -168,6 +170,7 @@ namespace Debugger.Tests { Expression="nullString" IsInvalid="False" IsNull="True" + IsReference="True" PrimitiveValue="null" Type="System.String"> @@ -193,6 +196,7 @@ namespace Debugger.Tests { Expression="obj" IsInvalid="False" IsNull="False" + IsReference="True" PrimitiveValue="{Exception: Value is not a primitive type}" Type="System.Object"> @@ -218,6 +222,7 @@ namespace Debugger.Tests { Expression="loc" IsInvalid="False" IsNull="False" + IsReference="False" PrimitiveValue="42" Type="System.Int32"> @@ -243,6 +248,7 @@ namespace Debugger.Tests { Expression="locByRef" IsInvalid="False" IsNull="False" + IsReference="False" PrimitiveValue="43" Type="System.Int32"> @@ -268,6 +274,7 @@ namespace Debugger.Tests { Expression="locPtr" IsInvalid="False" IsNull="False" + IsReference="True" PrimitiveValue="{Exception: Value is not a primitive type}" Type="System.Int32*"> @@ -304,6 +311,7 @@ namespace Debugger.Tests { Expression="locPtrByRef" IsInvalid="False" IsNull="False" + IsReference="True" PrimitiveValue="{Exception: Value is not a primitive type}" Type="System.Int32*"> @@ -340,6 +348,7 @@ namespace Debugger.Tests { Expression="locPtrPtr" IsInvalid="False" IsNull="False" + IsReference="True" PrimitiveValue="{Exception: Value is not a primitive type}" Type="System.Int32**"> @@ -387,6 +396,7 @@ namespace Debugger.Tests { Expression="locVoidPtr" IsInvalid="False" IsNull="False" + IsReference="True" PrimitiveValue="{Exception: Value is not a primitive type}" Type="System.Void*"> @@ -423,6 +433,7 @@ namespace Debugger.Tests { Expression="locObj" IsInvalid="False" IsNull="False" + IsReference="True" PrimitiveValue="{Exception: Value is not a primitive type}" Type="System.Object"> @@ -448,6 +459,7 @@ namespace Debugger.Tests { Expression="locObjByRef" IsInvalid="False" IsNull="False" + IsReference="True" PrimitiveValue="{Exception: Value is not a primitive type}" Type="System.Object"> @@ -473,6 +485,7 @@ namespace Debugger.Tests { Expression="locSZArray" IsInvalid="False" IsNull="False" + IsReference="True" PrimitiveValue="{Exception: Value is not a primitive type}" Type="System.Char[]"> @@ -509,6 +522,7 @@ namespace Debugger.Tests { Expression="locArray" IsInvalid="False" IsNull="False" + IsReference="True" PrimitiveValue="{Exception: Value is not a primitive type}" Type="System.Char[,]"> @@ -545,6 +559,7 @@ namespace Debugger.Tests { Expression="locStruct" IsInvalid="False" IsNull="False" + IsReference="False" PrimitiveValue="{Exception: Value is not a primitive type}" Type="Point"> @@ -570,6 +585,7 @@ namespace Debugger.Tests { Expression="locStructPtr" IsInvalid="False" IsNull="False" + IsReference="True" PrimitiveValue="{Exception: Value is not a primitive type}" Type="Point*"> @@ -606,6 +622,7 @@ namespace Debugger.Tests { Expression="box" IsInvalid="False" IsNull="False" + IsReference="True" PrimitiveValue="{Exception: Value is not a primitive type}" Type="System.Int32"> @@ -631,6 +648,7 @@ namespace Debugger.Tests { Expression="myInterfaceImpl" IsInvalid="False" IsNull="False" + IsReference="True" PrimitiveValue="{Exception: Value is not a primitive type}" Type="MyInterfaceImpl"> @@ -656,6 +674,7 @@ namespace Debugger.Tests { Expression="myInterface" IsInvalid="False" IsNull="False" + IsReference="True" PrimitiveValue="{Exception: Value is not a primitive type}" Type="MyInterfaceImpl"> @@ -686,6 +705,7 @@ namespace Debugger.Tests { Expression="arg" IsInvalid="False" IsNull="False" + IsReference="False" PrimitiveValue="42" Type="System.Int32"> @@ -711,6 +731,7 @@ namespace Debugger.Tests { Expression="argByRef" IsInvalid="False" IsNull="False" + IsReference="False" PrimitiveValue="43" Type="System.Int32"> @@ -736,6 +757,7 @@ namespace Debugger.Tests { Expression="argPtr" IsInvalid="False" IsNull="False" + IsReference="True" PrimitiveValue="{Exception: Value is not a primitive type}" Type="System.Int32*"> @@ -772,6 +794,7 @@ namespace Debugger.Tests { Expression="argPtrByRef" IsInvalid="False" IsNull="False" + IsReference="True" PrimitiveValue="{Exception: Value is not a primitive type}" Type="System.Int32*"> @@ -808,6 +831,7 @@ namespace Debugger.Tests { Expression="argPtrPtr" IsInvalid="False" IsNull="False" + IsReference="True" PrimitiveValue="{Exception: Value is not a primitive type}" Type="System.Int32**"> @@ -855,6 +879,7 @@ namespace Debugger.Tests { Expression="argVoidPtr" IsInvalid="False" IsNull="False" + IsReference="True" PrimitiveValue="{Exception: Value is not a primitive type}" Type="System.Void*"> @@ -891,6 +916,7 @@ namespace Debugger.Tests { Expression="argObj" IsInvalid="False" IsNull="False" + IsReference="True" PrimitiveValue="{Exception: Value is not a primitive type}" Type="System.Object"> @@ -916,6 +942,7 @@ namespace Debugger.Tests { Expression="argObjByRef" IsInvalid="False" IsNull="False" + IsReference="True" PrimitiveValue="{Exception: Value is not a primitive type}" Type="System.Object"> @@ -941,6 +968,7 @@ namespace Debugger.Tests { Expression="argSZArray" IsInvalid="False" IsNull="False" + IsReference="True" PrimitiveValue="{Exception: Value is not a primitive type}" Type="System.Char[]"> @@ -977,6 +1005,7 @@ namespace Debugger.Tests { Expression="argArray" IsInvalid="False" IsNull="False" + IsReference="True" PrimitiveValue="{Exception: Value is not a primitive type}" Type="System.Char[,]"> @@ -1013,6 +1042,7 @@ namespace Debugger.Tests { Expression="argStruct" IsInvalid="False" IsNull="False" + IsReference="False" PrimitiveValue="{Exception: Value is not a primitive type}" Type="Point"> @@ -1038,6 +1068,7 @@ namespace Debugger.Tests { Expression="argStructByRef" IsInvalid="False" IsNull="False" + IsReference="False" PrimitiveValue="{Exception: Value is not a primitive type}" Type="Point"> @@ -1063,6 +1094,7 @@ namespace Debugger.Tests { Expression="argStructPtr" IsInvalid="False" IsNull="False" + IsReference="True" PrimitiveValue="{Exception: Value is not a primitive type}" Type="Point*"> @@ -1099,6 +1131,7 @@ namespace Debugger.Tests { Expression="argBox" IsInvalid="False" IsNull="False" + IsReference="True" PrimitiveValue="{Exception: Value is not a primitive type}" Type="System.Int32"> @@ -1124,6 +1157,7 @@ namespace Debugger.Tests { Expression="argBoxByRef" IsInvalid="False" IsNull="False" + IsReference="True" PrimitiveValue="{Exception: Value is not a primitive type}" Type="System.Int32"> diff --git a/src/AddIns/Misc/Debugger/Debugger.Tests/Project/Src/TestPrograms/Expressions.cs b/src/AddIns/Misc/Debugger/Debugger.Tests/Project/Src/TestPrograms/Expressions.cs index d75e6ef310..3d60d23460 100644 --- a/src/AddIns/Misc/Debugger/Debugger.Tests/Project/Src/TestPrograms/Expressions.cs +++ b/src/AddIns/Misc/Debugger/Debugger.Tests/Project/Src/TestPrograms/Expressions.cs @@ -89,6 +89,7 @@ namespace Debugger.Tests { Expression="arg" IsInvalid="False" IsNull="False" + IsReference="True" PrimitiveValue="argValue" Type="System.String" /> @@ -105,6 +106,7 @@ namespace Debugger.Tests { Expression="i" IsInvalid="False" IsNull="False" + IsReference="False" PrimitiveValue="0" Type="System.Int32" /> @@ -117,6 +119,7 @@ namespace Debugger.Tests { Expression="array" IsInvalid="False" IsNull="False" + IsReference="True" PrimitiveValue="{Exception: Value is not a primitive type}" Type="System.String[]" /> @@ -129,6 +132,7 @@ namespace Debugger.Tests { Expression="array2" IsInvalid="False" IsNull="False" + IsReference="True" PrimitiveValue="{Exception: Value is not a primitive type}" Type="System.String[,]" /> @@ -143,6 +147,7 @@ namespace Debugger.Tests { Expression="this.name" IsInvalid="False" IsNull="False" + IsReference="True" PrimitiveValue="derived name" Type="System.String" /> @@ -155,6 +160,7 @@ namespace Debugger.Tests { Expression="this.Value" IsInvalid="False" IsNull="False" + IsReference="True" PrimitiveValue="derived value" Type="System.String" /> @@ -167,6 +173,7 @@ namespace Debugger.Tests { Expression="this.field" IsInvalid="False" IsNull="False" + IsReference="True" PrimitiveValue="field value" Type="System.String" /> @@ -179,6 +186,7 @@ namespace Debugger.Tests { Expression="this.array" IsInvalid="False" IsNull="False" + IsReference="True" PrimitiveValue="{Exception: Value is not a primitive type}" Type="System.String[]" /> @@ -191,6 +199,7 @@ namespace Debugger.Tests { Expression="this.Name" IsInvalid="False" IsNull="False" + IsReference="True" PrimitiveValue="derived name" Type="System.String" /> @@ -203,6 +212,7 @@ namespace Debugger.Tests { Expression="this.name" IsInvalid="False" IsNull="False" + IsReference="True" PrimitiveValue="base name" Type="System.String" /> @@ -215,6 +225,7 @@ namespace Debugger.Tests { Expression="this.Value" IsInvalid="False" IsNull="False" + IsReference="True" PrimitiveValue="base value" Type="System.String" /> @@ -227,6 +238,7 @@ namespace Debugger.Tests { Expression="this.Name" IsInvalid="False" IsNull="False" + IsReference="True" PrimitiveValue="base name" Type="System.String" /> diff --git a/src/AddIns/Misc/Debugger/Debugger.Tests/Project/Src/TestPrograms/FunctionArgumentVariables.cs b/src/AddIns/Misc/Debugger/Debugger.Tests/Project/Src/TestPrograms/FunctionArgumentVariables.cs index 5479666222..65546a9eb9 100644 --- a/src/AddIns/Misc/Debugger/Debugger.Tests/Project/Src/TestPrograms/FunctionArgumentVariables.cs +++ b/src/AddIns/Misc/Debugger/Debugger.Tests/Project/Src/TestPrograms/FunctionArgumentVariables.cs @@ -106,6 +106,7 @@ namespace Debugger.Tests { Expression="i" IsInvalid="False" IsNull="False" + IsReference="False" PrimitiveValue="1" Type="System.Int32" /> @@ -118,6 +119,7 @@ namespace Debugger.Tests { Expression="s" IsInvalid="False" IsNull="False" + IsReference="True" PrimitiveValue="A" Type="System.String" /> @@ -130,6 +132,7 @@ namespace Debugger.Tests { Expression="s_null" IsInvalid="False" IsNull="True" + IsReference="True" PrimitiveValue="null" Type="System.String" /> @@ -142,6 +145,7 @@ namespace Debugger.Tests { Expression="ref_i" IsInvalid="False" IsNull="False" + IsReference="False" PrimitiveValue="2" Type="System.Int32" /> @@ -154,6 +158,7 @@ namespace Debugger.Tests { Expression="out_i" IsInvalid="False" IsNull="False" + IsReference="False" PrimitiveValue="3" Type="System.Int32" /> @@ -166,6 +171,7 @@ namespace Debugger.Tests { Expression="out_i2" IsInvalid="False" IsNull="False" + IsReference="False" PrimitiveValue="0" Type="System.Int32" /> @@ -178,6 +184,7 @@ namespace Debugger.Tests { Expression="ref_s" IsInvalid="False" IsNull="False" + IsReference="True" PrimitiveValue="B" Type="System.String" /> @@ -190,6 +197,7 @@ namespace Debugger.Tests { Expression="iNull" IsInvalid="False" IsNull="False" + IsReference="False" PrimitiveValue="{Exception: Value is not a primitive type}" Type="System.Nullable<System.Int32>" /> @@ -202,6 +210,7 @@ namespace Debugger.Tests { Expression="iNull_null" IsInvalid="False" IsNull="False" + IsReference="False" PrimitiveValue="{Exception: Value is not a primitive type}" Type="System.Nullable<System.Int32>" /> @@ -219,6 +228,7 @@ namespace Debugger.Tests { Expression="args" IsInvalid="False" IsNull="False" + IsReference="True" PrimitiveValue="{Exception: Value is not a primitive type}" Type="System.String[]" /> @@ -236,6 +246,7 @@ namespace Debugger.Tests { Expression="args" IsInvalid="False" IsNull="False" + IsReference="True" PrimitiveValue="{Exception: Value is not a primitive type}" Type="System.String[]" /> @@ -253,6 +264,7 @@ namespace Debugger.Tests { Expression="args" IsInvalid="False" IsNull="False" + IsReference="True" PrimitiveValue="{Exception: Value is not a primitive type}" Type="System.String[]" /> @@ -270,6 +282,7 @@ namespace Debugger.Tests { Expression="i" IsInvalid="False" IsNull="False" + IsReference="False" PrimitiveValue="1" Type="System.Int32" /> @@ -282,6 +295,7 @@ namespace Debugger.Tests { Expression="s" IsInvalid="False" IsNull="False" + IsReference="True" PrimitiveValue="A" Type="System.String" /> diff --git a/src/AddIns/Misc/Debugger/Debugger.Tests/Project/Src/TestPrograms/FunctionLocalVariables.cs b/src/AddIns/Misc/Debugger/Debugger.Tests/Project/Src/TestPrograms/FunctionLocalVariables.cs index 5b6f562f40..884ba1a765 100644 --- a/src/AddIns/Misc/Debugger/Debugger.Tests/Project/Src/TestPrograms/FunctionLocalVariables.cs +++ b/src/AddIns/Misc/Debugger/Debugger.Tests/Project/Src/TestPrograms/FunctionLocalVariables.cs @@ -61,6 +61,7 @@ namespace Debugger.Tests { Expression="i" IsInvalid="False" IsNull="False" + IsReference="False" PrimitiveValue="0" Type="System.Int32" /> @@ -73,6 +74,7 @@ namespace Debugger.Tests { Expression="s" IsInvalid="False" IsNull="False" + IsReference="True" PrimitiveValue="S" Type="System.String" /> @@ -85,6 +87,7 @@ namespace Debugger.Tests { Expression="args" IsInvalid="False" IsNull="False" + IsReference="True" PrimitiveValue="{Exception: Value is not a primitive type}" Type="System.String[]" /> @@ -97,6 +100,7 @@ namespace Debugger.Tests { Expression="n" IsInvalid="False" IsNull="True" + IsReference="True" PrimitiveValue="{Exception: Value is not a primitive type}" Type="System.Object" /> @@ -109,6 +113,7 @@ namespace Debugger.Tests { Expression="o" IsInvalid="False" IsNull="False" + IsReference="True" PrimitiveValue="{Exception: Value is not a primitive type}" Type="System.Object" /> diff --git a/src/AddIns/Misc/Debugger/Debugger.Tests/Project/Src/TestPrograms/FunctionVariablesLifetime.cs b/src/AddIns/Misc/Debugger/Debugger.Tests/Project/Src/TestPrograms/FunctionVariablesLifetime.cs index 631bd4bada..1f717f4e0b 100644 --- a/src/AddIns/Misc/Debugger/Debugger.Tests/Project/Src/TestPrograms/FunctionVariablesLifetime.cs +++ b/src/AddIns/Misc/Debugger/Debugger.Tests/Project/Src/TestPrograms/FunctionVariablesLifetime.cs @@ -108,6 +108,7 @@ namespace Debugger.Tests { Expression="argument" IsInvalid="False" IsNull="False" + IsReference="False" PrimitiveValue="1" Type="System.Int32" /> @@ -120,6 +121,7 @@ namespace Debugger.Tests { Expression="local" IsInvalid="False" IsNull="False" + IsReference="False" PrimitiveValue="2" Type="System.Int32" /> @@ -132,6 +134,7 @@ namespace Debugger.Tests { Expression="this.class" IsInvalid="False" IsNull="False" + IsReference="False" PrimitiveValue="3" Type="System.Int32" /> @@ -145,6 +148,7 @@ namespace Debugger.Tests { Expression="argument" IsInvalid="True" IsNull="{Exception: Value is no longer valid}" + IsReference="{Exception: Value is no longer valid}" PrimitiveValue="{Exception: Value is no longer valid}" Type="System.Int32" /> @@ -157,6 +161,7 @@ namespace Debugger.Tests { Expression="local" IsInvalid="True" IsNull="{Exception: Value is no longer valid}" + IsReference="{Exception: Value is no longer valid}" PrimitiveValue="{Exception: Value is no longer valid}" Type="System.Int32" /> @@ -169,6 +174,7 @@ namespace Debugger.Tests { Expression="this.class" IsInvalid="True" IsNull="{Exception: Value is no longer valid}" + IsReference="{Exception: Value is no longer valid}" PrimitiveValue="{Exception: Value is no longer valid}" Type="System.Int32" /> @@ -181,6 +187,7 @@ namespace Debugger.Tests { Expression="localInSubFunction" IsInvalid="False" IsNull="False" + IsReference="False" PrimitiveValue="4" Type="System.Int32" /> @@ -194,6 +201,7 @@ namespace Debugger.Tests { Expression="argument" IsInvalid="True" IsNull="{Exception: Value is no longer valid}" + IsReference="{Exception: Value is no longer valid}" PrimitiveValue="{Exception: Value is no longer valid}" Type="System.Int32" /> @@ -206,6 +214,7 @@ namespace Debugger.Tests { Expression="local" IsInvalid="True" IsNull="{Exception: Value is no longer valid}" + IsReference="{Exception: Value is no longer valid}" PrimitiveValue="{Exception: Value is no longer valid}" Type="System.Int32" /> @@ -218,6 +227,7 @@ namespace Debugger.Tests { Expression="this.class" IsInvalid="True" IsNull="{Exception: Value is no longer valid}" + IsReference="{Exception: Value is no longer valid}" PrimitiveValue="{Exception: Value is no longer valid}" Type="System.Int32" /> @@ -230,6 +240,7 @@ namespace Debugger.Tests { Expression="localInSubFunction" IsInvalid="True" IsNull="{Exception: Value is no longer valid}" + IsReference="{Exception: Value is no longer valid}" PrimitiveValue="{Exception: Value is no longer valid}" Type="System.Int32" /> @@ -243,6 +254,7 @@ namespace Debugger.Tests { Expression="argument" IsInvalid="True" IsNull="{Exception: Value is no longer valid}" + IsReference="{Exception: Value is no longer valid}" PrimitiveValue="{Exception: Value is no longer valid}" Type="System.Int32" /> @@ -255,6 +267,7 @@ namespace Debugger.Tests { Expression="local" IsInvalid="True" IsNull="{Exception: Value is no longer valid}" + IsReference="{Exception: Value is no longer valid}" PrimitiveValue="{Exception: Value is no longer valid}" Type="System.Int32" /> @@ -267,6 +280,7 @@ namespace Debugger.Tests { Expression="this.class" IsInvalid="True" IsNull="{Exception: Value is no longer valid}" + IsReference="{Exception: Value is no longer valid}" PrimitiveValue="{Exception: Value is no longer valid}" Type="System.Int32" /> @@ -279,6 +293,7 @@ namespace Debugger.Tests { Expression="localInSubFunction" IsInvalid="True" IsNull="{Exception: Value is no longer valid}" + IsReference="{Exception: Value is no longer valid}" PrimitiveValue="{Exception: Value is no longer valid}" Type="System.Int32" /> @@ -291,6 +306,7 @@ namespace Debugger.Tests { Expression="localInSubFunction" IsInvalid="False" IsNull="False" + IsReference="False" PrimitiveValue="4" Type="System.Int32" /> @@ -304,6 +320,7 @@ namespace Debugger.Tests { Expression="argument" IsInvalid="True" IsNull="{Exception: Value is no longer valid}" + IsReference="{Exception: Value is no longer valid}" PrimitiveValue="{Exception: Value is no longer valid}" Type="System.Int32" /> @@ -316,6 +333,7 @@ namespace Debugger.Tests { Expression="local" IsInvalid="True" IsNull="{Exception: Value is no longer valid}" + IsReference="{Exception: Value is no longer valid}" PrimitiveValue="{Exception: Value is no longer valid}" Type="System.Int32" /> @@ -328,6 +346,7 @@ namespace Debugger.Tests { Expression="this.class" IsInvalid="True" IsNull="{Exception: Value is no longer valid}" + IsReference="{Exception: Value is no longer valid}" PrimitiveValue="{Exception: Value is no longer valid}" Type="System.Int32" /> @@ -340,6 +359,7 @@ namespace Debugger.Tests { Expression="localInSubFunction" IsInvalid="True" IsNull="{Exception: Value is no longer valid}" + IsReference="{Exception: Value is no longer valid}" PrimitiveValue="{Exception: Value is no longer valid}" Type="System.Int32" /> diff --git a/src/AddIns/Misc/Debugger/Debugger.Tests/Project/Src/TestPrograms/Generics.cs b/src/AddIns/Misc/Debugger/Debugger.Tests/Project/Src/TestPrograms/Generics.cs index 682ea4fc8c..3a1e2cc18a 100644 --- a/src/AddIns/Misc/Debugger/Debugger.Tests/Project/Src/TestPrograms/Generics.cs +++ b/src/AddIns/Misc/Debugger/Debugger.Tests/Project/Src/TestPrograms/Generics.cs @@ -180,6 +180,7 @@ namespace Debugger.Tests { Expression="v" IsInvalid="False" IsNull="False" + IsReference="False" PrimitiveValue="1" Type="System.Int32" /> @@ -192,6 +193,7 @@ namespace Debugger.Tests { Expression="k" IsInvalid="False" IsNull="False" + IsReference="True" PrimitiveValue="1!" Type="System.String" /> @@ -245,6 +247,7 @@ namespace Debugger.Tests { Expression="v" IsInvalid="False" IsNull="False" + IsReference="False" PrimitiveValue="2" Type="System.Int32" /> @@ -257,6 +260,7 @@ namespace Debugger.Tests { Expression="k" IsInvalid="False" IsNull="False" + IsReference="True" PrimitiveValue="2!" Type="System.String" /> @@ -310,6 +314,7 @@ namespace Debugger.Tests { Expression="v" IsInvalid="False" IsNull="False" + IsReference="False" PrimitiveValue="3" Type="System.Int32" /> @@ -322,6 +327,7 @@ namespace Debugger.Tests { Expression="k" IsInvalid="False" IsNull="False" + IsReference="True" PrimitiveValue="3!" Type="System.String" /> @@ -375,6 +381,7 @@ namespace Debugger.Tests { Expression="v" IsInvalid="False" IsNull="False" + IsReference="False" PrimitiveValue="4" Type="System.Int32" /> @@ -387,6 +394,7 @@ namespace Debugger.Tests { Expression="k" IsInvalid="False" IsNull="False" + IsReference="True" PrimitiveValue="4!" Type="System.String" /> @@ -440,6 +448,7 @@ namespace Debugger.Tests { Expression="v" IsInvalid="False" IsNull="False" + IsReference="False" PrimitiveValue="5" Type="System.Int32" /> @@ -452,6 +461,7 @@ namespace Debugger.Tests { Expression="k" IsInvalid="False" IsNull="False" + IsReference="True" PrimitiveValue="5!" Type="System.String" /> @@ -505,6 +515,7 @@ namespace Debugger.Tests { Expression="v" IsInvalid="False" IsNull="False" + IsReference="False" PrimitiveValue="6" Type="System.Int32" /> @@ -517,6 +528,7 @@ namespace Debugger.Tests { Expression="k" IsInvalid="False" IsNull="False" + IsReference="True" PrimitiveValue="6!" Type="System.String" /> @@ -570,6 +582,7 @@ namespace Debugger.Tests { Expression="v" IsInvalid="False" IsNull="False" + IsReference="False" PrimitiveValue="7" Type="System.Int32" /> @@ -582,6 +595,7 @@ namespace Debugger.Tests { Expression="k" IsInvalid="False" IsNull="False" + IsReference="True" PrimitiveValue="7!" Type="System.String" /> @@ -635,6 +649,7 @@ namespace Debugger.Tests { Expression="v" IsInvalid="False" IsNull="False" + IsReference="False" PrimitiveValue="8" Type="System.Int32" /> @@ -647,6 +662,7 @@ namespace Debugger.Tests { Expression="k" IsInvalid="False" IsNull="False" + IsReference="True" PrimitiveValue="8!" Type="System.String" /> @@ -661,6 +677,7 @@ namespace Debugger.Tests { Expression="gClass.Prop" IsInvalid="False" IsNull="False" + IsReference="False" PrimitiveValue="0" Type="System.Int32" /> @@ -673,6 +690,7 @@ namespace Debugger.Tests { Expression="Debugger.Tests.TestPrograms.GenericClass<System.Int32,System.String>.StaticProp" IsInvalid="False" IsNull="False" + IsReference="False" PrimitiveValue="0" Type="System.Int32" /> diff --git a/src/AddIns/Misc/Debugger/Debugger.Tests/Project/Src/TestPrograms/PrimitiveValue.cs b/src/AddIns/Misc/Debugger/Debugger.Tests/Project/Src/TestPrograms/PrimitiveValue.cs index ca881f39f0..ca1cf5d6f5 100644 --- a/src/AddIns/Misc/Debugger/Debugger.Tests/Project/Src/TestPrograms/PrimitiveValue.cs +++ b/src/AddIns/Misc/Debugger/Debugger.Tests/Project/Src/TestPrograms/PrimitiveValue.cs @@ -68,6 +68,7 @@ namespace Debugger.Tests { Expression="b" IsInvalid="False" IsNull="False" + IsReference="False" PrimitiveValue="True" Type="System.Boolean"> @@ -104,6 +105,7 @@ namespace Debugger.Tests { Expression="i" IsInvalid="False" IsNull="False" + IsReference="False" PrimitiveValue="5" Type="System.Int32"> @@ -140,6 +142,7 @@ namespace Debugger.Tests { Expression="s" IsInvalid="False" IsNull="False" + IsReference="True" PrimitiveValue="five" Type="System.String"> @@ -176,6 +179,7 @@ namespace Debugger.Tests { Expression="d" IsInvalid="False" IsNull="False" + IsReference="False" PrimitiveValue="5.5" Type="System.Double"> diff --git a/src/AddIns/Misc/Debugger/Debugger.Tests/Project/Src/TestPrograms/ValueType.cs b/src/AddIns/Misc/Debugger/Debugger.Tests/Project/Src/TestPrograms/ValueType.cs index 70afcdfbb8..0d53dab77a 100644 --- a/src/AddIns/Misc/Debugger/Debugger.Tests/Project/Src/TestPrograms/ValueType.cs +++ b/src/AddIns/Misc/Debugger/Debugger.Tests/Project/Src/TestPrograms/ValueType.cs @@ -62,6 +62,7 @@ namespace Debugger.Tests { Expression="this" IsInvalid="False" IsNull="False" + IsReference="False" PrimitiveValue="{Exception: Value is not a primitive type}" Type="Debugger.Tests.ValueType">