microsoft / microsoft/TypeScript

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

オープン
#64,097 コメント 1 件 リアクション 10 件 担当者 2 名 GitHub で見る

@RyanCavanaugh がすでに取り組んでいます。

2026年8月31日 から。

  • #64108 @copilot-swe-agent による — オープン
Bug
主要言語
Go
スター
111k
フォーク
14.3k
平均マージ
2日 4時間
マージ済み PR(30日)
132

説明

### 🔎 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

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

評価

この issue はまだ評価されていません。

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。