Made value arrays parsable by vscode
This commit is contained in:
parent
1b7dba5a50
commit
2cb16e2b9e
2 changed files with 62 additions and 28 deletions
|
|
@ -65,7 +65,7 @@ export function expandValue(variableCreate: Function, value: string): any {
|
|||
return str;
|
||||
};
|
||||
|
||||
let parseValue, parseCommaResult, parseCommaValue, parseResult;
|
||||
let parseValue, parseCommaResult, parseCommaValue, parseResult, createValue;
|
||||
|
||||
let parseTupleOrList = () => {
|
||||
value = value.trim();
|
||||
|
|
@ -84,10 +84,11 @@ export function expandValue(variableCreate: Function, value: string): any {
|
|||
if (newValPos != -1 && eqPos > newValPos || eqPos == -1) { // is value list
|
||||
let values = [];
|
||||
let val = parseValue();
|
||||
values.push(val);
|
||||
values.push(createValue("[0]", val));
|
||||
let remaining = value;
|
||||
let i = 0;
|
||||
while (val = parseCommaValue())
|
||||
values.push(val);
|
||||
values.push(createValue("[" + (++i) + "]", val));
|
||||
value = value.substr(1).trim(); // }
|
||||
return values;
|
||||
}
|
||||
|
|
@ -163,17 +164,21 @@ export function expandValue(variableCreate: Function, value: string): any {
|
|||
value = value.substr(variableMatch[0].length).trim();
|
||||
let variable = variableMatch[1];
|
||||
let val = parseValue();
|
||||
return createValue(variable, val);
|
||||
};
|
||||
|
||||
createValue = (name, val) => {
|
||||
let ref = 0;
|
||||
if (typeof val == "object") {
|
||||
ref = variableCreate(val);
|
||||
val = "Object";
|
||||
}
|
||||
if (typeof val == "string" && val.startsWith("*0x")) {
|
||||
ref = variableCreate("*" + variable);
|
||||
ref = variableCreate("*" + name);
|
||||
val = "Object@" + val;
|
||||
}
|
||||
return {
|
||||
name: variable,
|
||||
name: name,
|
||||
value: val,
|
||||
variablesReference: ref
|
||||
};
|
||||
|
|
|
|||
|
|
@ -27,15 +27,38 @@ suite("GDB Value Expansion", () => {
|
|||
}]);
|
||||
assert.strictEqual(isExpandable(`{{a = b}}`), 1);
|
||||
assert.deepEqual(expandValue(variableCreate, `{{a = b}}`), [
|
||||
[
|
||||
{
|
||||
name: "a",
|
||||
value: "b",
|
||||
variablesReference: 0
|
||||
{
|
||||
name: "[0]",
|
||||
value: "Object",
|
||||
variablesReference: {
|
||||
expanded: [
|
||||
{
|
||||
name: "a",
|
||||
value: "b",
|
||||
variablesReference: 0
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]);
|
||||
assert.deepEqual(expandValue(variableCreate, `{1, 2, 3, 4}`), [1, 2, 3, 4]);
|
||||
assert.deepEqual(expandValue(variableCreate, `{1, 2, 3, 4}`), [
|
||||
{
|
||||
name: "[0]",
|
||||
value: "1",
|
||||
variablesReference: 0
|
||||
}, {
|
||||
name: "[1]",
|
||||
value: "2",
|
||||
variablesReference: 0
|
||||
}, {
|
||||
name: "[2]",
|
||||
value: "3",
|
||||
variablesReference: 0
|
||||
}, {
|
||||
name: "[3]",
|
||||
value: "4",
|
||||
variablesReference: 0
|
||||
}]);
|
||||
});
|
||||
test("Error values", () => {
|
||||
assert.strictEqual(isExpandable(`<No data fields>`), 0);
|
||||
|
|
@ -90,23 +113,29 @@ suite("GDB Value Expansion", () => {
|
|||
value: "Object",
|
||||
variablesReference: {
|
||||
expanded: [
|
||||
[
|
||||
{
|
||||
name: "view",
|
||||
value: "Object@*0x7ffff7ece1e8",
|
||||
variablesReference: { expanded: "*view" }
|
||||
},
|
||||
{
|
||||
name: "renderer",
|
||||
value: "Object@*0x7ffff7eccc50",
|
||||
variablesReference: { expanded: "*renderer" }
|
||||
},
|
||||
{
|
||||
name: "world",
|
||||
value: "Object@*0x7ffff7ece480",
|
||||
variablesReference: { expanded: "*world" }
|
||||
{
|
||||
name: "[0]",
|
||||
value: "Object",
|
||||
variablesReference: {
|
||||
expanded: [
|
||||
{
|
||||
name: "view",
|
||||
value: "Object@*0x7ffff7ece1e8",
|
||||
variablesReference: { expanded: "*view" }
|
||||
},
|
||||
{
|
||||
name: "renderer",
|
||||
value: "Object@*0x7ffff7eccc50",
|
||||
variablesReference: { expanded: "*renderer" }
|
||||
},
|
||||
{
|
||||
name: "world",
|
||||
value: "Object@*0x7ffff7ece480",
|
||||
variablesReference: { expanded: "*world" }
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue