From bb34bce4208c8a7b1e875a27b07e67dea0e7fe7a Mon Sep 17 00:00:00 2001 From: Andy Date: Wed, 2 Aug 2017 12:40:39 -0700 Subject: [PATCH] Set a high stack trace limit in command-line and server scenarios (#17464) --- src/compiler/sys.ts | 12 ++++++++++++ src/compiler/tsc.ts | 2 ++ src/server/server.ts | 2 ++ 3 files changed, 16 insertions(+) diff --git a/src/compiler/sys.ts b/src/compiler/sys.ts index 9c6d4bb795d..89cfb074bff 100644 --- a/src/compiler/sys.ts +++ b/src/compiler/sys.ts @@ -4,6 +4,18 @@ declare function setTimeout(handler: (...args: any[]) => void, timeout: number): declare function clearTimeout(handle: any): void; namespace ts { + /** + * Set a high stack trace limit to provide more information in case of an error. + * Called for command-line and server use cases. + * Not called if TypeScript is used as a library. + */ + /* @internal */ + export function setStackTraceLimit() { + if ((Error as any).stackTraceLimit < 100) { // Also tests that we won't set the property if it doesn't exist. + (Error as any).stackTraceLimit = 100; + } + } + export enum FileWatcherEventKind { Created, Changed, diff --git a/src/compiler/tsc.ts b/src/compiler/tsc.ts index 8cc2e5c5ef6..db25afe45b6 100644 --- a/src/compiler/tsc.ts +++ b/src/compiler/tsc.ts @@ -665,6 +665,8 @@ namespace ts { } } +ts.setStackTraceLimit(); + if (ts.Debug.isDebugging) { ts.Debug.enableDebugInfo(); } diff --git a/src/server/server.ts b/src/server/server.ts index 6600b63dcb1..b72cc2f5a81 100644 --- a/src/server/server.ts +++ b/src/server/server.ts @@ -757,6 +757,8 @@ namespace ts.server { validateLocaleAndSetLanguage(localeStr, sys); } + setStackTraceLimit(); + const typingSafeListLocation = findArgument(Arguments.TypingSafeListLocation); const npmLocation = findArgument(Arguments.NpmLocation);