提交 db40db0a 编写于 作者: I isidor

debug model: introduce OutputExpressionContainer

上级 0e17c435
...@@ -173,6 +173,12 @@ export abstract class ExpressionContainer implements debug.IExpressionContainer ...@@ -173,6 +173,12 @@ export abstract class ExpressionContainer implements debug.IExpressionContainer
} }
} }
export class OutputExpressionContainer extends ExpressionContainer {
constructor(public name: string, stackFrame: debug.IStackFrame, reference: number, public annotation: string) {
super(stackFrame, reference, generateUuid());
}
}
export class Expression extends ExpressionContainer implements debug.IExpression { export class Expression extends ExpressionContainer implements debug.IExpression {
static DEFAULT_VALUE = nls.localize('notAvailable', "not available"); static DEFAULT_VALUE = nls.localize('notAvailable', "not available");
...@@ -830,7 +836,7 @@ export class Model implements debug.IModel { ...@@ -830,7 +836,7 @@ export class Model implements debug.IModel {
} }
} else { } else {
// key-value output // key-value output
this.addReplElement(new KeyValueOutputElement((<any>value).prototype, value, nls.localize('snapshotObj', "Only primitive values are shown for this object."))); this.addReplElement(new NameValueOutputElement((<any>value).prototype, value, nls.localize('snapshotObj', "Only primitive values are shown for this object.")));
} }
this._onDidChangeREPLElements.fire(); this._onDidChangeREPLElements.fire();
......
...@@ -20,7 +20,7 @@ import { IActionProvider } from 'vs/base/parts/tree/browser/actionsRenderer'; ...@@ -20,7 +20,7 @@ import { IActionProvider } from 'vs/base/parts/tree/browser/actionsRenderer';
import { ICancelableEvent } from 'vs/base/parts/tree/browser/treeDefaults'; import { ICancelableEvent } from 'vs/base/parts/tree/browser/treeDefaults';
import { ICodeEditor } from 'vs/editor/browser/editorBrowser'; import { ICodeEditor } from 'vs/editor/browser/editorBrowser';
import { IExpressionContainer, IExpression, IDebugService } from 'vs/workbench/parts/debug/common/debug'; import { IExpressionContainer, IExpression, IDebugService } from 'vs/workbench/parts/debug/common/debug';
import { Model, NameValueOutputElement, Expression, ValueOutputElement, Variable } from 'vs/workbench/parts/debug/common/debugModel'; import { Model, NameValueOutputElement, Expression, ValueOutputElement, Variable, OutputExpressionContainer } from 'vs/workbench/parts/debug/common/debugModel';
import { renderVariable, renderExpressionValue, IVariableTemplateData, BaseDebugController } from 'vs/workbench/parts/debug/electron-browser/debugViewer'; import { renderVariable, renderExpressionValue, IVariableTemplateData, BaseDebugController } from 'vs/workbench/parts/debug/electron-browser/debugViewer';
import { AddToWatchExpressionsAction, ClearReplAction } from 'vs/workbench/parts/debug/browser/debugActions'; import { AddToWatchExpressionsAction, ClearReplAction } from 'vs/workbench/parts/debug/browser/debugActions';
import { CopyAction } from 'vs/workbench/parts/debug/electron-browser/electronDebugActions'; import { CopyAction } from 'vs/workbench/parts/debug/electron-browser/electronDebugActions';
...@@ -86,7 +86,7 @@ export class ReplExpressionsRenderer implements IRenderer { ...@@ -86,7 +86,7 @@ export class ReplExpressionsRenderer implements IRenderer {
private static VARIABLE_TEMPLATE_ID = 'variable'; private static VARIABLE_TEMPLATE_ID = 'variable';
private static EXPRESSION_TEMPLATE_ID = 'inputOutputPair'; private static EXPRESSION_TEMPLATE_ID = 'inputOutputPair';
private static VALUE_OUTPUT_TEMPLATE_ID = 'outputValue'; private static VALUE_OUTPUT_TEMPLATE_ID = 'outputValue';
private static NAME_VALUE_OUTPUT_TEMPLATE_ID = 'outputKeyValue'; private static NAME_VALUE_OUTPUT_TEMPLATE_ID = 'outputNameValue';
private static FILE_LOCATION_PATTERNS: RegExp[] = [ private static FILE_LOCATION_PATTERNS: RegExp[] = [
// group 0: the full thing :) // group 0: the full thing :)
...@@ -146,7 +146,7 @@ export class ReplExpressionsRenderer implements IRenderer { ...@@ -146,7 +146,7 @@ export class ReplExpressionsRenderer implements IRenderer {
if (element instanceof ValueOutputElement) { if (element instanceof ValueOutputElement) {
return ReplExpressionsRenderer.VALUE_OUTPUT_TEMPLATE_ID; return ReplExpressionsRenderer.VALUE_OUTPUT_TEMPLATE_ID;
} }
if (element instanceof NameValueOutputElement) { if (element instanceof NameValueOutputElement || element instanceof OutputExpressionContainer) {
return ReplExpressionsRenderer.NAME_VALUE_OUTPUT_TEMPLATE_ID; return ReplExpressionsRenderer.NAME_VALUE_OUTPUT_TEMPLATE_ID;
} }
...@@ -397,7 +397,7 @@ export class ReplExpressionsRenderer implements IRenderer { ...@@ -397,7 +397,7 @@ export class ReplExpressionsRenderer implements IRenderer {
}, event.ctrlKey || event.metaKey).done(null, errors.onUnexpectedError); }, event.ctrlKey || event.metaKey).done(null, errors.onUnexpectedError);
} }
private renderOutputNameValue(tree: ITree, output: NameValueOutputElement, templateData: IKeyValueOutputTemplateData): void { private renderOutputNameValue(tree: ITree, output: NameValueOutputElement | OutputExpressionContainer, templateData: IKeyValueOutputTemplateData): void {
// key // key
if (output.name) { if (output.name) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册