From 804c93f3b277bdcb9c772bebde6919c91b991e44 Mon Sep 17 00:00:00 2001 From: Akos Kitta Date: Wed, 18 Jan 2023 12:34:18 +0100 Subject: [PATCH] fix: workaround for microsoft/vscode-mock-debug#85 Signed-off-by: Akos Kitta --- .../debug/src/browser/model/debug-stack-frame.tsx | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/packages/debug/src/browser/model/debug-stack-frame.tsx b/packages/debug/src/browser/model/debug-stack-frame.tsx index 9e70411c4337b..cca9de7940098 100644 --- a/packages/debug/src/browser/model/debug-stack-frame.tsx +++ b/packages/debug/src/browser/model/debug-stack-frame.tsx @@ -72,12 +72,12 @@ export class DebugStackFrame extends DebugStackFrameData implements TreeElement } const { line, column, endLine, endColumn } = this.raw; const selection: RecursivePartial = { - start: Position.create(line - 1, column - 1) + start: Position.create(this.coerceNonNegative(line - 1), this.coerceNonNegative(column - 1)) }; if (typeof endLine === 'number') { selection.end = { - line: endLine - 1, - character: typeof endColumn === 'number' ? endColumn - 1 : undefined + line: this.coerceNonNegative(endLine - 1), + character: typeof endColumn === 'number' ? this.coerceNonNegative(endColumn - 1) : undefined }; } this.source.open({ @@ -86,6 +86,15 @@ export class DebugStackFrame extends DebugStackFrameData implements TreeElement }); } + /** + * Debugger can send `column: 0` value despite of initializing the debug session with `columnsStartAt1: true`. + * This method can be used to ensure that neither `column` nor `column` are negative numbers. + * See https://github.com/microsoft/vscode-mock-debug/issues/85. + */ + protected coerceNonNegative(value: number): number { + return value < 0 ? 0 : value; + } + protected scopes: Promise | undefined; getScopes(): Promise { return this.scopes || (this.scopes = this.doGetScopes());