microsoft / microsoft/TypeScript

On TypeScript 7, Call hierarchy shows a full absolute path instead of file name + relative path

Abierto
#64,097 1 comentario 10 reacciones 2 asignados Reclamado por @RyanCavanaugh Ver en GitHub
Bug
Lenguaje dominante
Go
Estrellas
111k
Forks
14.3k
Merge medio
2 d 4 h
PR fusionados (30 d)
132

Descripción

### 🔎 Search Terms

"call hierarchy"
"function call hierarchy files"
"call hierarchy file path"
"absolute path"
"full file path"

Found: Possibly related [#36511](https://github.com/microsoft/TypeScript/issues/36511) — same symptom, reported in 2020 and closed as fixed.

### 🕗 Version & Regression Information

- Work as expected on `6.0.3`: TypeScript and JavaScript Language Features (built-in)
- Bug on `TypeScriptTeam.native-preview` `0.20260226.1` (first version with Call Hierarchy support)
- Bug on `TypeScriptTeam.native-preview` `0.20260708.2` (latest)

### ⏯ Playground Link

https://github.com/brian-xu-vlt/typescript-hierarchy-repro

### 💻 Code

> [!IMPORTANT]
> I provided a repository above because the playground does not seem to support `show call hierarchy` on a symbol in order to reproduce the bug, but below is [the playground code](https://www.typescriptlang.org/play/?ts=6.0.0-dev.20260416#code/FAUwHgDg9gTgLgAgMZQHYGdEBsQDcRYDyqICAvAgBS4CGWAriAFwKr0C2ARiDAJQtsuPcgD4EAb2AIEMEHHoxUCODRgBzOQDF6qJHACWaanUa8A3MAC+F4ADMdew0pz4sAFQDuUYw2asO3HwCAcKS0rLyigguBMQgPqYWlsDAKBiI4tF4BG4AFrKkluQSUlmueQUsCX6Cgfz+QjCiJdLhcgrO2e5e1eallgA0VjZpmGUEmlAKxdXBjfW4UPoAJs1hyGjoUDgAdFhQapQx7vkg8QAsAEy8fdYp4NDwCPa6BmjKqhpw2q9Osw11OaBFoydpRWi+BAAKgQlySwCAA) form the provided repository in case it helps

`callers.ts`
```ts
import { targetFunction } from "./target.js";

export const levelOne = (value: number): number => {
return targetFunction(value);
};

function levelTwo(value: number): number {
return levelOne(value);
}

const { levelThree } = {
levelThree: (value: number): number => {
return levelTwo(value);
},
};

const levelFour = (value: number): void => {
console.log(levelThree(42));
};
```

`target.ts`
```ts
export function targetFunction(value: number): number {
return value * 2;
}
```

### 🙁 Actual behavior

## Steps to reproduce

1. Clone this repo (https://github.com/brian-xu-vlt/typescript-hierarchy-repro) and run `pnpm install`.
2. Open `src/target.ts`.
3. On `targetFunction` (line 1) Run **Show Call Hierarchy** (`Shift+Alt+H`) and expand the incoming calls
down to the last level.
**🚨 → See the issue: The hierarchy is `targetFunction` → `levelOne` → `levelTwo`, then a node for the
containing file with a full path. That last node is where the two TS versions differ.**

Image

### 🙂 Expected behavior

The file node is labelled the way TypeScript 6 labels it: the `file name`, with
the path relative to the workspace shown as the secondary detail.

Image

### Additional information about the issue

## Real life issue
For a simple call the issue is benign, but in real monorepos, a list of many absolute paths make it very hard to navigate the call hierarchy.

Image

## Language server likely not the root cause

The reproduction repository contains a simple script to show `tsserver` and TypeScript 7 LSP server produce the same value, meaning the issue is quite likely to come from `TypeScriptTeam.native-preview`

## Show to run

```sh
# with typescript 6.0.3 installed, over the tsserver JSON protocol
node tools/callhierarchy.mjs ./src/target.ts targetFunction --depth 10 --engine tsserver

# with typescript 7.0.2 installed, over LSP
node tools/callhierarchy.mjs ./src/target.ts targetFunction --depth 10 --engine lsp
```

## Result for TS6 and TS7
Image

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.