From 0a09a46920724d391317b525f24eb8427f9c018c Mon Sep 17 00:00:00 2001 From: Lluis Sanchez Date: Thu, 3 Dec 2009 15:47:25 +0000 Subject: svn path=/branches/monodevelop/extras/MonoDevelop.Debugger.Win32/2.2/; revision=147564 --- .../MonoDevelop.Debugger.Win32/CorApi2/Metadata/CorMetadata.cs | 3 +++ .../MonoDevelop.Debugger.Win32/CorDebuggerSession.cs | 5 ++--- .../MonoDevelop.Debugger.Win32/CorObjectAdaptor.cs | 10 ++++++---- .../MonoDevelop.Debugger.Win32/PropertyReference.cs | 3 ++- 4 files changed, 13 insertions(+), 8 deletions(-) diff --git a/extras/MonoDevelop.Debugger.Win32/CorApi2/Metadata/CorMetadata.cs b/extras/MonoDevelop.Debugger.Win32/CorApi2/Metadata/CorMetadata.cs index 1e15c6dce2..483d09a9eb 100644 --- a/extras/MonoDevelop.Debugger.Win32/CorApi2/Metadata/CorMetadata.cs +++ b/extras/MonoDevelop.Debugger.Win32/CorApi2/Metadata/CorMetadata.cs @@ -875,6 +875,9 @@ namespace Microsoft.Samples.Debugging.CorMetadata if (attr != null) attributes.Add (attr); attr = MetadataHelperFunctions.GetCustomAttribute (importer, token, typeof (System.Diagnostics.DebuggerBrowsableAttribute)); + if (attr != null) + attributes.Add (attr); + attr = MetadataHelperFunctions.GetCustomAttribute (importer, token, typeof (System.Runtime.CompilerServices.CompilerGeneratedAttribute)); if (attr != null) attributes.Add (attr); diff --git a/extras/MonoDevelop.Debugger.Win32/MonoDevelop.Debugger.Win32/CorDebuggerSession.cs b/extras/MonoDevelop.Debugger.Win32/MonoDevelop.Debugger.Win32/CorDebuggerSession.cs index 0b6c8581ae..a9f30a1d69 100644 --- a/extras/MonoDevelop.Debugger.Win32/MonoDevelop.Debugger.Win32/CorDebuggerSession.cs +++ b/extras/MonoDevelop.Debugger.Win32/MonoDevelop.Debugger.Win32/CorDebuggerSession.cs @@ -715,10 +715,9 @@ namespace MonoDevelop.Debugger.Win32 process.OnEvalComplete += completeHandler; process.OnEvalException += exceptionHandler; - OnStartEvaluating (); ctx.Eval.NewString (value); - process.SetAllThreadsDebugState (CorDebugThreadState.THREAD_SUSPEND, ctx.Thread); + OnStartEvaluating (); ClearEvalStatus (); process.Continue (false); @@ -884,7 +883,7 @@ namespace MonoDevelop.Debugger.Win32 CorEvaluationContext cctx = (CorEvaluationContext) ctx; CorObjectAdaptor actx = (CorObjectAdaptor) ctx.Adapter; if (actx.IsEnum (ctx, thisVal.Val.ExactType) && !actx.IsEnum (ctx, val.Val.ExactType)) { - ValueReference vr = actx.GetMember (ctx, thisVal, "value__"); + ValueReference vr = actx.GetMember (ctx, null, thisVal, "value__"); vr.Value = val; // Required to make sure that var returns an up-to-date value object thisVal.IsValid = false; diff --git a/extras/MonoDevelop.Debugger.Win32/MonoDevelop.Debugger.Win32/CorObjectAdaptor.cs b/extras/MonoDevelop.Debugger.Win32/MonoDevelop.Debugger.Win32/CorObjectAdaptor.cs index 8f438e1b75..c48838f973 100644 --- a/extras/MonoDevelop.Debugger.Win32/MonoDevelop.Debugger.Win32/CorObjectAdaptor.cs +++ b/extras/MonoDevelop.Debugger.Win32/MonoDevelop.Debugger.Win32/CorObjectAdaptor.cs @@ -418,9 +418,6 @@ namespace MonoDevelop.Debugger.Win32 CorType t = (CorType) tt; CorValRef val = (CorValRef) gval; - if (val != null) - t = GetRealObject (ctx, val).ExactType; - if (t.Class == null) yield break; @@ -509,7 +506,7 @@ namespace MonoDevelop.Debugger.Win32 MetadataType rt = co.ExactType.Class.GetTypeInfo (cctx.Session) as MetadataType; bool isFlags = rt != null && rt.ReallyIsFlagsEnum; string enumName = GetTypeName (ctx, co.ExactType); - ValueReference val = GetMember (ctx, objr, "value__"); + ValueReference val = GetMember (ctx, null, objr, "value__"); ulong nval = (ulong) Convert.ChangeType (val.ObjectValue, typeof(ulong)); ulong remainingFlags = nval; string flags = null; @@ -684,6 +681,11 @@ namespace MonoDevelop.Debugger.Win32 foreach (MemberInfo m in mems) { object[] atts = m.GetCustomAttributes (typeof (DebuggerBrowsableAttribute), false); + if (atts.Length == 0) { + atts = m.GetCustomAttributes (typeof (System.Runtime.CompilerServices.CompilerGeneratedAttribute), false); + if (atts.Length > 0) + atts[0] = new DebuggerBrowsableAttribute (DebuggerBrowsableState.Never); + } if (atts.Length > 0) { if (td == null) td = new TypeDisplayData (); if (td.MemberData == null) td.MemberData = new Dictionary (); diff --git a/extras/MonoDevelop.Debugger.Win32/MonoDevelop.Debugger.Win32/PropertyReference.cs b/extras/MonoDevelop.Debugger.Win32/MonoDevelop.Debugger.Win32/PropertyReference.cs index 74cb18af90..cd3c8eb0bc 100644 --- a/extras/MonoDevelop.Debugger.Win32/MonoDevelop.Debugger.Win32/PropertyReference.cs +++ b/extras/MonoDevelop.Debugger.Win32/MonoDevelop.Debugger.Win32/PropertyReference.cs @@ -52,10 +52,11 @@ namespace MonoDevelop.Debugger.Win32 : base (ctx) { this.prop = prop; - this.thisobj = thisobj; this.declaringType = declaringType; this.module = declaringType.Class.Module; this.index = index; + if (!prop.GetGetMethod (true).IsStatic) + this.thisobj = thisobj; loader = delegate { return ((CorValRef)Value).Val; -- cgit v1.2.3