From cf80dece3053cc6657bec0e569bcca0649723d16 Mon Sep 17 00:00:00 2001 From: akibayashi Date: Sat, 20 Apr 2019 14:20:36 +0800 Subject: [PATCH 1/2] Implement "VisitAssignment" method I don't know why did VisitAssignment(ResolveResult lhs, ResolveResult rhs) simply throw an excption. I add some code to it, and it looks working well. --- .../Debugger.AddIn/NRefactory/ExpressionEvaluationVisitor.cs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/AddIns/Debugger/Debugger.AddIn/NRefactory/ExpressionEvaluationVisitor.cs b/src/AddIns/Debugger/Debugger.AddIn/NRefactory/ExpressionEvaluationVisitor.cs index 1e534faede..2ba7c91e8a 100644 --- a/src/AddIns/Debugger/Debugger.AddIn/NRefactory/ExpressionEvaluationVisitor.cs +++ b/src/AddIns/Debugger/Debugger.AddIn/NRefactory/ExpressionEvaluationVisitor.cs @@ -247,7 +247,10 @@ namespace Debugger.AddIn Value VisitAssignment(ResolveResult lhs, ResolveResult rhs) { - throw new GetValueException("Assignment not supported!"); + var lhsValue = Convert(lhs); + var rhsValue = Convert(rhs); + lhsValue.SetValue(evalThread, rhsValue); + return Convert(lhs); } Value VisitAssignment(LocalResolveResult lhs, ResolveResult rhs) From 6747794a90642fbe183f69a93d71740ffe2d38b0 Mon Sep 17 00:00:00 2001 From: akibayashi Date: Sun, 5 May 2019 17:31:34 +0800 Subject: [PATCH 2/2] avoid value becoming invalid --- .../Debugger.AddIn/NRefactory/ExpressionEvaluationVisitor.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/AddIns/Debugger/Debugger.AddIn/NRefactory/ExpressionEvaluationVisitor.cs b/src/AddIns/Debugger/Debugger.AddIn/NRefactory/ExpressionEvaluationVisitor.cs index 2ba7c91e8a..d10fd8b0b3 100644 --- a/src/AddIns/Debugger/Debugger.AddIn/NRefactory/ExpressionEvaluationVisitor.cs +++ b/src/AddIns/Debugger/Debugger.AddIn/NRefactory/ExpressionEvaluationVisitor.cs @@ -247,8 +247,8 @@ namespace Debugger.AddIn Value VisitAssignment(ResolveResult lhs, ResolveResult rhs) { - var lhsValue = Convert(lhs); var rhsValue = Convert(rhs); + var lhsValue = Convert(lhs); lhsValue.SetValue(evalThread, rhsValue); return Convert(lhs); }