diff --git a/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Threads/Exception.cs b/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Threads/Exception.cs
index ae5d4b71e5..5fd5234243 100644
--- a/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Threads/Exception.cs
+++ b/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Threads/Exception.cs
@@ -39,7 +39,6 @@ namespace Debugger
Value runtimeValue = new Value(process,
string.Empty,
Expression.Empty,
- new IExpirable[] {process.PauseSession},
delegate { return corValue; } );
message = runtimeValue.GetMember("_message").AsString;
diff --git a/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Threads/Function.cs b/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Threads/Function.cs
index 20a4c71f31..be97a9c9df 100644
--- a/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Threads/Function.cs
+++ b/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Threads/Function.cs
@@ -441,7 +441,6 @@ namespace Debugger
process,
"this",
new Ast.ThisReferenceExpression(),
- new IExpirable[] {this},
delegate { return ThisCorValue; }
);
}
@@ -510,7 +509,6 @@ namespace Debugger
process,
name,
new Ast.ParameterIdentifierExpression(index, name),
- new IExpirable[] {this},
delegate { return GetArgumentCorValue(index); }
);
}
@@ -601,7 +599,6 @@ namespace Debugger
process,
symVar.Name,
new Ast.LocalVariableIdentifierExpression(symVar),
- new IExpirable[] {this},
delegate { return GetCorValueOfLocalVariable(symVar); }
);
}
diff --git a/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Threads/Thread.cs b/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Threads/Thread.cs
index ea1262737c..127d8858b0 100644
--- a/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Threads/Thread.cs
+++ b/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Threads/Thread.cs
@@ -168,7 +168,6 @@ namespace Debugger
process,
string.Empty,
Expression.Empty,
- new IExpirable[] {process.PauseSession},
delegate { return CorThread.Object;}
);
}
diff --git a/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Variables/Evals/Eval.cs b/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Variables/Evals/Eval.cs
index ec5254a4bd..c27909b21d 100644
--- a/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Variables/Evals/Eval.cs
+++ b/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Variables/Evals/Eval.cs
@@ -235,7 +235,6 @@ namespace Debugger
result = new Value(process,
string.Empty,
Expression.Empty,
- new IExpirable[] {},
delegate { return corEval.Result; });
}
}
diff --git a/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Variables/Expressions/Expression.cs b/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Variables/Expressions/Expression.cs
index 5fe3be108d..0af6df48c4 100644
--- a/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Variables/Expressions/Expression.cs
+++ b/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Variables/Expressions/Expression.cs
@@ -20,15 +20,19 @@ namespace Debugger
///
public class Expression: DebuggerObject
{
- public static Expression Empty = null;
+ public static Expression Empty = new Expression(null);
Ast.Expression expressionAst;
public string Code {
get {
- CSharpOutputVisitor csOutVisitor = new CSharpOutputVisitor();
- expressionAst.AcceptVisitor(csOutVisitor, null);
- return csOutVisitor.Text;
+ if (expressionAst != null) {
+ CSharpOutputVisitor csOutVisitor = new CSharpOutputVisitor();
+ expressionAst.AcceptVisitor(csOutVisitor, null);
+ return csOutVisitor.Text;
+ } else {
+ return string.Empty;
+ }
}
}
diff --git a/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Variables/Values/Value.Array.cs b/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Variables/Values/Value.Array.cs
index a9fc553ac0..433aec9792 100644
--- a/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Variables/Values/Value.Array.cs
+++ b/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Variables/Values/Value.Array.cs
@@ -80,7 +80,6 @@ namespace Debugger
Process,
GetNameFromIndices(indices),
GetExpressionFromIndices(indices),
- new IExpirable[] {this},
delegate { return GetCorValueOfArrayElement(indices); }
);
}
diff --git a/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Variables/Values/Value.Object.cs b/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Variables/Values/Value.Object.cs
index 113a5b7bee..e9ebad05a5 100644
--- a/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Variables/Values/Value.Object.cs
+++ b/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Variables/Values/Value.Object.cs
@@ -56,7 +56,6 @@ namespace Debugger
objectInstance.Expression,
fieldInfo
),
- new IExpirable[] {objectInstance},
delegate { return GetFieldCorValue(objectInstance, fieldInfo); }
);
}
@@ -123,7 +122,6 @@ namespace Debugger
objectInstance.Expression,
propertyInfo
),
- dependencies.ToArray(),
delegate { return Value.InvokeMethod(objectInstance, propertyInfo.GetMethod, arguments).RawCorValue; }
);
}
diff --git a/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Variables/Values/Value.cs b/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Variables/Values/Value.cs
index aa07d5cc9e..34884bac6e 100644
--- a/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Variables/Values/Value.cs
+++ b/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Variables/Values/Value.cs
@@ -42,7 +42,7 @@ namespace Debugger
CorValueGetter corValueGetter;
- /// Occurs when the Value can not be used anymore
+ /// Occurs when the Value can not be used
public event EventHandler Expired;
bool isExpired = false;
@@ -177,10 +177,12 @@ namespace Debugger
internal Value(Process process,
string name,
Expression expression,
- IExpirable[] expireDependencies,
CorValueGetter corValueGetter)
{
+ this.process = process;
this.name = name;
+ this.expression = expression;
+ this.corValueGetter = corValueGetter;
// TODO: clean up
if (name.StartsWith("<") && name.Contains(">") && name != "") {
@@ -190,36 +192,13 @@ namespace Debugger
}
}
- this.process = process;
- this.expression = expression;
-
- AddExpireDependency(process);
- foreach(IExpirable exp in expireDependencies) {
- AddExpireDependency(exp);
- }
-
- this.corValueGetter = corValueGetter;
- }
-
- void AddExpireDependency(IExpirable dependency)
- {
- if (dependency.HasExpired) {
- MakeExpired();
- } else {
- dependency.Expired += delegate { MakeExpired(); };
- }
- }
-
- void MakeExpired()
- {
- if (!isExpired) {
- isExpired = true;
- OnExpired(new ValueEventArgs(this));
- }
+ process.DebuggingResumed += delegate {
+ this.isExpired = true;
+ OnExpired(EventArgs.Empty);
+ };
}
- /// Is called when the value expires and can not be
- /// used anymore
+ /// Is called when the value expires and can not be used
protected virtual void OnExpired(EventArgs e)
{
if (Expired != null) {