Skip to content

Comments

refactor(language_server): make tools inside WorkspaceWorker more generic#15505

Merged
graphite-app[bot] merged 1 commit intomainfrom
11-08-refactor_language_server_make_tools_more_generic
Nov 12, 2025
Merged

refactor(language_server): make tools inside WorkspaceWorker more generic#15505
graphite-app[bot] merged 1 commit intomainfrom
11-08-refactor_language_server_make_tools_more_generic

Conversation

@Sysix
Copy link
Member

@Sysix Sysix commented Nov 8, 2025

No description provided.

Copy link
Member Author

Sysix commented Nov 8, 2025


How to use the Graphite Merge Queue

Add either label to this PR to merge it via the merge queue:

  • 0-merge - adds this PR to the back of the merge queue
  • hotfix - for urgent hot fixes, skip the queue and merge this PR next

You must have a Graphite account in order to use the merge queue. Sign up using this link.

An organization admin has enabled the Graphite Merge Queue in this repository.

Please do not merge from GitHub as this will restart CI on PRs being processed by the merge queue.

This stack of pull requests is managed by Graphite. Learn more about stacking.

@Sysix Sysix force-pushed the 11-08-refactor_language_server_make_tools_more_generic branch from 5fc79d4 to c254688 Compare November 9, 2025 00:36
@Sysix Sysix force-pushed the 11-08-perf_language_server_execute_tools_in_parallel branch from c5c8a8d to 4abc114 Compare November 9, 2025 00:36
@graphite-app graphite-app bot changed the base branch from 11-08-perf_language_server_execute_tools_in_parallel to graphite-base/15505 November 9, 2025 00:42
@graphite-app graphite-app bot force-pushed the 11-08-refactor_language_server_make_tools_more_generic branch from c254688 to 99ca5f3 Compare November 9, 2025 00:47
@graphite-app graphite-app bot force-pushed the graphite-base/15505 branch from 4abc114 to 25d577e Compare November 9, 2025 00:47
@graphite-app graphite-app bot changed the base branch from graphite-base/15505 to main November 9, 2025 00:47
@graphite-app graphite-app bot force-pushed the 11-08-refactor_language_server_make_tools_more_generic branch from 99ca5f3 to 5af7f64 Compare November 9, 2025 00:48
@Sysix Sysix changed the base branch from main to graphite-base/15505 November 9, 2025 14:29
@Sysix Sysix force-pushed the 11-08-refactor_language_server_make_tools_more_generic branch from 5af7f64 to 0df28ca Compare November 9, 2025 14:29
@Sysix Sysix changed the base branch from graphite-base/15505 to 11-09-perf_language_server_avoid_mutex_in_serverlinter_ November 9, 2025 14:29
@Sysix Sysix force-pushed the 11-08-refactor_language_server_make_tools_more_generic branch 2 times, most recently from 4c97e71 to 2eed4b7 Compare November 9, 2025 15:15
@Sysix Sysix requested a review from Copilot November 9, 2025 15:28
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR refactors the language server to use a trait-based architecture, replacing individual server_linter and server_formatter fields with a unified Vec<Box<dyn Tool>> collection. This enables more flexible tool management and reduces code duplication.

Key changes:

  • Modified Tool trait to be object-safe with Send + Sync bounds and added a name() method
  • Changed ToolRestartChanges from a generic struct to use Box<dyn Tool> for dynamic dispatch
  • Refactored WorkspaceWorker to iterate over tools instead of handling each tool separately

Reviewed Changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated 9 comments.

Show a summary per file
File Description
crates/oxc_language_server/src/tool.rs Made Tool trait object-safe and changed ToolRestartChanges to use boxed trait objects
crates/oxc_language_server/src/worker.rs Replaced separate tool fields with unified vector, refactored all methods to iterate over tools
crates/oxc_language_server/src/linter/server_linter.rs Implemented name() method and updated return types to use boxed trait objects
crates/oxc_language_server/src/formatter/server_formatter.rs Implemented name() method and updated return types to use boxed trait objects
crates/oxc_language_server/src/formatter/mod.rs Removed ServerFormatter from public exports as it's no longer directly referenced

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@Sysix Sysix force-pushed the 11-08-refactor_language_server_make_tools_more_generic branch from 2eed4b7 to 33b342d Compare November 9, 2025 15:58
@Sysix Sysix changed the base branch from 11-09-perf_language_server_avoid_mutex_in_serverlinter_ to graphite-base/15505 November 10, 2025 17:06
@graphite-app graphite-app bot force-pushed the 11-08-refactor_language_server_make_tools_more_generic branch from 33b342d to 1b72aac Compare November 10, 2025 17:51
@graphite-app graphite-app bot force-pushed the graphite-base/15505 branch from 54ff8d1 to ccfd935 Compare November 10, 2025 17:51
@graphite-app graphite-app bot changed the base branch from graphite-base/15505 to main November 10, 2025 17:52
@graphite-app graphite-app bot force-pushed the 11-08-refactor_language_server_make_tools_more_generic branch from 1b72aac to 9797e29 Compare November 10, 2025 17:52
@Sysix Sysix marked this pull request as ready for review November 10, 2025 22:02
@Sysix Sysix requested a review from camc314 as a code owner November 10, 2025 22:02
@Sysix Sysix changed the title refactor(language_server): make tools inside WorkspaceWorker more generic refactor(language_server): make tools inside WorkspaceWorker more generic Nov 10, 2025
@Sysix Sysix force-pushed the 11-08-refactor_language_server_make_tools_more_generic branch from 70b6c56 to ad5dbc6 Compare November 11, 2025 17:27
@Sysix Sysix force-pushed the 11-10-perf_language_servr_pass_file_content_as_a_referenced_string_ branch from c486039 to de9fe05 Compare November 11, 2025 17:27
@Sysix Sysix requested a review from camc314 November 11, 2025 17:29
@camc314 camc314 added the 0-merge Merge with Graphite Merge Queue label Nov 12, 2025
Copy link
Contributor

camc314 commented Nov 12, 2025

Merge activity

@graphite-app graphite-app bot changed the base branch from 11-10-perf_language_servr_pass_file_content_as_a_referenced_string_ to graphite-base/15505 November 12, 2025 21:22
@graphite-app graphite-app bot force-pushed the 11-08-refactor_language_server_make_tools_more_generic branch from 1c2c060 to 8a7718e Compare November 12, 2025 21:28
@graphite-app graphite-app bot force-pushed the graphite-base/15505 branch from f0f0063 to 7528db4 Compare November 12, 2025 21:28
@graphite-app graphite-app bot changed the base branch from graphite-base/15505 to main November 12, 2025 21:28
@graphite-app graphite-app bot force-pushed the 11-08-refactor_language_server_make_tools_more_generic branch from 8a7718e to e1382c3 Compare November 12, 2025 21:29
@graphite-app graphite-app bot force-pushed the 11-08-refactor_language_server_make_tools_more_generic branch from e1382c3 to 4f89e1a Compare November 12, 2025 21:43
@graphite-app graphite-app bot merged commit 4f89e1a into main Nov 12, 2025
21 checks passed
@graphite-app graphite-app bot deleted the 11-08-refactor_language_server_make_tools_more_generic branch November 12, 2025 21:47
@graphite-app graphite-app bot removed the 0-merge Merge with Graphite Merge Queue label Nov 12, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-editor Area - Editor and Language Server C-cleanup Category - technical debt or refactoring. Solution not expected to change behavior

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants