This is an automated email from the ASF dual-hosted git repository.
entl pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/netbeans.git
The following commit(s) were added to refs/heads/master by this push:
new 55af0b6 Fix of tooltip and evaluations of Truffle languages through
LSP.
new 136adc0 Merge pull request #2675 from entlicher/LSPTruffleEval
55af0b6 is described below
commit 55af0b660b154a9a2c15a316c1fd41be75b42431
Author: Martin Entlicher <[email protected]>
AuthorDate: Wed Jan 13 14:07:44 2021 +0100
Fix of tooltip and evaluations of Truffle languages through LSP.
---
.../jpda/truffle/vars/impl/TruffleEvaluator.java | 6 ++--
.../modules/debugger/jpda/JPDADebuggerImpl.java | 37 ++++++++++++++--------
.../modules/debugger/jpda/JavaEvaluator.java | 2 +-
.../lsp/server/debugging/NbProtocolServer.java | 2 +-
4 files changed, 27 insertions(+), 20 deletions(-)
diff --git
a/java/debugger.jpda.truffle/src/org/netbeans/modules/debugger/jpda/truffle/vars/impl/TruffleEvaluator.java
b/java/debugger.jpda.truffle/src/org/netbeans/modules/debugger/jpda/truffle/vars/impl/TruffleEvaluator.java
index 0775584..de82b42 100644
---
a/java/debugger.jpda.truffle/src/org/netbeans/modules/debugger/jpda/truffle/vars/impl/TruffleEvaluator.java
+++
b/java/debugger.jpda.truffle/src/org/netbeans/modules/debugger/jpda/truffle/vars/impl/TruffleEvaluator.java
@@ -19,7 +19,6 @@
package org.netbeans.modules.debugger.jpda.truffle.vars.impl;
-import org.netbeans.api.debugger.jpda.CallStackFrame;
import org.netbeans.api.debugger.jpda.InvalidExpressionException;
import org.netbeans.api.debugger.jpda.JPDADebugger;
import org.netbeans.api.debugger.jpda.ObjectVariable;
@@ -53,12 +52,11 @@ public class TruffleEvaluator implements
Evaluator<TruffleExpression> {
expr = TruffleExpression.parse(expression.getExpression());
expression.setPreprocessedObject(expr);
}
- Variable ret = evaluateIn(expr, context.getCallStackFrame(),
contextVariable);
+ Variable ret = evaluateIn(expr);
return new Result(ret);
}
- private Variable evaluateIn(TruffleExpression expr, CallStackFrame
callStackFrame, ObjectVariable contextVar) throws InvalidExpressionException {
- //return DebuggerSupport.evaluate(debugger, callStackFrame,
expr.getExpression(), contextVar);
+ private Variable evaluateIn(TruffleExpression expr) throws
InvalidExpressionException {
return TruffleEval.evaluate(debugger, expr.getExpression());
}
diff --git
a/java/debugger.jpda/src/org/netbeans/modules/debugger/jpda/JPDADebuggerImpl.java
b/java/debugger.jpda/src/org/netbeans/modules/debugger/jpda/JPDADebuggerImpl.java
index 7dc72e9..c84c44d 100644
---
a/java/debugger.jpda/src/org/netbeans/modules/debugger/jpda/JPDADebuggerImpl.java
+++
b/java/debugger.jpda/src/org/netbeans/modules/debugger/jpda/JPDADebuggerImpl.java
@@ -884,12 +884,16 @@ public class JPDADebuggerImpl extends JPDADebugger {
}
}
}
- if (csf == null) {
+ JPDAThread frameThread;
+ if (csf != null) {
+ frameThread = csf.getThread();
+ } else {
+ frameThread = getCurrentThread();
+ }
+ if (frameThread == null) {
throw new InvalidExpressionException
- (NbBundle.getMessage(JPDADebuggerImpl.class,
"MSG_NoCurrentContextStackFrame"));
+ (NbBundle.getMessage(JPDADebuggerImpl.class,
"MSG_NoCurrentContext"));
}
-
- JPDAThread frameThread = csf.getThread();
JPDAThreadImpl frameThreadImpl = (JPDAThreadImpl) frameThread;
//Object pendingAction = frameThreadImpl.getPendingAction();
//if (pendingAction != null) { For the case that evaluation should be
blocked by pending action
@@ -918,8 +922,8 @@ public class JPDADebuggerImpl extends JPDADebugger {
Evaluator.Result result;
final JPDAThreadImpl[] resumedThread = new JPDAThreadImpl[] { null
};
try {
- StackFrame sf = csf.getStackFrame();
- int stackDepth = csf.getFrameDepth();
+ StackFrame sf = csf != null ? csf.getStackFrame() : null;
+ int stackDepth = csf != null ? csf.getFrameDepth() : -1;
final ThreadReference tr =
frameThreadImpl.getThreadReference();
Runnable methodToBeInvokedNotifier = new Runnable() {
@Override
@@ -940,16 +944,21 @@ public class JPDADebuggerImpl extends JPDADebugger {
}
}
};
- Lookup context;
+ List<Object> lookupVars = new ArrayList<>();
+ lookupVars.add(frameThread);
+ lookupVars.add(stackDepth);
+ if (csf != null) {
+ lookupVars.add(csf);
+ lookupVars.add(sf);
+ }
if (var != null) {
- if (v != null) {
- context = Lookups.fixed(csf, var, sf, stackDepth, v,
methodToBeInvokedNotifier);
- } else {
- context = Lookups.fixed(csf, var, sf, stackDepth,
methodToBeInvokedNotifier);
- }
- } else {
- context = Lookups.fixed(csf, sf, stackDepth,
methodToBeInvokedNotifier);
+ lookupVars.add(var);
+ }
+ if (v != null) {
+ lookupVars.add(v);
}
+ lookupVars.add(methodToBeInvokedNotifier);
+ Lookup context = Lookups.fixed(lookupVars.toArray());
result = expression.evaluate(e, new
Evaluator.Context(context));
} catch (InternalExceptionWrapper ex) {
return null;
diff --git
a/java/debugger.jpda/src/org/netbeans/modules/debugger/jpda/JavaEvaluator.java
b/java/debugger.jpda/src/org/netbeans/modules/debugger/jpda/JavaEvaluator.java
index fddaf22..1f0417e 100644
---
a/java/debugger.jpda/src/org/netbeans/modules/debugger/jpda/JavaEvaluator.java
+++
b/java/debugger.jpda/src/org/netbeans/modules/debugger/jpda/JavaEvaluator.java
@@ -118,7 +118,7 @@ public class JavaEvaluator implements
Evaluator<JavaExpression> {
// should be already synchronized on the frame's thread
if (csf == null)
throw new InvalidExpressionException
- (NbBundle.getMessage(JPDADebuggerImpl.class,
"MSG_NoCurrentContext"));
+ (NbBundle.getMessage(JPDADebuggerImpl.class,
"MSG_NoCurrentContextStackFrame"));
// TODO: get imports from the source file
CallStackFrameImpl csfi = (CallStackFrameImpl) csf;
diff --git
a/java/java.lsp.server/src/org/netbeans/modules/java/lsp/server/debugging/NbProtocolServer.java
b/java/java.lsp.server/src/org/netbeans/modules/java/lsp/server/debugging/NbProtocolServer.java
index 73d83fc..6b274d2 100644
---
a/java/java.lsp.server/src/org/netbeans/modules/java/lsp/server/debugging/NbProtocolServer.java
+++
b/java/java.lsp.server/src/org/netbeans/modules/java/lsp/server/debugging/NbProtocolServer.java
@@ -433,7 +433,7 @@ public final class NbProtocolServer implements
IDebugProtocolServer {
response.setResult(truffleVariable.getDisplayValue());
response.setVariablesReference(referenceId);
response.setType(truffleVariable.getType());
- response.setIndexedVariables(truffleVariable.isLeaf() ? 0 :
Integer.MAX_VALUE);
+ response.setIndexedVariables(truffleVariable.isLeaf() ? 0 :
truffleVariable.getChildren().length);
} else {
if (variable instanceof ObjectVariable) {
int referenceId =
context.getThreadsProvider().getThreadObjects().addObject(threadId, variable);
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists