summaryrefslogtreecommitdiff
path: root/python/pydevSrc/com/jetbrains/python/debugger/pydev/GetVariableCommand.java
diff options
context:
space:
mode:
Diffstat (limited to 'python/pydevSrc/com/jetbrains/python/debugger/pydev/GetVariableCommand.java')
-rw-r--r--python/pydevSrc/com/jetbrains/python/debugger/pydev/GetVariableCommand.java32
1 files changed, 25 insertions, 7 deletions
diff --git a/python/pydevSrc/com/jetbrains/python/debugger/pydev/GetVariableCommand.java b/python/pydevSrc/com/jetbrains/python/debugger/pydev/GetVariableCommand.java
index ef4bd12059d7..e5a218607ac8 100644
--- a/python/pydevSrc/com/jetbrains/python/debugger/pydev/GetVariableCommand.java
+++ b/python/pydevSrc/com/jetbrains/python/debugger/pydev/GetVariableCommand.java
@@ -5,6 +5,7 @@ import com.jetbrains.python.debugger.PyDebugValue;
public class GetVariableCommand extends GetFrameCommand {
+ public static final String BY_ID = "BY_ID";
private final String myVariableName;
private final PyDebugValue myParent;
@@ -15,23 +16,40 @@ public class GetVariableCommand extends GetFrameCommand {
}
public static String composeName(final PyDebugValue var) {
- final StringBuilder sb = new StringBuilder(var.getTempName());
+ final StringBuilder sb = new StringBuilder();
PyDebugValue p = var;
- while ((p = p.getParent()) != null) {
- sb.insert(0, '\t').insert(0, p.getTempName());
+ while (p != null) {
+ if (sb.length() > 0 ) {
+ sb.insert(0, '\t');
+ }
+ if (p.getId() != null) {
+ sb.insert(0, BY_ID).insert(0, '\t').insert(0, p.getId());
+ break;
+ } else {
+ sb.insert(0, p.getTempName());
+ }
+ p = p.getParent();
}
return sb.toString();
}
@Override
protected void buildPayload(Payload payload) {
- super.buildPayload(payload);
- payload.add(myVariableName);
+ if (myParent.getVariableLocator() != null) {
+ payload.add(myParent.getVariableLocator().getThreadId()).add(myParent.getVariableLocator().getPyDBLocation());
+ }
+ else if (myVariableName.contains(BY_ID)) {
+ payload.add(getThreadId()).add(myVariableName);
+ }
+ else {
+ super.buildPayload(payload);
+ payload.add(myVariableName);
+ }
}
@Override
protected PyDebugValue extend(final PyDebugValue value) {
- return new PyDebugValue(value.getName(), value.getType(), value.getValue(), value.isContainer(), value.isErrorOnEval(), myParent, myDebugProcess);
+ return new PyDebugValue(value.getName(), value.getType(), value.getValue(), value.isContainer(), value.isErrorOnEval(), myParent,
+ myDebugProcess);
}
-
}