DevTools named hook parsing logic currently matches AST nodes using the original line number:
https://github.com/facebook/react/blob/ed6c091fe961a3b95e956ebcefe8f152177b1fb7/packages/react-devtools-extensions/src/parseHookNames.js#L341-L346

But this may not be sufficient, as mentioned in comment https://github.com/facebook/react/pull/21641#discussion_r662951987:
> Are we assuming that a line number is sufficient to identify a hook call? Seems like that assumption breaks down in edge cases:
>
> 1. Minified code (either without a source map, or a bundle *built* from pre-minified inputs) can have multiple hooks on one line.
> 2. Some code might be authored with quirky formatting, i.e. not with a typical Prettier / ESLint setup.
hookSourceData.originalSourceAST,
      ((hookSourceData.originalSourceCode: any): string),
      ((originalSourceLineNumber: any): number),
      originalSourceColumnNumber,
    );
    if (__DEBUG__) {
      console.log(`findHookNames() Found name "${name || '-'}"`);
    }
    const key = getHookSourceLocationKey(hookSource);
    map.set(key, name);
  });
  return map;
}
function loadSourceFiles(
  locationKeyToHookSourceData: Map<string, HookSourceData>,
): Promise<*> {
  
  const fetchPromises = new Map();
  const setPromises = [];
  locationKeyToHookSourceData.forEach(hookSourceData => {
    const {runtimeSourceURL} = hookSourceData;
    const fetchPromise =
      fetchPromises.get(runtimeSourceURL) ||
      fetchFile(runtimeSourceURL).then(runtimeSourceCode => {
        if (runtimeSourceCode.length > MAX_SOURCE_LENGTH) {
          throw Error('Source code too large to parse');
        }
        if (__DEBUG__) {
          console.groupCollapsed(
            `loadSourceFiles() runtimeSourceURL "${runtimeSourceURL}"`,