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}`; }