From d256ca013c5dd04529ba736ac7ca5f4d1c6d4186 Mon Sep 17 00:00:00 2001 From: Sebastian Sebbie Silbermann Date: Wed, 20 Aug 2025 14:30:49 +0200 Subject: [PATCH] [DevTools] Fix display of stack frames with anonymous sources --- .../src/backend/utils/parseStackTrace.js | 5 +++-- .../views/Components/StackTraceView.js | 19 ++++++++++++------- .../Components/formatLocationForDisplay.js | 4 ++++ 3 files changed, 19 insertions(+), 9 deletions(-) diff --git a/packages/react-devtools-shared/src/backend/utils/parseStackTrace.js b/packages/react-devtools-shared/src/backend/utils/parseStackTrace.js index 335fe42709193..300bfbebcb369 100644 --- a/packages/react-devtools-shared/src/backend/utils/parseStackTrace.js +++ b/packages/react-devtools-shared/src/backend/utils/parseStackTrace.js @@ -52,8 +52,8 @@ function parseStackTraceFromChromeStack( if (filename === '') { filename = ''; } - const line = +(parsed[3] || parsed[6]); - const col = +(parsed[4] || parsed[7]); + const line = +(parsed[3] || parsed[6] || 0); + const col = +(parsed[4] || parsed[7] || 0); parsedFrames.push([name, filename, line, col, 0, 0, isAsync]); } return parsedFrames; @@ -235,6 +235,7 @@ function collectStackTrace( // at name (filename:0:0) // at filename:0:0 // at async filename:0:0 +// at Array.map () const chromeFrameRegExp = /^ *at (?:(.+) \((?:(.+):(\d+):(\d+)|\)\)|(?:async )?(.+):(\d+):(\d+)|\)$/; diff --git a/packages/react-devtools-shared/src/devtools/views/Components/StackTraceView.js b/packages/react-devtools-shared/src/devtools/views/Components/StackTraceView.js index fdbdba702dafb..35b2f30757eb0 100644 --- a/packages/react-devtools-shared/src/devtools/views/Components/StackTraceView.js +++ b/packages/react-devtools-shared/src/devtools/views/Components/StackTraceView.js @@ -63,13 +63,18 @@ export function CallSiteView({ return (
{functionName || virtualFunctionName} - {' @ '} - - {formatLocationForDisplay(url, line, column)} - + {url !== '' && ( + <> + {' @ '} + + {formatLocationForDisplay(url, line, column)} + + + )} +
); diff --git a/packages/react-devtools-shared/src/devtools/views/Components/formatLocationForDisplay.js b/packages/react-devtools-shared/src/devtools/views/Components/formatLocationForDisplay.js index 1c113e3883927..9bf693fe33d29 100644 --- a/packages/react-devtools-shared/src/devtools/views/Components/formatLocationForDisplay.js +++ b/packages/react-devtools-shared/src/devtools/views/Components/formatLocationForDisplay.js @@ -40,5 +40,9 @@ export default function formatLocationForDisplay( } } + if (line === 0) { + return nameOnly; + } + return `${nameOnly}:${line}`; }