diff --git a/src/AddIns/Misc/CodeCoverage/Project/CodeCoverage.csproj b/src/AddIns/Misc/CodeCoverage/Project/CodeCoverage.csproj
index 5ada7fb76a..9dd0f3db4d 100644
--- a/src/AddIns/Misc/CodeCoverage/Project/CodeCoverage.csproj
+++ b/src/AddIns/Misc/CodeCoverage/Project/CodeCoverage.csproj
@@ -1,4 +1,4 @@
-
+
Library
ICSharpCode.CodeCoverage
@@ -15,6 +15,7 @@
4096
4
false
+ v2.0
..\..\..\..\..\AddIns\AddIns\Misc\CodeCoverage\
@@ -118,4 +119,4 @@
-
\ No newline at end of file
+
diff --git a/src/AddIns/Misc/CodeCoverage/Project/Src/CodeCoverageClassTreeNode.cs b/src/AddIns/Misc/CodeCoverage/Project/Src/CodeCoverageClassTreeNode.cs
index eb3ae126ab..34ddc2b680 100644
--- a/src/AddIns/Misc/CodeCoverage/Project/Src/CodeCoverageClassTreeNode.cs
+++ b/src/AddIns/Misc/CodeCoverage/Project/Src/CodeCoverageClassTreeNode.cs
@@ -20,10 +20,18 @@ namespace ICSharpCode.CodeCoverage
public override void ActivateItem()
{
if (Nodes.Count > 0) {
- CodeCoverageMethodTreeNode methodNode = (CodeCoverageMethodTreeNode)Nodes[0];
- if (methodNode.Method.SequencePoints.Count > 0) {
+ CodeCoverageMethodTreeNode methodNode = Nodes[0] as CodeCoverageMethodTreeNode;
+ if (methodNode != null && methodNode.Method.SequencePoints.Count > 0) {
FileService.OpenFile(methodNode.Method.SequencePoints[0].Document);
}
+ // when the first node is a property:
+ CodeCoverageMethodsTreeNode methodsNode = Nodes[0] as CodeCoverageMethodsTreeNode;
+ if (methodsNode != null && methodsNode.Methods.Count > 0) {
+ var sequencePoints = methodsNode.Methods[0].SequencePoints;
+ if (sequencePoints != null) {
+ FileService.OpenFile(sequencePoints[0].Document);
+ }
+ }
}
}
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 065ffacfb9..0699b72a2f 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
@@ -93,18 +93,28 @@ namespace Debugger.AddIn
public override object VisitInvocationExpression(InvocationExpression invocationExpression, object data)
{
+ Value target;
+ string methodName;
MemberReferenceExpression memberRef = invocationExpression.TargetObject as MemberReferenceExpression;
- if (memberRef == null) {
- throw new GetValueException("Member reference expected duting method invocation");
+ if (memberRef != null) {
+ target = ((Value)memberRef.TargetObject.AcceptVisitor(this, null)).GetPermanentReference();
+ methodName = memberRef.MemberName;
+ } else {
+ IdentifierExpression ident = invocationExpression.TargetObject as IdentifierExpression;
+ if (ident != null) {
+ target = context.GetThisValue();
+ methodName = ident.Identifier;
+ } else {
+ throw new GetValueException("Member reference expected for method invocation");
+ }
}
- Value target = ((Value)memberRef.TargetObject.AcceptVisitor(this, null)).GetPermanentReference();
List args = new List();
foreach(Expression expr in invocationExpression.Arguments) {
args.Add(((Value)expr.AcceptVisitor(this, null)).GetPermanentReference());
}
- MethodInfo method = target.Type.GetMember(memberRef.MemberName, BindingFlags.Method | BindingFlags.IncludeSuperType) as MethodInfo;
+ MethodInfo method = target.Type.GetMember(methodName, BindingFlags.Method | BindingFlags.IncludeSuperType) as MethodInfo;
if (method == null) {
- throw new GetValueException("Method " + memberRef.MemberName + " not found");
+ throw new GetValueException("Method " + methodName + " not found");
}
return target.InvokeMethod(method, args.ToArray());
}
@@ -175,8 +185,8 @@ namespace Debugger.AddIn
// case BinaryOperatorType.GreaterThanOrEqual :
// val.PrimitiveValue = (right.PrimitiveValue >= left.PrimitiveValue);
// break;
- default :
- throw new NotImplementedException("BinaryOperator: " + binaryOperatorExpression.Op + "!");
+ default:
+ throw new NotImplementedException("BinaryOperator: " + binaryOperatorExpression.Op);
}
} catch (System.Exception e) {
throw new GetValueException(e.Message);