mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
run callback's error handler on failed evaluation
This commit is contained in:
+5
-3
@@ -24,7 +24,9 @@ import com.intellij.debugger.ui.impl.watch.NodeManagerImpl;
|
||||
import com.intellij.debugger.ui.impl.watch.ValueDescriptorImpl;
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
import com.intellij.psi.PsiExpression;
|
||||
import com.intellij.xdebugger.frame.*;
|
||||
import com.intellij.xdebugger.frame.XCompositeNode;
|
||||
import com.intellij.xdebugger.frame.XValue;
|
||||
import com.intellij.xdebugger.frame.XValueChildrenList;
|
||||
import com.intellij.xdebugger.impl.ui.tree.XDebuggerTree;
|
||||
import com.intellij.xdebugger.impl.ui.tree.XInspectDialog;
|
||||
import com.intellij.xdebugger.impl.ui.tree.actions.XDebuggerTreeActionBase;
|
||||
@@ -63,11 +65,11 @@ public class ShowReferringObjectsAction extends XDebuggerTreeActionBase {
|
||||
@NotNull ValueDescriptorImpl valueDescriptor,
|
||||
@NotNull EvaluationContextImpl evaluationContext,
|
||||
NodeManagerImpl nodeManager) {
|
||||
super(parent, valueDescriptor, evaluationContext, nodeManager);
|
||||
super(parent, valueDescriptor, evaluationContext, nodeManager, false);
|
||||
}
|
||||
|
||||
public ReferringObjectsValue(JavaValue javaValue) {
|
||||
super(null, javaValue.getDescriptor(), javaValue.getEvaluationContext(), null);
|
||||
super(null, javaValue.getDescriptor(), javaValue.getEvaluationContext(), null, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
*/
|
||||
package com.intellij.debugger.engine;
|
||||
|
||||
import com.intellij.debugger.engine.evaluation.EvaluateException;
|
||||
import com.intellij.debugger.engine.evaluation.EvaluationContextImpl;
|
||||
import com.intellij.debugger.engine.evaluation.TextWithImportsImpl;
|
||||
import com.intellij.debugger.engine.events.DebuggerContextCommandImpl;
|
||||
@@ -73,9 +74,16 @@ public class JavaDebuggerEvaluator extends XDebuggerEvaluator {
|
||||
callback.errorOccurred("Context is not available");
|
||||
return;
|
||||
}
|
||||
descriptor.setContext(evalContext);
|
||||
@SuppressWarnings("ThrowableResultOfMethodCallIgnored")
|
||||
EvaluateException exception = descriptor.getEvaluateException();
|
||||
if (exception != null) {
|
||||
callback.errorOccurred(exception.getMessage());
|
||||
return;
|
||||
}
|
||||
JavaDebugProcess process = myDebugProcess.getXdebugProcess();
|
||||
if (process != null) {
|
||||
callback.evaluated(JavaValue.create(descriptor, evalContext, process.getNodeManager()));
|
||||
callback.evaluated(JavaValue.create(null, descriptor, evalContext, process.getNodeManager(), true));
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@@ -370,7 +370,7 @@ public class JavaStackFrame extends XStackFrame {
|
||||
ArgumentValueDescriptorImpl descriptor = myNodeManager.getArgumentValueDescriptor(null, index, value, name);
|
||||
// setContext is required to calculate correct name
|
||||
descriptor.setContext(evaluationContext);
|
||||
return JavaValue.create(descriptor, evaluationContext, myNodeManager);
|
||||
return JavaValue.create(null, descriptor, evaluationContext, myNodeManager, true);
|
||||
}
|
||||
|
||||
protected void superBuildVariables(final EvaluationContextImpl evaluationContext, XValueChildrenList children) throws EvaluateException {
|
||||
|
||||
@@ -66,27 +66,34 @@ public class JavaValue extends XNamedValue implements NodeDescriptorProvider, XV
|
||||
private final ValueDescriptorImpl myValueDescriptor;
|
||||
private final EvaluationContextImpl myEvaluationContext;
|
||||
private final NodeManagerImpl myNodeManager;
|
||||
private final boolean myContextSet;
|
||||
|
||||
protected JavaValue(JavaValue parent,
|
||||
@NotNull ValueDescriptorImpl valueDescriptor,
|
||||
@NotNull EvaluationContextImpl evaluationContext,
|
||||
NodeManagerImpl nodeManager) {
|
||||
NodeManagerImpl nodeManager,
|
||||
boolean contextSet) {
|
||||
super(valueDescriptor.getName());
|
||||
myParent = parent;
|
||||
myValueDescriptor = valueDescriptor;
|
||||
myEvaluationContext = evaluationContext;
|
||||
myNodeManager = nodeManager;
|
||||
myContextSet = contextSet;
|
||||
}
|
||||
|
||||
private static JavaValue create(JavaValue parent, @NotNull ValueDescriptorImpl valueDescriptor, EvaluationContextImpl evaluationContext, NodeManagerImpl nodeManager, boolean init) {
|
||||
static JavaValue create(JavaValue parent,
|
||||
@NotNull ValueDescriptorImpl valueDescriptor,
|
||||
EvaluationContextImpl evaluationContext,
|
||||
NodeManagerImpl nodeManager,
|
||||
boolean contextSet) {
|
||||
DebuggerManagerThreadImpl.assertIsManagerThread();
|
||||
return new JavaValue(parent, valueDescriptor, evaluationContext, nodeManager);
|
||||
return new JavaValue(parent, valueDescriptor, evaluationContext, nodeManager, contextSet);
|
||||
}
|
||||
|
||||
static JavaValue create(@NotNull ValueDescriptorImpl valueDescriptor,
|
||||
EvaluationContextImpl evaluationContext,
|
||||
NodeManagerImpl nodeManager) {
|
||||
return create(null, valueDescriptor, evaluationContext, nodeManager, true);
|
||||
return create(null, valueDescriptor, evaluationContext, nodeManager, false);
|
||||
}
|
||||
|
||||
public JavaValue getParent() {
|
||||
@@ -113,7 +120,9 @@ public class JavaValue extends XNamedValue implements NodeDescriptorProvider, XV
|
||||
|
||||
@Override
|
||||
public void threadAction() {
|
||||
myValueDescriptor.setContext(myEvaluationContext);
|
||||
if (!myContextSet) {
|
||||
myValueDescriptor.setContext(myEvaluationContext);
|
||||
}
|
||||
myValueDescriptor.updateRepresentation(myEvaluationContext, new DescriptorLabelListener() {
|
||||
@Override
|
||||
public void labelChanged() {
|
||||
|
||||
@@ -203,6 +203,7 @@ public abstract class ValueDescriptorImpl extends NodeDescriptorImpl implements
|
||||
}
|
||||
catch (EvaluateException e) {
|
||||
myValueException = e;
|
||||
setFailed(e);
|
||||
myValue = getTargetExceptionWithStackTraceFilled(evaluationContext, e);
|
||||
myIsExpandable = false;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user