Skip to content

Improve diagnostic for too many super keywords#158585

Open
andrewkernel wants to merge 1 commit into
rust-lang:mainfrom
andrewkernel:improve-too-many-super-diagnostic
Open

Improve diagnostic for too many super keywords#158585
andrewkernel wants to merge 1 commit into
rust-lang:mainfrom
andrewkernel:improve-too-many-super-diagnostic

Conversation

@andrewkernel

@andrewkernel andrewkernel commented Jun 29, 2026

Copy link
Copy Markdown

Fixes #158275

When resolving a path with too many leading super segments inside a nested module,
include the current module path in the diagnostic. This makes it easier to see where
the super chain started, especially for generated code or code included from
another location.

The overflowing super label now also explains that it would go above the crate root.

Example:

error[E0433]: too many leading `super` keywords within `crate::outer::inner`
  --> tests/ui/resolve/too-many-super-issue-158275.rs:5:38
   |
LL |         struct Example(super::super::super::Impl);
   |                                      ^^^^^ this `super` would go above the crate root

Tests:

x.py --build x86_64-pc-windows-gnu --host x86_64-pc-windows-gnu check compiler/rustc_resolve --stage 1
x.py --build x86_64-pc-windows-gnu --host x86_64-pc-windows-gnu test tidy

@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. labels Jun 29, 2026
@rustbot

rustbot commented Jun 29, 2026

Copy link
Copy Markdown
Collaborator

Thanks for the pull request, and welcome! The Rust Project is excited to review your changes, and you should hear from @davidtwco (or someone else) some time within the next two weeks.

Please see the contribution instructions for more information. Namely, in order to ensure the minimum review times lag, PR authors and assigned reviewers should ensure that the review label (S-waiting-on-review and S-waiting-on-author) stays updated, invoking these commands when appropriate:

  • @rustbot author: the review is finished, PR author should check the comments and take action accordingly
  • @rustbot review: the author is ready for a review, this PR will be queued again in the reviewer's queue
Why was this reviewer chosen?

The reviewer was selected based on:

  • Owners of files modified in this PR: compiler
  • compiler expanded to 73 candidates
  • Random selection from 17 candidates

@rust-log-analyzer

This comment has been minimized.

Comment thread compiler/rustc_resolve/src/ident.rs Outdated
@andrewkernel andrewkernel force-pushed the improve-too-many-super-diagnostic branch 2 times, most recently from 830e827 to 295ddb8 Compare June 29, 2026 22:34
@davidtwco

Copy link
Copy Markdown
Member

@bors r+ rollup

@rust-bors

rust-bors Bot commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

📌 Commit 295ddb8 has been approved by davidtwco

It is now in the queue for this repository.

🌲 The tree is currently closed for pull requests below priority 1000. This pull request will be tested once the tree is reopened.

@rust-bors rust-bors Bot added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Jul 2, 2026
JonathanBrouwer added a commit to JonathanBrouwer/rust that referenced this pull request Jul 2, 2026
…r-diagnostic, r=davidtwco

Improve diagnostic for too many super keywords

Fixes rust-lang#158275

When resolving a path with too many leading `super` segments inside a nested module,
include the current module path in the diagnostic. This makes it easier to see where
the `super` chain started, especially for generated code or code included from
another location.

The overflowing `super` label now also explains that it would go above the crate root.

Example:

```text
error[E0433]: too many leading `super` keywords within `crate::outer::inner`
  --> tests/ui/resolve/too-many-super-issue-158275.rs:5:38
   |
LL |         struct Example(super::super::super::Impl);
   |                                      ^^^^^ this `super` would go above the crate root
```

Tests:

```text
x.py --build x86_64-pc-windows-gnu --host x86_64-pc-windows-gnu check compiler/rustc_resolve --stage 1
x.py --build x86_64-pc-windows-gnu --host x86_64-pc-windows-gnu test tidy
```
rust-bors Bot pushed a commit that referenced this pull request Jul 3, 2026
…uwer

Rollup of 22 pull requests

Successful merges:

 - #155429 (Support `u128`/`i128` c-variadic arguments)
 - #158100 (Emit retags in codegen to support BorrowSanitizer (part 4))
 - #158494 (Improve E0277 diagnostics for conditionally implemented traits)
 - #158606 (use ProjectionPredicate instead of AliasRelate)
 - #158627 (Simplify option-iterator flattening in the compiler)
 - #158658 (Update LLVM submodule)
 - #158665 (Revert "Remove redundant dyn-compatibility check.")
 - #158021 (Remove old MinGW workaround)
 - #158473 (Add `riscv32imfc-unknown-none-elf` bare-metal target)
 - #158549 (process::exec: using appropriate exit code on vxworks.)
 - #158585 (Improve diagnostic for too many super keywords)
 - #158637 (hir_ty_lowering: avoid self type lookup for inherent aliases)
 - #158651 (ptr doc: reduce use of unsafe block to where needed)
 - #158669 (Remove `src/tools/test-float-parse/Cargo.lock`)
 - #158674 (library: Polish transmute's `split_at_stdlib` example)
 - #158677 (Add extra splat tests)
 - #158680 (Avoid ICE for `NonZero<char>` in improper_ctypes)
 - #158681 (Remove unnecessary `Hash` derives from MIR types)
 - #158682 (Avoid delayed bug for disabled on_type_error arguments)
 - #158684 (Add missing generic test coverage for ```#[splat]```)
 - #158687 (Streamline `MacEager`)
 - #158688 (Cleanup attribute docs and add links to other mentioned attributes)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

"too many leading super keywords" should include current module name

5 participants