Skip to content

Conversation

estebank
Copy link
Contributor

@estebank estebank commented Aug 14, 2025

Remove "failed to resolve" from the main error message and use the same format we use in other resolution errors "cannot find name":

error[E0433]: cannot find `nonexistent` in `existent` --> $DIR/custom_attr_multisegment_error.rs:5:13 | LL | #[existent::nonexistent] | ^^^^^^^^^^^ could not find `nonexistent` in `existent` 

The intent behind this is to end up with all resolve errors eventually be on the form of

error[ECODE]: cannot find `{NAME}` in {SCOPE} --> $DIR/file.rs:5:13 | LL | #[existent::nonexistent] | ^^^^^^^^^^^ {SPECIFIC LABEL} 

A category of errors that is interest are those that involve keywords. For example:

error[E0433]: cannot find `Self` in this scope --> $DIR/issue-97194.rs:2:35 | LL | fn bget(&self, index: [usize; Self::DIM]) -> bool { | ^^^^ `Self` is only available in impls, traits, and type definitions 

and

error[E0433]: cannot find `super` in this scope --> $DIR/keyword-super.rs:2:9 | LL | let super: isize; | ^^^^^ there are too many leading `super` keywords 

For these the label provides the actual help, while the message is less informative beyond telling you "couldn't find name".

This is an off-shoot of #126810 and #128086, a subset of the intended changes there with review comments applied.

r? @petrochenkov

@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. T-rustdoc Relevant to the rustdoc team, which will review and decide on the PR/issue. labels Aug 14, 2025
@rustbot
Copy link
Collaborator

rustbot commented Aug 14, 2025

This PR modifies tests/ui/issues/. If this PR is adding new tests to tests/ui/issues/,
please refrain from doing so, and instead add it to more descriptive subdirectories.

@rust-log-analyzer

This comment has been minimized.

@estebank estebank force-pushed the resolve-error-wording-2 branch from fd49d2a to 298dec7 Compare August 14, 2025 16:32
error[E0433]: cannot find `bar` in `Foo`
--> $DIR/extern-macro.rs:5:13
|
LL | let _ = Foo::bar!();
Copy link
Contributor Author

Choose a reason for hiding this comment

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

This is a diagnostic that needs improvement regardless: we need to explain that Foo is a type and that macros can't be in them. It would be particularly bad if Foo had an associated item bar as well.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Changed the output to be

error[E0433]: cannot find macro `bar` in enum `Foo` --> $DIR/extern-macro.rs:5:13 | LL | let _ = Foo::bar!(); | ^^^^^^^^ a macro can't exist within an enum 

Not perfect, but I feel it's more informative than we used to be.

|

error[E0433]: failed to resolve: function `bar` is not a crate or module
error[E0433]: cannot find `bar` in this scope
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Ah, I found I'd opened a separate PR already with some of these changes, and you had a comment about this change in particular

#128086 (comment)

I agree that this isn't an improvement, but the primary label does still mention the intended issue. I'll see over the weekend what I can do about this.

@estebank estebank added the S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. label Aug 14, 2025
@rust-log-analyzer

This comment has been minimized.

@petrochenkov petrochenkov removed the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Aug 15, 2025
Remove "failed to resolve" and use the same format we use in other resolution errors "cannot find `name`". ``` error[E0433]: cannot find `nonexistent` in `existent` --> $DIR/custom_attr_multisegment_error.rs:5:13 | LL | #[existent::nonexistent] | ^^^^^^^^^^^ could not find `nonexistent` in `existent` ```
@estebank estebank force-pushed the resolve-error-wording-2 branch from 298dec7 to 0b0bd12 Compare August 15, 2025 19:20
@estebank estebank force-pushed the resolve-error-wording-2 branch from 0b0bd12 to f6ce33d Compare August 15, 2025 19:28
Comment on lines +1 to +5
error[E0433]: cannot find derive macro `Anything` in trait `Foo`
--> $DIR/issue-46101.rs:2:10
|
LL | #[derive(Foo::Anything)]
| ^^^^^^^^^^^^^ partially resolved path in a derive macro
| ^^^^^^^^^^^^^ a derive macro can't exist within a trait
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Let me know if there's a wording you'd prefer for the label. I want to communicate the impossibility of the macro being in ADTs and traits in the first place.

@rust-log-analyzer

This comment has been minimized.

@rust-log-analyzer
Copy link
Collaborator

The job x86_64-gnu-miri failed! Check out the build log: (web) (plain enhanced) (plain)

Click to see the possible cause of the failure (guessed by this bot)
tests/fail/tree_borrows/reserved/int-protected-write.rs ... ok tests/fail/weak_memory/weak_uninit.rs ... ok FAILED TEST: tests/fail/rustc-error2.rs command: MIRI_ENV_VAR_TEST="0" MIRI_TEMP="/tmp/miri-uitest-VoPGws" RUST_BACKTRACE="1" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/miri" "--error-format=json" "--sysroot=/checkout/obj/build/x86_64-unknown-linux-gnu/miri-sysroot" "-Dwarnings" "-Dunused" "-Ainternal_features" "-Zui-testing" "--out-dir" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-linux-gnu/tmp/miri_ui/0/tests/fail" "tests/fail/rustc-error2.rs" "--edition" "2021" error: actual output differed from expected Execute `./miri test --bless` to update `tests/fail/rustc-error2.stderr` to the actual output --- tests/fail/rustc-error2.stderr +++ <stderr output> --- Location: /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ui_test-0.30.2/src/lib.rs:365 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ BACKTRACE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1: <color_eyre[5a00b443e1703d9a]::config::EyreHook>::into_eyre_hook::{closure#0}<unknown> at <unknown source file>:<unknown line> 2: eyre[d9b0c1a323608d26]::private::format_err<unknown> at <unknown source file>:<unknown line> 3: ui_test[ff0811f2fc4ba226]::run_tests_generic::<ui_test[ff0811f2fc4ba226]::default_file_filter, ui[ec7046a92c176db1]::run_tests::{closure#1}, alloc[3d295bdc4298664f]::boxed::Box<dyn ui_test[ff0811f2fc4ba226]::status_emitter::StatusEmitter>><unknown> at <unknown source file>:<unknown line> 4: ui[ec7046a92c176db1]::ui<unknown> at <unknown source file>:<unknown line> 5: ui[ec7046a92c176db1]::main<unknown> at <unknown source file>:<unknown line> 6: std[b7b9f6e5c8de3bba]::sys::backtrace::__rust_begin_short_backtrace::<fn() -> core[69aab6a1f1fdf15a]::result::Result<(), eyre[d9b0c1a323608d26]::Report>, core[69aab6a1f1fdf15a]::result::Result<(), eyre[d9b0c1a323608d26]::Report>><unknown> at <unknown source file>:<unknown line> 7: std[b7b9f6e5c8de3bba]::rt::lang_start::<core[69aab6a1f1fdf15a]::result::Result<(), eyre[d9b0c1a323608d26]::Report>>::{closure#0}<unknown> at <unknown source file>:<unknown line> 8: std[b7b9f6e5c8de3bba]::rt::lang_start_internal<unknown> at <unknown source file>:<unknown line> 9: main<unknown> at <unknown source file>:<unknown line> 10: __libc_start_main<unknown> at <unknown source file>:<unknown line> 11: _start<unknown> at <unknown source file>:<unknown line> Run with COLORBT_SHOW_HIDDEN=1 environment variable to disable frame filtering. Run with RUST_BACKTRACE=full to include source snippets. error: test failed, to rerun pass `--test ui` Caused by: process didn't exit successfully: `/checkout/obj/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-linux-gnu/release/deps/ui-de637b1a885c82e4` (exit status: 1) Command `/checkout/obj/build/x86_64-unknown-linux-gnu/stage0/bin/cargo test --target x86_64-unknown-linux-gnu -Zbinary-dep-depinfo -j 4 -Zroot-dir=/checkout --locked --color always --release --manifest-path /checkout/src/tools/miri/Cargo.toml -- [workdir=/checkout]` failed with exit code 1 Created at: src/bootstrap/src/core/builder/cargo.rs:423:33 Executed at: src/bootstrap/src/core/build_steps/test.rs:644:19 Command has failed. Rerun with -v to see more details. Build completed unsuccessfully in 0:39:59 local time: Sat Aug 16 20:02:28 UTC 2025 network time: Sat, 16 Aug 2025 20:02:28 GMT ##[error]Process completed with exit code 1. Post job cleanup. 
@bors
Copy link
Collaborator

bors commented Sep 27, 2025

☔ The latest upstream changes (presumably #147074) made this pull request unmergeable. Please resolve the merge conflicts.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. T-rustdoc Relevant to the rustdoc team, which will review and decide on the PR/issue.

5 participants