summaryrefslogtreecommitdiff
path: root/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/nodes/XStackFrameNode.java
diff options
context:
space:
mode:
Diffstat (limited to 'platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/nodes/XStackFrameNode.java')
-rw-r--r--platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/nodes/XStackFrameNode.java37
1 files changed, 37 insertions, 0 deletions
diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/nodes/XStackFrameNode.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/nodes/XStackFrameNode.java
index fa32ebcc4d75..b7b21560f438 100644
--- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/nodes/XStackFrameNode.java
+++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/nodes/XStackFrameNode.java
@@ -15,7 +15,16 @@
*/
package com.intellij.xdebugger.impl.ui.tree.nodes;
+import com.intellij.openapi.util.registry.Registry;
+import com.intellij.xdebugger.XDebugSession;
+import com.intellij.xdebugger.XExpression;
+import com.intellij.xdebugger.evaluation.XDebuggerEvaluator;
import com.intellij.xdebugger.frame.XStackFrame;
+import com.intellij.xdebugger.frame.XValue;
+import com.intellij.xdebugger.frame.XValueChildrenList;
+import com.intellij.xdebugger.impl.XDebugSessionImpl;
+import com.intellij.xdebugger.impl.frame.XDebugView;
+import com.intellij.xdebugger.impl.ui.XDebugSessionData;
import com.intellij.xdebugger.impl.ui.tree.XDebuggerTree;
import org.jetbrains.annotations.NotNull;
@@ -27,4 +36,32 @@ public class XStackFrameNode extends XValueContainerNode<XStackFrame> {
super(tree, null, xStackFrame);
setLeaf(false);
}
+
+ @Override
+ public void startComputingChildren() {
+ if (Registry.is("debugger.watches.in.variables")) {
+ XDebugSession session = XDebugView.getSession(getTree());
+ XDebuggerEvaluator evaluator = getValueContainer().getEvaluator();
+ if (session != null && evaluator != null) {
+ XDebugSessionData data = ((XDebugSessionImpl)session).getSessionData();
+ XExpression[] expressions = data.getWatchExpressions();
+ for (final XExpression expression : expressions) {
+ evaluator.evaluate(expression, new XDebuggerEvaluator.XEvaluationCallback() {
+ @Override
+ public void evaluated(@NotNull XValue result) {
+ XValueChildrenList watches = new XValueChildrenList();
+ watches.add(expression.getExpression(), result);
+ addChildren(watches, false);
+ }
+
+ @Override
+ public void errorOccurred(@NotNull String errorMessage) {
+ // do not add anything
+ }
+ }, getValueContainer().getSourcePosition());
+ }
+ }
+ }
+ super.startComputingChildren();
+ }
}