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

Đang mở
#64,097 1 bình luận 10 reaction 2 người được giao Xem trên GitHub

@RyanCavanaugh đang làm issue này rồi.

Từ ngày 31/8/2026.

  • #64108 của @copilot-swe-agent — đang mở

Đánh giá

Issue này chưa được đánh giá.

Mô tả

Bug
🔎 Search Terms

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

Found: Possibly related #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 form the provided repository in case it helps

callers.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

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 targetFunctionlevelOnelevelTwo, 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

# 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
Ngôn ngữ chính
Go
Star
111k
Fork
14.4k
Merge trung bình
1 ngày 15 giờ
Pull request đã merge (30 ngày)
106

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của microsoft/TypeScript

Tất cả issue của microsoft/TypeScript

Issue tương tự

Thêm issue về Go

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.