-
-
Notifications
You must be signed in to change notification settings - Fork 346
Support parsing super let syntax
#1947
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Closed
Closed
+47
−6
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
dtolnay
reviewed
Nov 24, 2025
Owner
dtolnay
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you, but this would need to be closer to stabilization as a language feature before I would consider building it into the syntax tree.
Boshen
pushed a commit
to Boshen/cargo-shear
that referenced
this pull request
Nov 26, 2025
Trying to run `cargo shear --expand` on the majority of Rust 1.88+ projects will fail due to the use of `super let` by the `pin!` macro on nightly, which `syn` can't parse: rust-lang/rust#139114 `syn` won't add support for parsing `super let` until it's closer to stabilization: dtolnay/syn#1947 So I opted to switch to rust-analyzer's syntax parser instead. The API is pretty similar overall. Main benefit is it supports more experimental syntax. Though I'm not sure how stable it is, which might be a concern. It's a more resilient parser, so it handles syntax errors gracefully. That might backfire in certain scenarios. With these changes, I was able to run `--expand` against the Zed monorepo, which found 100+ issues. <details> ```bash Analyzing /home/cmullan/workspace/zed acp_thread -- crates/acp_thread/Cargo.toml: unused dependencies: zlog tempfile acp_tools -- crates/acp_tools/Cargo.toml: unused dependencies: serde action_log -- crates/action_log/Cargo.toml: unused dependencies: indoc agent -- crates/agent/Cargo.toml: unused dependencies: editor terminal worktree agent_servers -- crates/agent_servers/Cargo.toml: unused dependencies: nix libc language agent_settings -- crates/agent_settings/Cargo.toml: unused dependencies: serde_json_lenient serde_json paths ai_onboarding -- crates/ai_onboarding/Cargo.toml: unused dependencies: serde assistant_text_thread -- crates/assistant_text_thread/Cargo.toml: unused dependencies: indoc audio -- crates/audio/Cargo.toml: unused dependencies: serde buffer_diff -- crates/buffer_diff/Cargo.toml: unused dependencies: serde_json call -- crates/call/Cargo.toml: unused dependencies: http_client serde client -- crates/client/Cargo.toml: unused dependencies: fs collab -- crates/collab/Cargo.toml: unused dependencies: context_server dap-types sea-orm-macros agent_settings hyper audio multi_buffer collab_ui -- crates/collab_ui/Cargo.toml: unused dependencies: pretty_assertions tree-sitter-md command_palette -- crates/command_palette/Cargo.toml: unused dependencies: env_logger serde_json ctor copilot -- crates/copilot/Cargo.toml: unused dependencies: async-std clock client task credentials_provider -- crates/credentials_provider/Cargo.toml: unused dependencies: serde dap -- crates/dap/Cargo.toml: unused dependencies: tree-sitter tree-sitter-go dap_adapters -- crates/dap_adapters/Cargo.toml: unused dependencies: serde diagnostics -- crates/diagnostics/Cargo.toml: unused dependencies: serde client component edit_prediction_button -- crates/edit_prediction_button/Cargo.toml: unused dependencies: theme lsp serde_json futures edit_prediction_context -- crates/edit_prediction_context/Cargo.toml: unused dependencies: clap editor -- crates/editor/Cargo.toml: unused dependencies: http_client tempfile extension_cli -- crates/extension_cli/Cargo.toml: unused dependencies: serde extensions_ui -- crates/extensions_ui/Cargo.toml: unused dependencies: serde feedback -- crates/feedback/Cargo.toml: unused dependencies: editor file_finder -- crates/file_finder/Cargo.toml: unused dependencies: language file_icons -- crates/file_icons/Cargo.toml: unused dependencies: serde git -- crates/git/Cargo.toml: unused dependencies: unindent git_ui -- crates/git_ui/Cargo.toml: unused dependencies: windows go_to_line -- crates/go_to_line/Cargo.toml: unused dependencies: tree-sitter-typescript serde tree-sitter-rust gpui -- crates/gpui/Cargo.toml: unused dependencies: cocoa-foundation x11-clipboard pretty_assertions image_viewer -- crates/image_viewer/Cargo.toml: unused dependencies: serde journal -- crates/journal/Cargo.toml: unused dependencies: serde json_schema_store -- crates/json_schema_store/Cargo.toml: unused dependencies: serde keymap_editor -- crates/keymap_editor/Cargo.toml: unused dependencies: serde component language_models -- crates/language_models/Cargo.toml: unused dependencies: project editor languages -- crates/languages/Cargo.toml: unused dependencies: text rope workspace livekit_client -- crates/livekit_client/Cargo.toml: unused dependencies: sha2 serde_json objc media -- crates/media/Cargo.toml: unused dependencies: ctor multi_buffer -- crates/multi_buffer/Cargo.toml: unused dependencies: project net -- crates/net/Cargo.toml: unused dependencies: anyhow node_runtime -- crates/node_runtime/Cargo.toml: unused dependencies: async-std notifications -- crates/notifications/Cargo.toml: unused dependencies: settings outline -- crates/outline/Cargo.toml: unused dependencies: tree-sitter-typescript picker -- crates/picker/Cargo.toml: unused dependencies: env_logger ctor proto -- crates/proto/Cargo.toml: unused dependencies: typed-path recent_projects -- crates/recent_projects/Cargo.toml: unused dependencies: serde dap task remote_server -- crates/remote_server/Cargo.toml: unused dependencies: crash-handler git2 minidumper serde dap workspace repl -- crates/repl/Cargo.toml: unused dependencies: env_logger serde reqwest_client -- crates/reqwest_client/Cargo.toml: unused dependencies: serde gpui rules_library -- crates/rules_library/Cargo.toml: unused dependencies: serde schema_generator -- crates/schema_generator/Cargo.toml: unused dependencies: serde settings_profile_selector -- crates/settings_profile_selector/Cargo.toml: unused dependencies: client language settings_ui -- crates/settings_ui/Cargo.toml: unused dependencies: futures zlog session node_runtime client assets language supermaven -- crates/supermaven/Cargo.toml: unused dependencies: project theme http_client env_logger editor tab_switcher -- crates/tab_switcher/Cargo.toml: unused dependencies: language anyhow tasks_ui -- crates/tasks_ui/Cargo.toml: unused dependencies: serde telemetry -- crates/telemetry/Cargo.toml: unused dependencies: serde terminal_view -- crates/terminal_view/Cargo.toml: unused dependencies: rand client text -- crates/text/Cargo.toml: unused dependencies: http_client theme_selector -- crates/theme_selector/Cargo.toml: unused dependencies: serde title_bar -- crates/title_bar/Cargo.toml: unused dependencies: pretty_assertions tree-sitter-md ui -- crates/ui/Cargo.toml: unused dependencies: windows util -- crates/util/Cargo.toml: unused dependencies: indoc vim -- crates/vim/Cargo.toml: unused dependencies: assets watch -- crates/watch/Cargo.toml: unused dependencies: rand web_search -- crates/web_search/Cargo.toml: unused dependencies: serde web_search_providers -- crates/web_search_providers/Cargo.toml: unused dependencies: serde workspace -- crates/workspace/Cargo.toml: unused dependencies: windows dap worktree -- crates/worktree/Cargo.toml: unused dependencies: serde git2 zed -- crates/zed/Cargo.toml: unused dependencies: profiling dap task zeta -- crates/zeta/Cargo.toml: unused dependencies: reqwest_client call rpc serde tree-sitter-go zeta2 -- crates/zeta2/Cargo.toml: unused dependencies: lsp zeta2_tools -- crates/zeta2_tools/Cargo.toml: unused dependencies: zlog indoc clap serde settings pretty_assertions root -- Cargo.toml: unused dependencies: pet-pixi collab wit-component num-traits storybook futures-batch plugin_macros cocoa-foundation ai hyper scheduler auto_update_helper plugin theme_importer rich_text cargo-shear may have detected unused dependencies incorrectly due to its limitations. They can be ignored by adding the crate name to the package's Cargo.toml: [package.metadata.cargo-shear] ignored = ["crate-name"] or in the workspace Cargo.toml: [workspace.metadata.cargo-shear] ignored = ["crate-name"] To automatically fix issues, run with --fix ``` </details>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Resolves #1889