From c2a85cbcc081e9cfeaa158bffe7d8b4e87247a46 Mon Sep 17 00:00:00 2001 From: Jordan Pittman Date: Mon, 29 May 2023 17:34:14 -0400 Subject: [PATCH] =?UTF-8?q?Don=E2=80=99t=20re-wrap=20`prepareStackTrace`?= =?UTF-8?q?=20when=20assigned=20to=20itself?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/vs/workbench/api/common/extensionHostMain.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/vs/workbench/api/common/extensionHostMain.ts b/src/vs/workbench/api/common/extensionHostMain.ts index e07d63c5c7c..f99e28f37ed 100644 --- a/src/vs/workbench/api/common/extensionHostMain.ts +++ b/src/vs/workbench/api/common/extensionHostMain.ts @@ -85,17 +85,26 @@ abstract class ErrorHandler { return `${error.name || 'Error'}: ${error.message || ''}${stackTraceMessage}`; } + let _wasWrapped = Symbol('prepareStackTrace wrapped'); let _prepareStackTrace = prepareStackTraceAndFindExtension; + Object.assign(_prepareStackTrace, { [_wasWrapped]: true }); Object.defineProperty(Error, 'prepareStackTrace', { configurable: false, get() { return _prepareStackTrace; }, set(v) { + if (v && (v as any)[_wasWrapped]) { + _prepareStackTrace = v; + return + } + _prepareStackTrace = function (error, stackTrace) { prepareStackTraceAndFindExtension(error, stackTrace); return v.call(Error, error, stackTrace); }; + + Object.assign(_prepareStackTrace, { [_wasWrapped]: true }); }, });