Browse Source

fix Debugger: Move mouse over static event -> crash 'unknown member type'

pull/45/merge
Siegfried Pammer 13 years ago
parent
commit
1300a4bcd9
  1. 5
      src/AddIns/Debugger/Debugger.AddIn/NRefactory/ExpressionEvaluationVisitor.cs
  2. 10
      src/AddIns/Debugger/Debugger.Core/Value.cs

5
src/AddIns/Debugger/Debugger.AddIn/NRefactory/ExpressionEvaluationVisitor.cs

@ -464,7 +464,10 @@ namespace Debugger.AddIn
string Visit(MemberResolveResult result) string Visit(MemberResolveResult result)
{ {
return Print(result.TargetResult) + "." + result.Member.Name; string text = Print(result.TargetResult);
if (!string.IsNullOrWhiteSpace(text))
text += ".";
return text + result.Member.Name;
} }
string Visit(OperatorResolveResult result) string Visit(OperatorResolveResult result)

10
src/AddIns/Debugger/Debugger.Core/Value.cs

@ -416,6 +416,16 @@ namespace Debugger
return GetPropertyValue(evalThread, objectInstance, (IProperty)memberInfo, arguments); return GetPropertyValue(evalThread, objectInstance, (IProperty)memberInfo, arguments);
} else if (memberInfo is IMethod) { } else if (memberInfo is IMethod) {
return InvokeMethod(evalThread, objectInstance, (IMethod)memberInfo, arguments); return InvokeMethod(evalThread, objectInstance, (IMethod)memberInfo, arguments);
} else if (memberInfo is IEvent) {
string name = memberInfo.Name;
IField f = memberInfo.DeclaringType.GetFields(m => m.Name == name, GetMemberOptions.None).FirstOrDefault();
if (f == null) {
name += "Event";
f = memberInfo.DeclaringType.GetFields(m => m.Name == name, GetMemberOptions.None).FirstOrDefault();
}
if (f == null)
throw new GetValueException("Cannot retrieve event value");
return GetFieldValue(evalThread, objectInstance, f);
} }
throw new DebuggerException("Unknown member type: " + memberInfo.GetType()); throw new DebuggerException("Unknown member type: " + memberInfo.GetType());
} }

Loading…
Cancel
Save